mirror of
https://github.com/exoticorn/curlywas.git
synced 2026-01-20 11:46:43 +01:00
remove short memory op as it causes parsing ambiguities
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
import "env.memory" memory(2);
|
import "env.memory" memory(2);
|
||||||
|
|
||||||
|
import "env.fmod" fn fmod(f32, f32) -> f32;
|
||||||
|
|
||||||
export fn tic(time: i32) {
|
export fn tic(time: i32) {
|
||||||
let i: i32;
|
let i: i32;
|
||||||
let lazy t = time as f32 / 1000 as f32;
|
let lazy t = time as f32 / 1000 as f32;
|
||||||
@@ -7,17 +9,17 @@ export fn tic(time: i32) {
|
|||||||
let lazy x = (i % 320 - 160) as f32;
|
let lazy x = (i % 320 - 160) as f32;
|
||||||
let lazy y = (i / 320) as f32 - 120.5;
|
let lazy y = (i / 320) as f32 - 120.5;
|
||||||
let lazy z = t + 20 as f32 / sqrt(x*x + y*y);
|
let lazy z = t + 20 as f32 / sqrt(x*x + y*y);
|
||||||
let lazy z_int = z as i32;
|
let inline z_int = z as i32;
|
||||||
let lazy q = select(z_int % 9 >= 6, z, (z_int - z_int % 9 + 6) as f32);
|
let lazy q = select(z_int % 9 >= 6, z, (z_int - (z_int % 9 - 6)) as f32);
|
||||||
let lazy w = 9 as f32 / y + t;
|
let lazy w = 9 as f32 / y + t;
|
||||||
let lazy s = q - t;
|
let inline s = q - t;
|
||||||
let lazy m = x * s / 50 as f32;
|
let inline m = x * s / 50 as f32;
|
||||||
|
|
||||||
i?120 = select(y > 0 as f32 & w < q,
|
i?120 = select(y > 0 as f32 & w < q,
|
||||||
select(abs(x * (w - t)) < 9 as f32, 15, 7) - w as i32 % 2,
|
select(abs(x * (w - t)) < 9 as f32, 15, 7) - w as i32 % 2,
|
||||||
select(y * s > -99 as f32 / (m * m + 1 as f32),
|
select(y * s > -99 as f32 / (m * m + 1 as f32),
|
||||||
select(q == z, z_int % 2, 3),
|
select(z_int % 9 >= 6, z_int % 2, 3),
|
||||||
12 + (y / 23 as f32) as i32
|
(12 as f32 + y / 23 as f32 + fmod(y / 4 as f32, 1 as f32)) as i32
|
||||||
)
|
)
|
||||||
) * 16;
|
) * 16;
|
||||||
branch_if (i := i + 1) < 320*240: pixels;
|
branch_if (i := i + 1) < 320*240: pixels;
|
||||||
|
|||||||
@@ -529,26 +529,8 @@ fn script_parser() -> impl Parser<Token, ast::Script, Error = Simple<Token>> + C
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let short_memory_op = mem_op
|
|
||||||
.clone()
|
|
||||||
.then(
|
|
||||||
just(Token::Op("=".to_string()))
|
|
||||||
.ignore_then(expression.clone())
|
|
||||||
.or_not(),
|
|
||||||
)
|
|
||||||
.map(|((size, left), value)| {
|
|
||||||
let right = ast::Expr::I32Const(0).with_span(left.span.clone());
|
|
||||||
if let Some(value) = value {
|
|
||||||
make_memory_op(left, vec![], Some(((size, right), value)))
|
|
||||||
} else {
|
|
||||||
make_memory_op(left, vec![(size, right)], None)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.clone();
|
|
||||||
|
|
||||||
let memory_op = op_cast
|
let memory_op = op_cast
|
||||||
.clone()
|
.clone()
|
||||||
.or(short_memory_op.clone())
|
|
||||||
.then(
|
.then(
|
||||||
mem_op
|
mem_op
|
||||||
.clone()
|
.clone()
|
||||||
|
|||||||
Reference in New Issue
Block a user