Boring Friday night in? Looking for some hot, esoteric programming challenges? Give my "Low-Rez Shadertoy: The Game" a go!

Write shaders in some made up assembly language, match your target, win prizes*

This is an alpha version and I'm looking for feedback. Please boost/share, thanks!

http://lrst-alpha.s3-website.eu-north-1.amazonaws.com/

LRST

@evilpaul_atebit It'd be cool if it showed you which level you're on while you're in the level? Unless that is somewhere and I'm missing it.

I only did the first 8 levels but doing World 2 level 4 in three instructions was very satisfying.

@evilpaul_atebit This gives me 100% but is still showing a handful of red pixels...?

sub #31,r0,r0
sub.mi #-1,r0,r0
mulu r0,r0,r0
sub #31,r1,r1
sub.mi #-1,r1,r1
mulu r1,r1,r1
add r0,r1,r0
sub r0,#981,r0
mov.lt #6,r0
mov.ge #3,r0

@evilpaul_atebit Oh wait, I guess to get 100% you just have to get it to the point where the error rounds down to zero? 64 squared is 4096, half a percent is 20.48 pixels. And I got it down to 16. Ha, nice.
@evilpaul_atebit I have no idea how you're supposed to get the circles pixel-correct, but otherwise... fun.
@JoshGrams @evilpaul_atebit aha, pixel-perfect!
@jcreed @JoshGrams Interesting. Someone else had solved it also in 10 instructions, but differently. Oh.. and SIMD would shave more instructions here so I'm getting more and more keen to add that ;)

@evilpaul_atebit @JoshGrams haha me too...

it suddenly occurred to me that mixing "SIMD register specs" and ordinary registers could be confusing or erroneous.
mov rH, r0
add rH, #1, r0
seem of dubious meaning (unless the last is interpreted as r0 := r4+r5+r6+r7+#1?? 😨 )

not sure what to do about it. maybe just require that all registers have to be of the same type for an instruction? does that mean the concrete syntax for them should be different?? guess it's up to you to make these calls :)

@jcreed @JoshGrams I was thinking of just saying that all regs have to be of the same type. Feels a little awkward and unsatisfying..
@evilpaul_atebit @JoshGrams yeah, dunno. brainstorming some alternatives (for something that's meant to be equivalent to
mov r0, r4
mov r1, r5
mov r2, r6
mov r3, r7)
I can think of
mov.4 R0, R1 ; R0 = r0,r1,r2,r3, and R1 = r4,r5,r6,r7
mov.4 R0, R4 ; but maybe you'd have to forbid overlapping register groups?
mov r0:4 r1:4
mov r0-3, r4-7
mov r0123, r4567
@evilpaul_atebit @JoshGrams (& I want to triple down on the sentiment that --- it's your game, and please feel very free to ignore any of my suggestions, they're offered in the spirit of hoping they help but no big deal if not :)