From: John Tsiombikas Date: Fri, 9 Sep 2016 04:20:44 +0000 (+0300) Subject: Merge branch 'master' of goat:git/dosdemo X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=commitdiff_plain;h=a73725eaba20aa030857b8142feb065777b3905d;hp=c9f6f3f5f55af44352b94b55ecca0d7098bfab5e Merge branch 'master' of goat:git/dosdemo --- diff --git a/dosdemo.vcxproj b/dosdemo.vcxproj index ecf8ad3..a1791c3 100644 --- a/dosdemo.vcxproj +++ b/dosdemo.vcxproj @@ -51,7 +51,7 @@ Level3 Disabled - WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + WIN32;_USE_MATH_DEFINES;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) $(ProjectDir)\src;$(ProjectDir)\src\sdl;$(ProjectDir)\libs\imago\src;%(AdditionalIncludeDirectories) 4996;4244 @@ -70,7 +70,7 @@ MaxSpeed true true - WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + WIN32;_USE_MATH_DEFINES;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) $(ProjectDir)\src;$(ProjectDir)\src\sdl;$(ProjectDir)\libs\imago\src;%(AdditionalIncludeDirectories) 4996;4244 @@ -84,10 +84,13 @@ + + + diff --git a/dosdemo.vcxproj.filters b/dosdemo.vcxproj.filters index 50d3cf8..0af8b7c 100644 --- a/dosdemo.vcxproj.filters +++ b/dosdemo.vcxproj.filters @@ -31,6 +31,15 @@ src + + src + + + src + + + src + diff --git a/src/grise.c b/src/grise.c index fcee596..55d4929 100644 --- a/src/grise.c +++ b/src/grise.c @@ -10,6 +10,7 @@ /* APPROX. 170 FPS Minimum */ #define BG_FILENAME "data/grise.png" +#define GROBJ_01_FILENAME "data/grobj_01.png" #define BB_SIZE 512 /* Let's use a power of 2. Maybe we'll zoom/rotate the effect */ @@ -38,6 +39,8 @@ static void processNormal(); static void initScrollTables(); static void updateScrollTables(float dt); +static void rleEncode(unsigned char *pixels, unsigned int w, unsigned int h); + static unsigned short *background = 0; static unsigned int backgroundW = 0; static unsigned int backgroundH = 0; @@ -72,9 +75,13 @@ struct screen *grise_screen(void) static int init(void) { + unsigned char *reflectedObject; + int reflectedObjectW, reflectedObjectH; + /* Allocate back buffer */ backBuffer = (unsigned short*) malloc(BB_SIZE * BB_SIZE * sizeof(unsigned short)); + /* grise.png contains the background (horizon), baked reflection and normalmap for displacement */ if (!(background = img_load_pixels(BG_FILENAME, &backgroundW, &backgroundH, IMG_FMT_RGBA32))) { fprintf(stderr, "failed to load image " BG_FILENAME "\n"); return -1; @@ -83,6 +90,16 @@ static int init(void) /* Convert to 16bpp */ convert32To16((unsigned int*)background, background, backgroundW * NORMALMAP_SCANLINE); /* Normalmap will keep its 32 bit color */ + /* Load reflected objects */ + if (!(reflectedObject = img_load_pixels(GROBJ_01_FILENAME, &reflectedObjectW, &reflectedObjectH, IMG_FMT_GREY8))) { + fprintf(stderr, "failed to load image " GROBJ_01_FILENAME "\n"); + return -1; + } + + rleEncode(reflectedObject, reflectedObjectW, reflectedObjectH); + + img_free_pixels(reflectedObject); + initScrollTables(); processNormal(); @@ -246,3 +263,17 @@ static void updateScrollTables(float dt) { scrollTableRounded[i] = (int)(scrollTable[i] + 0.5f) % scrollModTable[i]; } } + +static void rleEncode(unsigned char *pixels, unsigned int w, unsigned int h) { + int scanline; + int i; + int skipping = 1; + + for (scanline = 0; scanline < h; scanline++) { + for (i = 0; i < w; i++) { + if (*pixels++) { + + } + } + } +}