mirror of
https://github.com/exoticorn/microw8.git
synced 2026-01-21 19:46:41 +01:00
port rust tunnel example to zig
This commit is contained in:
20
examples/zig/main.zig
Normal file
20
examples/zig/main.zig
Normal file
@@ -0,0 +1,20 @@
|
||||
extern fn atan2(x: f32, y: f32) f32;
|
||||
extern fn time() f32;
|
||||
|
||||
pub const FRAMEBUFFER: *[320*240]u8 = @intToPtr(*[320*240]u8, 120);
|
||||
|
||||
export fn upd() void {
|
||||
var i: u32 = 0;
|
||||
while(true) {
|
||||
var t = time() * 63.0;
|
||||
var x = @intToFloat(f32, (@intCast(i32, i % 320) - 160));
|
||||
var y = @intToFloat(f32, (@intCast(i32, i / 320) - 120));
|
||||
var d = 40000.0 / @sqrt(x * x + y * y + 1.0);
|
||||
var u = atan2(x, y) * 512.0 / 3.141;
|
||||
var c = @intCast(u8, (@floatToInt(i32, d + t * 2.0) ^ @floatToInt(i32, u + t)) & 255) >> 4;
|
||||
|
||||
FRAMEBUFFER[@as(usize, i)] = c;
|
||||
i += 1;
|
||||
if(i >= 320*240) { break; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user