checkpoint
diff --git a/libs/rs/java/Fall/res/raw/fall.c b/libs/rs/java/Fall/res/raw/fall.c
index 346006c..b3e2f92 100644
--- a/libs/rs/java/Fall/res/raw/fall.c
+++ b/libs/rs/java/Fall/res/raw/fall.c
@@ -210,26 +210,27 @@
         int x = 0;
         int yOffset = y * width;
         for ( ; x < width; x += 1) {
-            int o = ((yOffset + x) << 3);
-            int o1 = o + 8 + 5;
-            int ow = o + w8 + 5;
-            int ow1 = ow + 8;
+            struct vert_s *v = (struct vec3_s *)(vertices + x);
+            //int o = ((yOffset + x) << 3);
+            //int o1 = o + 8 + 5;
+            //int ow = o + w8 + 5;
+            //int ow1 = ow + 8;
 
             struct vec3_s n1, n2, n3;
-            vec3Sub(&n1, (struct vec3_s *)(vertices + o1 + 5), (struct vec3_s *)(vertices + o + 5));
-            vec3Sub(&n2, (struct vec3_s *)(vertices + ow + 5), (struct vec3_s *)(vertices + o + 5));
+            vec3Sub(&n1, (struct vec3_s *)&(v+1)->x, (struct vec3_s *)&v->x);
+            vec3Sub(&n2, (struct vec3_s *)&(v+width)->x, (struct vec3_s *)&v->x);
             vec3Cross(&n3, &n1, &n2);
             vec3Norm(&n3);
 
             // Average of previous normal and N1 x N2
-            vec3Sub(&n1, (struct vec3_s *)(vertices + ow1 + 5), (struct vec3_s *)(vertices + o + 5));
+            vec3Sub(&n1, (struct vec3_s *)&(v+width+1)->x, (struct vec3_s *)&v->x);
             vec3Cross(&n2, &n1, &n2);
             vec3Add(&n3, &n3, &n2);
             vec3Norm(&n3);
 
-            vertices[o + 0] = n3.x;
-            vertices[o + 1] = n3.y;
-            vertices[o + 2] = -n3.z;
+            v->nx = n3.x;
+            v->ny = n3.y;
+            v->nz = -n3.z;
 
             // reset Z
             //vertices[(yOffset + x) << 3 + 7] = 0.0f;