repo: hackvr-turbo
action: commit
revision: 
path_from: 
revision_from: 674397c24c3f764e955494732f365eceae7150f7:
path_to: 
revision_to: 
git.thebackupbox.net
hackvr-turbo
git clone git://git.thebackupbox.net/hackvr-turbo
commit 674397c24c3f764e955494732f365eceae7150f7
Author: Felix (xq) Queißner 
Date:   Wed Jun 24 23:44:02 2020 +0200

    Initial vomit: red screen with no sound.

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..3cef7be49b001678cdb11a5363a52f1be5510311
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+zig-cache/
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000000000000000000000000000000000000..96070eaf3fb2626aa02c9f319ed018cc1cfb0038
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,23 @@
+{
+  // See https://go.microsoft.com/fwlink/?LinkId=733558
+  // for the documentation about the tasks.json format
+  "version": "2.0.0",
+  "tasks": [
+    {
+      "label": "build",
+      "type": "shell",
+      "command": "zig build",
+      "problemMatcher": [
+        "$gcc"
+      ],
+      "presentation": {
+        "echo": false,
+        "reveal": "silent",
+        "focus": false,
+        "panel": "dedicated",
+        "showReuseMessage": false,
+        "clear": true
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/build.zig b/build.zig
new file mode 100644
index 0000000000000000000000000000000000000000..63afb17f56e01cdab369d205557665e772a358a8
--- /dev/null
+++ b/build.zig
@@ -0,0 +1,35 @@
+const std = @import("std");
+
+const hackvr = std.build.Pkg{
+    .name = "hackvr",
+    .path = "lib/hackvr/lib.zig",
+};
+
+pub fn build(b: *std.build.Builder) void {
+    // Standard target options allows the person running `zig build` to choose
+    // what target to build for. Here we do not override the defaults, which
+    // means any target is allowed, and the default is native. Other options
+    // for restricting supported target set are available.
+    const target = b.standardTargetOptions(.{});
+
+    // Standard release options allow the person running `zig build` to select
+    // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
+    const mode = b.standardReleaseOptions();
+
+    const exe = b.addExecutable("hackvr-zig", "src/main.zig");
+    exe.setTarget(target);
+    exe.setBuildMode(mode);
+
+    exe.linkSystemLibrary("SDL2");
+    exe.linkSystemLibrary("epoxy");
+
+    exe.addPackage(hackvr);
+
+    exe.install();
+
+    const run_cmd = exe.run();
+    run_cmd.step.dependOn(b.getInstallStep());
+
+    const run_step = b.step("run", "Run the app");
+    run_step.dependOn(&run_cmd.step);
+}
diff --git a/data/dungeon.hackvr b/data/dungeon.hackvr
new file mode 100644
index 0000000000000000000000000000000000000000..d2718803f256cf82138ce67ac97aa82d0394f9a9
--- /dev/null
+++ b/data/dungeon.hackvr
@@ -0,0 +1,736 @@
+wall_7_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_7_0 rotate 0 0 0
+wall_7_0 move 0 0 16
+wall_7_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_7_1 rotate 0 180 0
+wall_7_1 move 0 0 16
+wall_7_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_7_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_7_2 rotate 0 270 0
+wall_7_2 move 0 0 16
+wall_7_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_7_3 rotate 0 90 0
+wall_7_3 move 0 0 16
+wall_8_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_8_0 rotate 0 0 0
+wall_8_0 move 16 0 16
+wall_8_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_8_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_8_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_8_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_8_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_8_1 rotate 0 180 0
+door_close_8_1 move 18 0 8
+wall_8_1 rotate 0 180 0
+wall_8_1 move 16 0 16
+wall_8_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_8_2 rotate 0 270 0
+wall_8_2 move 16 0 16
+wall_8_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_8_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_8_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_8_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_8_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_8_3 rotate 0 90 0
+door_close_8_3 move 8 0 14
+wall_8_3 rotate 0 90 0
+wall_8_3 move 16 0 16
+wall_10_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_10_0 rotate 0 0 0
+wall_10_0 move 48 0 16
+wall_10_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_10_1 rotate 0 180 0
+wall_10_1 move 48 0 16
+wall_10_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_10_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_10_2 rotate 0 270 0
+wall_10_2 move 48 0 16
+wall_10_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_10_3 rotate 0 90 0
+wall_10_3 move 48 0 16
+wall_11_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_11_0 rotate 0 0 0
+wall_11_0 move 64 0 16
+wall_11_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_11_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_11_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_11_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_11_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_11_1 rotate 0 180 0
+door_close_11_1 move 66 0 8
+wall_11_1 rotate 0 180 0
+wall_11_1 move 64 0 16
+wall_11_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_11_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_11_2 rotate 0 270 0
+wall_11_2 move 64 0 16
+wall_11_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_11_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_11_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_11_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_11_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_11_3 rotate 0 90 0
+door_close_11_3 move 56 0 14
+wall_11_3 rotate 0 90 0
+wall_11_3 move 64 0 16
+wall_12_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_12_0 rotate 0 0 0
+wall_12_0 move 80 0 16
+wall_12_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_12_1 rotate 0 180 0
+wall_12_1 move 80 0 16
+wall_12_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_12_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_12_2 rotate 0 270 0
+wall_12_2 move 80 0 16
+wall_12_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_12_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_12_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_12_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_12_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_12_3 rotate 0 90 0
+door_close_12_3 move 72 0 14
+wall_12_3 rotate 0 90 0
+wall_12_3 move 80 0 16
+wall_13_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_13_0 rotate 0 0 0
+wall_13_0 move 96 0 16
+wall_13_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_13_1 rotate 0 180 0
+wall_13_1 move 96 0 16
+wall_13_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_13_2 rotate 0 270 0
+wall_13_2 move 96 0 16
+wall_13_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_13_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_13_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_13_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_13_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_13_3 rotate 0 90 0
+door_close_13_3 move 88 0 14
+wall_13_3 rotate 0 90 0
+wall_13_3 move 96 0 16
+wall_23_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_23_0 rotate 0 0 0
+wall_23_0 move 0 0 0
+wall_23_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_23_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_23_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_23_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_23_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_23_1 rotate 0 180 0
+door_close_23_1 move 2 0 -8
+wall_23_1 rotate 0 180 0
+wall_23_1 move 0 0 0
+wall_23_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_23_2 rotate 0 270 0
+wall_23_2 move 0 0 0
+wall_23_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_23_3 rotate 0 90 0
+wall_23_3 move 0 0 0
+wall_24_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_24_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_24_0 rotate 0 0 0
+wall_24_0 move 16 0 0
+wall_24_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_24_1 rotate 0 180 0
+wall_24_1 move 16 0 0
+wall_24_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_24_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_24_2 rotate 0 270 0
+wall_24_2 move 16 0 0
+wall_24_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_24_3 rotate 0 90 0
+wall_24_3 move 16 0 0
+wall_25_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_25_0 rotate 0 0 0
+wall_25_0 move 32 0 0
+wall_25_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_25_1 rotate 0 180 0
+wall_25_1 move 32 0 0
+wall_25_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_25_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_25_2 rotate 0 270 0
+wall_25_2 move 32 0 0
+wall_25_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_25_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_25_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_25_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_25_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_25_3 rotate 0 90 0
+door_close_25_3 move 24 0 -2
+wall_25_3 rotate 0 90 0
+wall_25_3 move 32 0 0
+wall_26_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_26_0 rotate 0 0 0
+wall_26_0 move 48 0 0
+wall_26_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_26_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_26_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_26_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_26_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_26_1 rotate 0 180 0
+door_close_26_1 move 50 0 -8
+wall_26_1 rotate 0 180 0
+wall_26_1 move 48 0 0
+wall_26_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_26_2 rotate 0 270 0
+wall_26_2 move 48 0 0
+wall_26_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_26_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_26_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_26_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_26_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_26_3 rotate 0 90 0
+door_close_26_3 move 40 0 -2
+wall_26_3 rotate 0 90 0
+wall_26_3 move 48 0 0
+wall_27_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_27_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_27_0 rotate 0 0 0
+wall_27_0 move 64 0 0
+wall_27_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_27_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_27_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_27_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_27_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_27_1 rotate 0 180 0
+door_close_27_1 move 66 0 -8
+wall_27_1 rotate 0 180 0
+wall_27_1 move 64 0 0
+wall_27_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_27_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_27_2 rotate 0 270 0
+wall_27_2 move 64 0 0
+wall_27_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_27_3 rotate 0 90 0
+wall_27_3 move 64 0 0
+wall_28_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_28_0 rotate 0 0 0
+wall_28_0 move 80 0 0
+wall_28_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_28_1 rotate 0 180 0
+wall_28_1 move 80 0 0
+wall_28_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_28_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_28_2 rotate 0 270 0
+wall_28_2 move 80 0 0
+wall_28_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_28_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_28_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_28_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_28_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_28_3 rotate 0 90 0
+door_close_28_3 move 72 0 -2
+wall_28_3 rotate 0 90 0
+wall_28_3 move 80 0 0
+wall_29_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_29_0 rotate 0 0 0
+wall_29_0 move 96 0 0
+wall_29_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_29_1 rotate 0 180 0
+wall_29_1 move 96 0 0
+wall_29_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_29_2 rotate 0 270 0
+wall_29_2 move 96 0 0
+wall_29_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_29_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_29_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_29_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_29_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_29_3 rotate 0 90 0
+door_close_29_3 move 88 0 -2
+wall_29_3 rotate 0 90 0
+wall_29_3 move 96 0 0
+wall_39_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_39_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_39_0 rotate 0 0 0
+wall_39_0 move 0 0 -16
+wall_39_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_39_1 rotate 0 180 0
+wall_39_1 move 0 0 -16
+wall_39_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_39_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_39_2 rotate 0 270 0
+wall_39_2 move 0 0 -16
+wall_39_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_39_3 rotate 0 90 0
+wall_39_3 move 0 0 -16
+wall_40_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_40_0 rotate 0 0 0
+wall_40_0 move 16 0 -16
+wall_40_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_40_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_40_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_40_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_40_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_40_1 rotate 0 180 0
+door_close_40_1 move 18 0 -24
+wall_40_1 rotate 0 180 0
+wall_40_1 move 16 0 -16
+wall_40_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_40_2 rotate 0 270 0
+wall_40_2 move 16 0 -16
+wall_40_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_40_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_40_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_40_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_40_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_40_3 rotate 0 90 0
+door_close_40_3 move 8 0 -18
+wall_40_3 rotate 0 90 0
+wall_40_3 move 16 0 -16
+wall_41_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_41_0 rotate 0 0 0
+wall_41_0 move 32 0 -16
+wall_41_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_41_1 rotate 0 180 0
+wall_41_1 move 32 0 -16
+wall_41_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_41_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_41_2 rotate 0 270 0
+wall_41_2 move 32 0 -16
+wall_41_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_41_3 rotate 0 90 0
+wall_41_3 move 32 0 -16
+wall_42_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_42_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_42_0 rotate 0 0 0
+wall_42_0 move 48 0 -16
+wall_42_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_42_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_42_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_42_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_42_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_42_1 rotate 0 180 0
+door_close_42_1 move 50 0 -24
+wall_42_1 rotate 0 180 0
+wall_42_1 move 48 0 -16
+wall_42_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_42_2 rotate 0 270 0
+wall_42_2 move 48 0 -16
+wall_42_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_42_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_42_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_42_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_42_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_42_3 rotate 0 90 0
+door_close_42_3 move 40 0 -18
+wall_42_3 rotate 0 90 0
+wall_42_3 move 48 0 -16
+wall_43_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_43_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_43_0 rotate 0 0 0
+wall_43_0 move 64 0 -16
+wall_43_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_43_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_43_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_43_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_43_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_43_1 rotate 0 180 0
+door_close_43_1 move 66 0 -24
+wall_43_1 rotate 0 180 0
+wall_43_1 move 64 0 -16
+wall_43_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_43_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_43_2 rotate 0 270 0
+wall_43_2 move 64 0 -16
+wall_43_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_43_3 rotate 0 90 0
+wall_43_3 move 64 0 -16
+wall_44_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_44_0 rotate 0 0 0
+wall_44_0 move 80 0 -16
+wall_44_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_44_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_44_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_44_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_44_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_44_1 rotate 0 180 0
+door_close_44_1 move 82 0 -24
+wall_44_1 rotate 0 180 0
+wall_44_1 move 80 0 -16
+wall_44_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_44_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_44_2 rotate 0 270 0
+wall_44_2 move 80 0 -16
+wall_44_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_44_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_44_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_44_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_44_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_44_3 rotate 0 90 0
+door_close_44_3 move 72 0 -18
+wall_44_3 rotate 0 90 0
+wall_44_3 move 80 0 -16
+wall_45_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_45_0 rotate 0 0 0
+wall_45_0 move 96 0 -16
+wall_45_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_45_1 rotate 0 180 0
+wall_45_1 move 96 0 -16
+wall_45_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_45_2 rotate 0 270 0
+wall_45_2 move 96 0 -16
+wall_45_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_45_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_45_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_45_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_45_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_45_3 rotate 0 90 0
+door_close_45_3 move 88 0 -18
+wall_45_3 rotate 0 90 0
+wall_45_3 move 96 0 -16
+wall_56_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_56_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_56_0 rotate 0 0 0
+wall_56_0 move 16 0 -32
+wall_56_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_56_1 rotate 0 180 0
+wall_56_1 move 16 0 -32
+wall_56_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_56_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_56_2 rotate 0 270 0
+wall_56_2 move 16 0 -32
+wall_56_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_56_3 rotate 0 90 0
+wall_56_3 move 16 0 -32
+wall_57_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_57_0 rotate 0 0 0
+wall_57_0 move 32 0 -32
+wall_57_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_57_1 rotate 0 180 0
+wall_57_1 move 32 0 -32
+wall_57_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_57_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_57_2 rotate 0 270 0
+wall_57_2 move 32 0 -32
+wall_57_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_57_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_57_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_57_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_57_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_57_3 rotate 0 90 0
+door_close_57_3 move 24 0 -34
+wall_57_3 rotate 0 90 0
+wall_57_3 move 32 0 -32
+wall_58_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_58_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_58_0 rotate 0 0 0
+wall_58_0 move 48 0 -32
+wall_58_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_58_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_58_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_58_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_58_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_58_1 rotate 0 180 0
+door_close_58_1 move 50 0 -40
+wall_58_1 rotate 0 180 0
+wall_58_1 move 48 0 -32
+wall_58_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_58_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_58_2 rotate 0 270 0
+wall_58_2 move 48 0 -32
+wall_58_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_58_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_58_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_58_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_58_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_58_3 rotate 0 90 0
+door_close_58_3 move 40 0 -34
+wall_58_3 rotate 0 90 0
+wall_58_3 move 48 0 -32
+wall_59_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_59_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_59_0 rotate 0 0 0
+wall_59_0 move 64 0 -32
+wall_59_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_59_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_59_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_59_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_59_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_59_1 rotate 0 180 0
+door_close_59_1 move 66 0 -40
+wall_59_1 rotate 0 180 0
+wall_59_1 move 64 0 -32
+wall_59_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_59_2 rotate 0 270 0
+wall_59_2 move 64 0 -32
+wall_59_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_59_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_59_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_59_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_59_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_59_3 rotate 0 90 0
+door_close_59_3 move 56 0 -34
+wall_59_3 rotate 0 90 0
+wall_59_3 move 64 0 -32
+wall_60_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_60_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_60_0 rotate 0 0 0
+wall_60_0 move 80 0 -32
+wall_60_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_60_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_60_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_60_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_60_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_60_1 rotate 0 180 0
+door_close_60_1 move 82 0 -40
+wall_60_1 rotate 0 180 0
+wall_60_1 move 80 0 -32
+wall_60_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_60_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_60_2 rotate 0 270 0
+wall_60_2 move 80 0 -32
+wall_60_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_60_3 rotate 0 90 0
+wall_60_3 move 80 0 -32
+wall_61_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_61_0 rotate 0 0 0
+wall_61_0 move 96 0 -32
+wall_61_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_61_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_61_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_61_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_61_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_61_1 rotate 0 180 0
+door_close_61_1 move 98 0 -40
+wall_61_1 rotate 0 180 0
+wall_61_1 move 96 0 -32
+wall_61_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_61_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_61_2 rotate 0 270 0
+wall_61_2 move 96 0 -32
+wall_61_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_61_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_61_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_61_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_61_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_61_3 rotate 0 90 0
+door_close_61_3 move 88 0 -34
+wall_61_3 rotate 0 90 0
+wall_61_3 move 96 0 -32
+wall_62_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_62_0 rotate 0 0 0
+wall_62_0 move 112 0 -32
+wall_62_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_62_1 rotate 0 180 0
+wall_62_1 move 112 0 -32
+wall_62_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_62_2 rotate 0 270 0
+wall_62_2 move 112 0 -32
+wall_62_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_62_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_62_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_62_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_62_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_62_3 rotate 0 90 0
+door_close_62_3 move 104 0 -34
+wall_62_3 rotate 0 90 0
+wall_62_3 move 112 0 -32
+wall_74_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_74_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_74_0 rotate 0 0 0
+wall_74_0 move 48 0 -48
+wall_74_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_74_1 rotate 0 180 0
+wall_74_1 move 48 0 -48
+wall_74_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_74_2 rotate 0 270 0
+wall_74_2 move 48 0 -48
+wall_74_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_74_3 rotate 0 90 0
+wall_74_3 move 48 0 -48
+wall_75_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_75_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_75_0 rotate 0 0 0
+wall_75_0 move 64 0 -48
+wall_75_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_75_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_75_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_75_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_75_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_75_1 rotate 0 180 0
+door_close_75_1 move 66 0 -56
+wall_75_1 rotate 0 180 0
+wall_75_1 move 64 0 -48
+wall_75_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_75_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_75_2 rotate 0 270 0
+wall_75_2 move 64 0 -48
+wall_75_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_75_3 rotate 0 90 0
+wall_75_3 move 64 0 -48
+wall_76_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_76_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_76_0 rotate 0 0 0
+wall_76_0 move 80 0 -48
+wall_76_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_76_1 rotate 0 180 0
+wall_76_1 move 80 0 -48
+wall_76_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_76_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_76_2 rotate 0 270 0
+wall_76_2 move 80 0 -48
+wall_76_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_76_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_76_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_76_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_76_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_76_3 rotate 0 90 0
+door_close_76_3 move 72 0 -50
+wall_76_3 rotate 0 90 0
+wall_76_3 move 80 0 -48
+wall_77_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_77_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_77_0 rotate 0 0 0
+wall_77_0 move 96 0 -48
+wall_77_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_77_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_77_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_77_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_77_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_77_1 rotate 0 180 0
+door_close_77_1 move 98 0 -56
+wall_77_1 rotate 0 180 0
+wall_77_1 move 96 0 -48
+wall_77_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_77_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_77_2 rotate 0 270 0
+wall_77_2 move 96 0 -48
+wall_77_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_77_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_77_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_77_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_77_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_77_3 rotate 0 90 0
+door_close_77_3 move 88 0 -50
+wall_77_3 rotate 0 90 0
+wall_77_3 move 96 0 -48
+wall_78_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_78_0 rotate 0 0 0
+wall_78_0 move 112 0 -48
+wall_78_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_78_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_78_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_78_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_78_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_78_1 rotate 0 180 0
+door_close_78_1 move 114 0 -56
+wall_78_1 rotate 0 180 0
+wall_78_1 move 112 0 -48
+wall_78_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_78_2 rotate 0 270 0
+wall_78_2 move 112 0 -48
+wall_78_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_78_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_78_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_78_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_78_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_78_3 rotate 0 90 0
+door_close_78_3 move 104 0 -50
+wall_78_3 rotate 0 90 0
+wall_78_3 move 112 0 -48
+wall_91_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_91_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_91_0 rotate 0 0 0
+wall_91_0 move 64 0 -64
+wall_91_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_91_1 rotate 0 180 0
+wall_91_1 move 64 0 -64
+wall_91_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_91_2 rotate 0 270 0
+wall_91_2 move 64 0 -64
+wall_91_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_91_3 rotate 0 90 0
+wall_91_3 move 64 0 -64
+wall_93_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_93_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_93_0 rotate 0 0 0
+wall_93_0 move 96 0 -64
+wall_93_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_93_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_93_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_93_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_93_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_93_1 rotate 0 180 0
+door_close_93_1 move 98 0 -72
+wall_93_1 rotate 0 180 0
+wall_93_1 move 96 0 -64
+wall_93_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_93_2 rotate 0 270 0
+wall_93_2 move 96 0 -64
+wall_93_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_93_3 rotate 0 90 0
+wall_93_3 move 96 0 -64
+wall_94_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_94_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_94_0 rotate 0 0 0
+wall_94_0 move 112 0 -64
+wall_94_1 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_94_1 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_94_1 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_94_1 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_94_1 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_94_1 rotate 0 180 0
+door_close_94_1 move 114 0 -72
+wall_94_1 rotate 0 180 0
+wall_94_1 move 112 0 -64
+wall_94_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_94_2 rotate 0 270 0
+wall_94_2 move 112 0 -64
+wall_94_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_94_3 rotate 0 90 0
+wall_94_3 move 112 0 -64
+wall_108_0 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_108_0 rotate 0 0 0
+wall_108_0 move 80 0 -80
+wall_108_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_108_1 rotate 0 180 0
+wall_108_1 move 80 0 -80
+wall_108_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_108_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_108_2 rotate 0 270 0
+wall_108_2 move 80 0 -80
+wall_108_3 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_108_3 rotate 0 90 0
+wall_108_3 move 80 0 -80
+wall_109_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_109_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_109_0 rotate 0 0 0
+wall_109_0 move 96 0 -80
+wall_109_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_109_1 rotate 0 180 0
+wall_109_1 move 96 0 -80
+wall_109_2 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_109_2 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_109_2 rotate 0 270 0
+wall_109_2 move 96 0 -80
+wall_109_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_109_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_109_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_109_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_109_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_109_3 rotate 0 90 0
+door_close_109_3 move 88 0 -82
+wall_109_3 rotate 0 90 0
+wall_109_3 move 96 0 -80
+wall_110_0 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_110_0 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_110_0 rotate 0 0 0
+wall_110_0 move 112 0 -80
+wall_110_1 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_110_1 rotate 0 180 0
+wall_110_1 move 112 0 -80
+wall_110_2 addshape 2 4  -7 0 7  -7 8 7  7 8 7  7 0 7
+wall_110_2 rotate 0 270 0
+wall_110_2 move 112 0 -80
+wall_110_3 addshape 2 4  -7 0 7  -7 8 7  -2 8 7  -2 0 7
+wall_110_3 addshape 2 4  2 0 7  2 8 7  7 8 7  7 0 7
+wall_110_3 addshape 2 4  -2 0 7  -2 8 7  -2 8 9  -2 0 9
+wall_110_3 addshape 2 4  2 0 9  2 8 9  2 8 7  2 0 7
+door_close_110_3 addshape 3 4  0 0 0  0 8 0  4 8 0  4 0 0
+door_close_110_3 rotate 0 90 0
+door_close_110_3 move 104 0 -82
+wall_110_3 rotate 0 90 0
+wall_110_3 move 112 0 -80
diff --git a/lib/hackvr/lib.zig b/lib/hackvr/lib.zig
new file mode 100644
index 0000000000000000000000000000000000000000..30cc3fa44ca9e46b339e135e9a7b7c8f8b2cd946
--- /dev/null
+++ b/lib/hackvr/lib.zig
@@ -0,0 +1,27 @@
+const std = @import("std");
+
+const real = f32;
+
+pub const Vec3D = struct {
+    x: real, y: real, z: real
+};
+
+pub const Attribute = struct {
+    color: u8, //color. not sure how I plan on using this.
+    luminance: u8, //brightness. 1 - 200 atm because X11 has grey1 - grey200
+};
+
+pub const Shape3D = struct {
+    pub const Flavor = enum {
+        polygon,
+        elliptic_arc,
+        cubic_bezier,
+        quad_bezier,
+    };
+
+    id: []const u8,
+    flavour: Flavor,
+    points: []Vec3D,
+    velocity: Vec3D,
+    attributes: Attribute,
+};
diff --git a/src/main.zig b/src/main.zig
new file mode 100644
index 0000000000000000000000000000000000000000..4da82fe67e2d4c597e0c8ad02aa6d69ff81dead3
--- /dev/null
+++ b/src/main.zig
@@ -0,0 +1,107 @@
+const std = @import("std");
+
+const hackvr = @import("hackvr");
+
+const c = @cImport({
+    @cInclude("epoxy/gl.h");
+    @cInclude("SDL.h");
+    // @cInclude("SDL_opengl.h");
+});
+
+const SdlError = error{SdlFailure};
+
+fn makeSdlError() SdlError {
+    std.log.err(.SDL, "{c}\n", .{c.SDL_GetError()});
+    return error.SdlFailure;
+}
+
+fn sdlCheck(result: c_int) !void {
+    if (result < 0)
+        return makeSdlError();
+}
+
+const CliOptions = struct {
+    multisampling: ?u7 = null,
+};
+
+const cli_options = CliOptions{
+    .multisampling = null,
+};
+
+pub fn main() anyerror!void {
+    if (c.SDL_Init(c.SDL_INIT_EVERYTHING) < 0) {
+        return makeSdlError();
+    }
+    defer _ = c.SDL_Quit();
+
+    try sdlCheck(c.SDL_GL_SetAttribute(.SDL_GL_CONTEXT_MAJOR_VERSION, 4));
+    try sdlCheck(c.SDL_GL_SetAttribute(.SDL_GL_CONTEXT_MINOR_VERSION, 5));
+    try sdlCheck(c.SDL_GL_SetAttribute(.SDL_GL_CONTEXT_FLAGS, c.SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG | c.SDL_GL_CONTEXT_DEBUG_FLAG));
+
+    if (cli_options.multisampling) |samples| {
+        try sdlCheck(c.SDL_GL_SetAttribute(c.SDL_GL_MULTISAMPLEBUFFERS, 1));
+        try sdlCheck(c.SDL_GL_SetAttribute(c.SDL_GL_MULTISAMPLESAMPLES, samples));
+    }
+
+    var window = c.SDL_CreateWindow(
+        "HackVR Turbo",
+        c.SDL_WINDOWPOS_CENTERED,
+        c.SDL_WINDOWPOS_CENTERED,
+        1280,
+        720,
+        c.SDL_WINDOW_OPENGL,
+    ) orelse return makeSdlError();
+    defer c.SDL_DestroyWindow(window);
+
+    var context = c.SDL_GL_CreateContext(window) orelse return makeSdlError();
+    defer _ = c.SDL_GL_DeleteContext(context);
+
+    try sdlCheck(c.SDL_GL_MakeCurrent(window, context));
+
+    c.glDebugMessageCallback(openGlDebugCallback, null);
+
+    mainLoop: while (true) {
+        // process events
+        {
+            var event: c.SDL_Event = undefined;
+            while (c.SDL_PollEvent(&event) != 0) {
+                switch (event.type) {
+                    c.SDL_QUIT => break :mainLoop,
+                    else => std.log.notice(.HackVR, "Unhandled event: {}\n", .{event.type}),
+                }
+            }
+        }
+
+        {
+            // render
+            c.glClearColor(1.0, 0.0, 0.0, 1.0);
+            c.glClear(c.GL_COLOR_BUFFER_BIT);
+
+            c.SDL_GL_SwapWindow(window);
+            c.SDL_Delay(10);
+        }
+    }
+}
+
+fn openGlDebugCallback(
+    source: c.GLenum,
+    msg_type: c.GLenum,
+    id: c.GLuint,
+    severity: c.GLenum,
+    length: c.GLsizei,
+    message: [*c]const c.GLchar,
+    userParam: ?*const c_void,
+) callconv(.C) void {
+    const msg_fmt = "{}\n";
+    const msg_arg = .{
+        message.?[0..@intCast(usize, length)],
+    };
+
+    switch (severity) {
+        c.GL_DEBUG_SEVERITY_HIGH => std.log.err(.OpenGL, msg_fmt, msg_arg),
+        c.GL_DEBUG_SEVERITY_MEDIUM => std.log.warn(.OpenGL, msg_fmt, msg_arg),
+        c.GL_DEBUG_SEVERITY_LOW => std.log.notice(.OpenGL, msg_fmt, msg_arg),
+        c.GL_DEBUG_SEVERITY_NOTIFICATION => std.log.notice(.OpenGL, msg_fmt, msg_arg),
+        else => std.log.crit(.OpenGL, msg_fmt, msg_arg),
+    }
+}

-----END OF PAGE-----