]> Joshua Wise's Git repositories - netwatch.git/blobdiff - video/text.c
Fix compile on text.c.
[netwatch.git] / video / text.c
index e7b0db30f7db916f61fa23873e2d5391082c6aab..25fe245dec4a551cb9d144cac9eb09f9b751afb9 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdint.h>
 #include <output.h>
 #include <smram.h>
+#include <crc32.h>
 
 static unsigned char _font[256 * 32];
 
@@ -34,15 +35,16 @@ void text_render(char *buf, int x, int y, int w, int h)
        unsigned char ch, at, font;
        smram_state_t old_state = smram_save_state();
        
-       outputf("text_render: buf %08x, (%d,%d),(%d,%d)", buf, x, y, w, h);
+       outputf("text_render: (%d,%d),(%d,%d)", buf, x, y, w, h);
        
        smram_aseg_set_state(SMRAM_ASEG_SMMCODE);
        for (cy = y; cy < (y + h); cy++)
        {
+               cx = x;
                texty = cy / 14;
                textx = cx / 9;
-               ch = video[texty * 50 + textx * 2];
-               at = video[texty * 50 + textx * 2 + 1];
+               ch = video[texty * 160 + textx * 2];
+               at = video[texty * 160 + textx * 2 + 1];
                font = _font[ch * 32 + cy % 14];
                for (cx = x; cx < (x + w); cx++)
                {
@@ -50,8 +52,8 @@ void text_render(char *buf, int x, int y, int w, int h)
                        if (pos == 0)
                        {
                                textx = cx / 9;
-                               ch = video[texty * 50 + textx * 2];
-                               at = video[texty * 50 + textx * 2 + 1];
+                               ch = video[texty * 160 + textx * 2];
+                               at = video[texty * 160 + textx * 2 + 1];
                                font = _font[ch * 32 + cy % 14];
                        }
                        /* XXX always BGR888 */
@@ -79,37 +81,20 @@ uint32_t text_checksum(int x, int y, int w, int h)
        unsigned int textx = x / 9;
        unsigned int texty = y / 14;
        int cx, cy;
-       unsigned char ch, at;
        uint32_t cksm = 0;
        smram_state_t old_state = smram_save_state();
        
-       outputf("checksum: (%d,%d),(%d,%d)", x,y,w,h);
-       
        smram_aseg_set_state(SMRAM_ASEG_SMMCODE);
        
        for (cy = y; cy < (y + h); cy++)
        {
+               cx = x;
                texty = cy / 14;
                textx = cx / 9;
-               ch = video[texty * 50 + textx * 2];
-               at = video[texty * 50 + textx * 2 + 1];
-               for (cx = x; cx < (x + w); cx++)
-               {
-                       unsigned int pos = cx % 9;
-                       if (pos == 0)
-                       {
-                               textx = cx / 9;
-                               ch = video[texty * 50 + textx * 2];
-                               at = video[texty * 50 + textx * 2 + 1];
-                       }
-                       
-                       cksm += ch + (at << 16);
-               }
+               cksm ^= crc32(video + texty * 160 + textx * 2, (w / 9 + 1) * 2);        /* Err on the side of 'too many'. */
        }
        
        smram_restore_state(old_state);
        
-       outputf("checksum: %08x", cksm);
-       
        return cksm;
 }
This page took 0.025846 seconds and 4 git commands to generate.