+int main( int argc, char *argv[] )
+{
+ vg_init( argc, argv, "FishLadder" );
+}
+
+void vg_register(void)
+{
+ SHADER_INIT( shader_tile_colour );
+}
+
+void vg_start(void)
+{
+ glGenVertexArrays( 1, &world.tile_vao );
+ glGenBuffers( 1, &world.tile_vbo );
+
+ float quad_mesh[] =
+ {
+ 0.05f, 0.05f, 0.05f, 0.95f, 0.95f, 0.95f,
+ 0.05f, 0.05f, 0.95f, 0.95f, 0.95f, 0.05f
+ };
+
+ glBindVertexArray( world.tile_vao );
+ glBindBuffer( GL_ARRAY_BUFFER, world.tile_vbo );
+ glBufferData
+ (
+ GL_ARRAY_BUFFER,
+ sizeof( quad_mesh ),
+ quad_mesh,
+ GL_STATIC_DRAW
+ );
+
+ glVertexAttribPointer( 0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), (void*)0 );
+ glEnableVertexAttribArray( 0 );
+
+ VG_CHECK_GL();
+
+ map_load
+ (
+ "#############;\n"
+ "###-#####-###;aaa,aa\n"
+ "## ##;\n"
+ "## ##;\n"
+ "## ##;\n"
+ "## ##;\n"
+ "## ##;\n"
+ "## ##;\n"
+ "###+#####+###;aa,aaa\n"
+ "#############;\n"
+ );
+}
+
+void vg_free(void)
+{
+ glDeleteVertexArrays( 1, &world.tile_vao );
+ glDeleteBuffers( 1, &world.tile_vbo );
+
+ map_free();
+}
+
+static int cell_interactive( v2i co )