]> Joshua Wise's Git repositories - netwatch.git/blobdiff - video/text.c
Correct offset into video memory for console width in text.c.
[netwatch.git] / video / text.c
index e7b0db30f7db916f61fa23873e2d5391082c6aab..a25c8aa22db6df03a3d6472b554c8203a5f97279 100644 (file)
@@ -34,15 +34,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 +51,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 */
@@ -83,33 +84,17 @@ uint32_t text_checksum(int x, int y, int w, int h)
        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.023653 seconds and 4 git commands to generate.