fixed 16bpp offsets in csprite generator (hardcoded for now)
authorJohn Tsiombikas <nuclear@member.fsf.org>
Thu, 19 Dec 2019 02:54:07 +0000 (04:54 +0200)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Thu, 19 Dec 2019 02:54:07 +0000 (04:54 +0200)
GNUmakefile
src/demo.c
src/demo.h
src/screen.c
tools/csprite/src/main.c

index 1ee0a1e..d2dbc8b 100644 (file)
@@ -55,4 +55,4 @@ tools/csprite/csprite:
        $(MAKE) -C tools/csprite
 
 font.asm: data/font.png tools/csprite/csprite
-       tools/csprite/csprite -n font -s 16x16 -r 288x32+32+17 -conv565 -nasm $< >$@
+       tools/csprite/csprite -n cs_font -s 16x16 -r 288x32+32+17 -conv565 -nasm $< >$@
index a990d5f..fee1e7a 100644 (file)
@@ -164,6 +164,18 @@ void draw_mouse_pointer(uint16_t *fb)
        }
 }
 
+void cs_puts(void *fb, int x, int y, const char *str)
+{
+       while(*str) {
+               int c = *str++;
+
+               if(isalpha(c)) {
+                       cs_font(fb, x, y, toupper(c) - 'A');
+               }
+               x += 14;
+       }
+}
+
 static void change_screen(int idx)
 {
        printf("change screen %d\n", idx);
index b55ad4d..a3cc66a 100644 (file)
@@ -40,4 +40,10 @@ void mouse_orbit_update(float *theta, float *phi, float *dist);
 
 void draw_mouse_pointer(uint16_t *fb);
 
+/* compiled sprites available */
+void cs_font(void *fb, int x, int y, int idx);
+
+/* helper to print text with cs_font */
+void cs_puts(void *fb, int x, int y, const char *str);
+
 #endif /* DEMO_H_ */
index b39778d..68a8c7f 100644 (file)
@@ -96,9 +96,15 @@ void scr_update(void)
        }
 }
 
+
 void scr_draw(void)
 {
-       if(cur) cur->draw();
+       if(cur) {
+               cur->draw();
+
+               /* print screen name */
+               cs_puts(fb_pixels, 0, 0, cur->name);
+       }
 }
 
 void scr_keypress(int key)
index 5bece2d..d1f024b 100644 (file)
@@ -126,11 +126,19 @@ const char *prefixfmt[] = {
        "tiletab:\n",
 
        /* NASM template */
+       /* TODO hardcoding the 16bpp changes for now, generalize later
+        *      and while we're at it, let's get rid of the mul too ...
+        */
        "\tglobal %s\n"
        "%s:\n"
        "\tmov eax, [esp + 12]\n"
-       "\tmov ecx, %d\n"
-       "\tmul ecx\n"
+       ";\tmov ecx, %d\n"
+       ";\tmul ecx\n"
+       "\tmov ecx, eax\n"
+       "\tshl eax, 9\n"
+       "\tshl ecx, 7\n"
+       "\tadd eax, ecx\n"
+       "\tadd eax, [esp + 8]\n"
        "\tadd eax, [esp + 8]\n"
        "\tadd eax, [esp + 4]\n"
        "\tmov edx, eax\n"