mirror of
https://github.com/exoticorn/curlywas.git
synced 2026-01-20 11:46:43 +01:00
84 lines
2.1 KiB
Plaintext
84 lines
2.1 KiB
Plaintext
import "env.memory" memory(4);
|
|
|
|
import "env.pow" fn pow(f32, f32) -> f32;
|
|
import "env.sin" fn sin(f32) -> f32;
|
|
import "env.cos" fn cos(f32) -> f32;
|
|
import "env.rectangle" fn rect(f32, f32, f32, f32, i32);
|
|
|
|
export fn tic(time: i32) {
|
|
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
|
|
}
|
|
}
|
|
|
|
fn fcol(v: f32) -> i32 {
|
|
let lazy vi = v as i32;
|
|
select(vi < 0, 0, select(vi > 255, 255, vi))
|
|
}
|
|
|
|
fn col(f: f32, c: f32) -> i32 {
|
|
let lazy a = f * (c * -0.8 + 0.6);
|
|
let lazy b = f * f * 0.7;
|
|
fcol((a + b - a * b) * 255 as f32)
|
|
}
|
|
|
|
fn make_gradient(r: f32, g: f32, b: f32, base: i32) -> i32 {
|
|
let i: i32;
|
|
loop colors {
|
|
let f = (i + 4) as f32 / 64 as f32;
|
|
(base + i)!(120+320*240) =
|
|
col(f, r) +
|
|
(col(f, g) << 8) +
|
|
(col(f, b) << 16);
|
|
|
|
branch_if (i := i + 4) < 64: colors;
|
|
}
|
|
base + 1
|
|
}
|
|
|
|
start fn gen_palette() {
|
|
let i: i32;
|
|
loop hsv {
|
|
let a = i as f32 * (3.141 / 6.0);
|
|
make_gradient(sin(a) * 0.707 - cos(a) * 0.804, cos(a) * 0.816, cos(a) * 0.804 + sin(a) * 0.707, i * 64);
|
|
branch_if (i := i + 1) < 11: hsv;
|
|
}
|
|
make_gradient(0 as f32, 0 as f32, 0 as f32, 11*16*4);
|
|
|
|
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)?(120+320*240+192*4);
|
|
let inline c2 = (src2 * 4 + channel)?(120+320*240+192*4);
|
|
i?(120+320*240+192*4) = (c1 + c2) * (3 + first_step) / 8;
|
|
|
|
branch_if (i := i - 1) >= 0: expand_sweetie;
|
|
}
|
|
}
|
|
|
|
data 120+320*240+192*4 {
|
|
i32(
|
|
0x2c1c1a,
|
|
0x5d275d,
|
|
0x533eb1,
|
|
0x577def,
|
|
0x75cdff,
|
|
0x70f0a7,
|
|
0x64b738,
|
|
0x797125,
|
|
0x6f3629,
|
|
0xc95d3b,
|
|
0xf6a641,
|
|
0xf7ef73,
|
|
0xf4f4f4,
|
|
0xc2b094,
|
|
0x866c56,
|
|
0x573c33
|
|
)
|
|
} |