Update rollo with new interactivity model.
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp
index 0ec6baf..c19f0bb 100644
--- a/libs/rs/rsScriptC.cpp
+++ b/libs/rs/rsScriptC.cpp
@@ -133,13 +133,17 @@
 extern "C" float loadF(uint32_t bank, uint32_t offset)
 {
     GET_TLS();
-    return static_cast<const float *>(sc->mSlots[bank]->getPtr())[offset];
+    float f = static_cast<const float *>(sc->mSlots[bank]->getPtr())[offset];
+    //LOGE("loadF %i %i = %f %x", bank, offset, f, ((int *)&f)[0]);
+    return f;
 }
 
 extern "C" int32_t loadI32(uint32_t bank, uint32_t offset)
 {
     GET_TLS();
-    return static_cast<const int32_t *>(sc->mSlots[bank]->getPtr())[offset];
+    int32_t t = static_cast<const int32_t *>(sc->mSlots[bank]->getPtr())[offset];
+    //LOGE("loadI32 %i %i = %i", bank, offset, t);
+    return t;
 }
 
 extern "C" uint32_t loadU32(uint32_t bank, uint32_t offset)
@@ -163,6 +167,7 @@
 
 extern "C" void storeF(uint32_t bank, uint32_t offset, float v)
 {
+    //LOGE("storeF %i %i %f", bank, offset, v);
     GET_TLS();
     static_cast<float *>(sc->mSlots[bank]->getPtr())[offset] = v;
 }
@@ -307,6 +312,47 @@
     glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
 }
 
+extern "C" void drawQuadF(float x1, float y1, float z1,
+                          float x2, float y2, float z2,
+                          float x3, float y3, float z3,
+                          float x4, float y4, float z4)
+{
+    GET_TLS();
+
+    //LOGE("Quad");
+    //LOGE("%4.2f, %4.2f, %4.2f", x1, y1, z1);
+    //LOGE("%4.2f, %4.2f, %4.2f", x2, y2, z2);
+    //LOGE("%4.2f, %4.2f, %4.2f", x3, y3, z3);
+    //LOGE("%4.2f, %4.2f, %4.2f", x4, y4, z4);
+
+    float vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
+    static const float tex[] = {0,0, 0,1, 1,1, 1,0};
+
+
+    rsc->setupCheck();
+
+    glBindBuffer(GL_ARRAY_BUFFER, 0);
+    //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]);
+
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glVertexPointer(3, GL_FLOAT, 0, vtx);
+
+    glClientActiveTexture(GL_TEXTURE0);
+    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+    glTexCoordPointer(2, GL_FLOAT, 0, tex);
+    glClientActiveTexture(GL_TEXTURE1);
+    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+    glTexCoordPointer(2, GL_FLOAT, 0, tex);
+    glClientActiveTexture(GL_TEXTURE0);
+
+    glDisableClientState(GL_NORMAL_ARRAY);
+    glDisableClientState(GL_COLOR_ARRAY);
+
+    //glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr);
+
+    glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+}
+
 extern "C" void drawQuad(int32_t x1, int32_t y1, int32_t z1,
                          int32_t x2, int32_t y2, int32_t z2,
                          int32_t x3, int32_t y3, int32_t z3,
@@ -368,6 +414,28 @@
     return int32_t(s * 0x10000);
 }
 
+extern "C" float sinf(float angle)
+{
+    float s = (float)sin(angle);
+    return s;
+}
+
+extern "C" float cosf(float angle)
+{
+    float s = (float)cos(angle);
+    return s;
+}
+
+extern "C" void pfClearColor(float r, float g, float b, float a)
+{
+    //LOGE("c %f %f %f %f", r, g, b, a);
+    GET_TLS();
+    sc->mEnviroment.mClearColor[0] = r;
+    sc->mEnviroment.mClearColor[1] = g;
+    sc->mEnviroment.mClearColor[2] = b;
+    sc->mEnviroment.mClearColor[3] = a;
+}
+
 extern "C" void pfBindTexture(RsProgramFragment vpf, uint32_t slot, RsAllocation va)
 {
     GET_TLS();