include "uw8.cwa" const SWEETY = PALETTE + 192 * 4; export fn upd() { let i: i32; loop colors { rect((i % 16 * 15) as f32, (i / 16 * 15) as f32, 15 as f32, 15 as f32, i); branch_if (i := i + 1) < 256: colors } } start fn gen_palette() { let i: i32 = 12*16*3-1; let avg: f32; loop gradients { let lazy scale = (i % 48) as f32 / 48 as f32; let inline angle = i as f32 * (3.1416 / 1.5 - 3.1416 / (11.0 * 16.0 * 1.5)); let lazy c = 0.4 - cos(angle); let inline ulimit = avg + 0.8; let inline llimit = avg - 0.8; let lazy a = max(llimit, min(ulimit, c)) * (scale + 0.05); let lazy b = scale * scale * 0.8; let inline v = (select(i < 11*16*3, max(0 as f32, min(a + b - a * b, 1 as f32)), scale) * 255 as f32) as i32; (i%3 + i/3*4)?(PALETTE) = v; avg = (avg + c) * 0.5; branch_if i := i - 1: gradients; } i = 255; loop expand_sweetie { let lazy channel = i & 3; let lazy index = i >> 2; let lazy first_step = index >= 32; let inline src1 = select(first_step, index % 32 / 2, index * 2); let inline src2 = select(first_step, (index + 1) % 32 / 2, index * 2 + 1); let inline c1 = (src1 * 4 + channel)?SWEETY; let inline c2 = (src2 * 4 + channel)?SWEETY; i?(SWEETY) = (c1 + c2) * (3 + first_step) / 8; branch_if (i := i - 1) >= 0: expand_sweetie; } } data SWEETY { i32( 0x2c1c1a, 0x5d275d, 0x533eb1, 0x577def, 0x75cdff, 0x70f0a7, 0x64b738, 0x797125, 0x6f3629, 0xc95d3b, 0xf6a641, 0xf7ef73, 0xf4f4f4, 0xc2b094, 0x866c56, 0x573c33 ) }