Oh no
authorMichael Georgoulopoulos <mgeorgoulopoulos@gmail.com>
Sun, 16 Oct 2016 13:20:28 +0000 (16:20 +0300)
committerMichael Georgoulopoulos <mgeorgoulopoulos@gmail.com>
Sun, 16 Oct 2016 13:20:28 +0000 (16:20 +0300)
dosdemo.vcxproj
dosdemo.vcxproj.filters
src/thunder.c [new file with mode: 0644]
thunder.c [deleted file]

index 544e97f..f15edc4 100644 (file)
@@ -97,9 +97,9 @@
     <ClCompile Include="src\screen.c" />\r
     <ClCompile Include="src\sdl\main.c" />\r
     <ClCompile Include="src\sdl\music.c" />\r
+    <ClCompile Include="src\thunder.c" />\r
     <ClCompile Include="src\tinyfps.c" />\r
     <ClCompile Include="src\tunnel.c" />\r
-    <ClCompile Include="thunder.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="src\cfgopt.h" />\r
index 50a2510..747ba6a 100644 (file)
@@ -55,7 +55,7 @@
     <ClCompile Include="src\bump.c">\r
       <Filter>src</Filter>\r
     </ClCompile>\r
-    <ClCompile Include="thunder.c">\r
+    <ClCompile Include="src\thunder.c">\r
       <Filter>src</Filter>\r
     </ClCompile>\r
   </ItemGroup>\r
diff --git a/src/thunder.c b/src/thunder.c
new file mode 100644 (file)
index 0000000..08c094e
--- /dev/null
@@ -0,0 +1,199 @@
+/* thunder. c */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <assert.h>
+#include "imago2.h"
+#include "demo.h"
+#include "screen.h"
+
+/* Render blur in half x half dimenstions. Add one pixel padding in all 
+ * directions (2 pixels horizontally, 2 pixels vertically).
+ */
+#define BLUR_BUFFER_WIDTH (320/2 + 2)
+#define BLUR_BUFFER_HEIGHT (240/2 + 2)
+#define BLUR_BUFFER_SIZE (BLUR_BUFFER_WIDTH * BLUR_BUFFER_HEIGHT)
+static unsigned char *blurBuffer, *blurBuffer2;
+
+#define THUNDER_RECT_SIZE 4
+#define THUNDER_RANDOMNESS 80
+#define THUNDER_SECONDS 0.1f
+
+/* TODO: Load palette from file */
+static unsigned short palette[256];
+
+void clearBlurBuffer();
+void drawPatternOnBlurBuffer(int seed);
+void applyBlur();
+void blitEffect();
+void thunder(int x0, int y0, int x1, int y1, int seed, int randomness, int depth);
+
+static int init(void);
+static void destroy(void);
+static void start(long trans_time);
+static void stop(long trans_time);
+static void draw(void);
+
+static unsigned int lastFrameTime = 0;
+static float lastFrameDuration = 0.0f;
+static struct screen scr = {
+       "thunder",
+       init,
+       destroy,
+       start,
+       0,
+       draw
+};
+
+struct screen *thunder_screen(void)
+{
+       return &scr;
+}
+
+static int init(void)
+{
+       int i = 0;
+
+       blurBuffer = malloc(BLUR_BUFFER_SIZE);
+       blurBuffer2 = malloc(BLUR_BUFFER_SIZE);
+
+       clearBlurBuffer();
+
+       /* For now, map to blue */
+       for (i = 0; i < 256; i++) {
+               palette[i] = i >> 3;
+       }
+
+       return 0;
+}
+
+static void destroy(void)
+{
+       free(blurBuffer);
+       blurBuffer = 0;
+       
+       free(blurBuffer2);
+       blurBuffer2 = 0;
+}
+
+static void start(long trans_time)
+{
+       lastFrameTime = time_msec;
+}
+
+
+static float remainingThunderDuration = THUNDER_SECONDS;
+static int thunderPattern = 0;
+
+static void draw(void)
+{
+       lastFrameDuration = (time_msec - lastFrameTime) / 1000.0f;
+       lastFrameTime = time_msec;
+
+       remainingThunderDuration -= lastFrameDuration;
+       if (remainingThunderDuration <= 0) {
+               thunderPattern++;
+               remainingThunderDuration = THUNDER_SECONDS;
+       }
+       
+       
+       
+       drawPatternOnBlurBuffer(thunderPattern);
+       applyBlur();
+       blitEffect();
+
+       swap_buffers(0);
+}
+
+void clearBlurBuffer() {
+       /* Clear the whole buffer (including its padding ) */
+       memset(blurBuffer, 0, BLUR_BUFFER_SIZE);
+       memset(blurBuffer2, 0, BLUR_BUFFER_SIZE);
+}
+
+void drawPatternOnBlurBuffer(int seed) {
+       thunder(20, 20, 140, 100, seed, THUNDER_RANDOMNESS, 6);
+}
+
+void applyBlur() {
+       int i, j;
+       unsigned char *tmp;
+       unsigned char *src = blurBuffer + BLUR_BUFFER_WIDTH + 1;
+       unsigned char *dst = blurBuffer2 + BLUR_BUFFER_WIDTH + 1;
+
+       for (j = 0; j < 120; j++) {
+               for (i = 0; i < 160; i++) {
+                       *dst = (*(src - 1) + *(src + 1) + *(src - BLUR_BUFFER_WIDTH) + *(src + BLUR_BUFFER_WIDTH)) >> 2;
+                       if (*dst > 4) *dst -= 4;
+                       else *dst = 0;
+                       dst++;
+                       src++;
+               }
+               /* Just skip the padding since we went through the scanline in the inner loop (except from the padding) */
+               src += 2;
+               dst += 2;
+       }
+
+       /* Swap blur buffers */
+       tmp = blurBuffer;
+       blurBuffer = blurBuffer2;
+       blurBuffer2 = tmp;
+}
+
+void blitEffect() {
+       unsigned int *dst1 = (unsigned int*) vmem_back;
+       unsigned int *dst2 = dst1 + 160; /* We're writing two pixels at once */
+       unsigned char *src1 = blurBuffer + BLUR_BUFFER_WIDTH + 1;
+       unsigned char *src2 = src1 + BLUR_BUFFER_WIDTH;
+       unsigned char tl, tr, bl, br;
+       int i, j;
+
+       for (j = 0; j < 120; j++) {
+               for (i = 0; i < 160; i++) {
+                       tl = *src1;
+                       tr = (*src1 + *(src1 + 1)) >> 1;
+                       bl = (*src1 + *src2) >> 1;
+                       br = tr + ((*src2 + *(src2 + 1)) >> 1) >> 1;
+
+                       /* Pack 2 pixels in each 32 bit word */
+                       *dst1 = (palette[tr] << 16) | palette[tl];
+                       *dst2 = (palette[br] << 16) | palette[bl];
+
+                       dst1++;
+                       src1++;
+                       dst2++;
+                       src2++;
+               }
+               /* Again, skip padding */
+               src1 += 2;
+               src2 += 2;
+
+               /* For now, skip a scanline */
+               dst1 += 160;
+               dst2 += 160;
+       }
+
+}
+
+void thunder(int x0, int y0, int x1, int y1, int seed, int randomness, int depth) {
+       int mx = ((x0 + x1) >> 1) + rand() % randomness - randomness / 2;
+       int my = ((y0 + y1) >> 1) + rand() % randomness - randomness / 2;
+       int i, j;
+       unsigned char *dst = blurBuffer + BLUR_BUFFER_WIDTH + 1 + mx + my * BLUR_BUFFER_WIDTH;
+
+       if (depth <= 0) return;
+
+       srand(seed);
+
+       for (j = 0; j < THUNDER_RECT_SIZE; j++) {
+               memset(dst, 255, THUNDER_RECT_SIZE);
+               dst += BLUR_BUFFER_WIDTH;
+       }
+
+       thunder(x0, y0, mx, my, rand(), randomness >> 1, depth-1);
+       thunder(mx, my, x1, y1, rand(), randomness >> 1, depth - 1);
+}
+
+
+
diff --git a/thunder.c b/thunder.c
deleted file mode 100644 (file)
index 08c094e..0000000
--- a/thunder.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* thunder. c */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-#include "imago2.h"
-#include "demo.h"
-#include "screen.h"
-
-/* Render blur in half x half dimenstions. Add one pixel padding in all 
- * directions (2 pixels horizontally, 2 pixels vertically).
- */
-#define BLUR_BUFFER_WIDTH (320/2 + 2)
-#define BLUR_BUFFER_HEIGHT (240/2 + 2)
-#define BLUR_BUFFER_SIZE (BLUR_BUFFER_WIDTH * BLUR_BUFFER_HEIGHT)
-static unsigned char *blurBuffer, *blurBuffer2;
-
-#define THUNDER_RECT_SIZE 4
-#define THUNDER_RANDOMNESS 80
-#define THUNDER_SECONDS 0.1f
-
-/* TODO: Load palette from file */
-static unsigned short palette[256];
-
-void clearBlurBuffer();
-void drawPatternOnBlurBuffer(int seed);
-void applyBlur();
-void blitEffect();
-void thunder(int x0, int y0, int x1, int y1, int seed, int randomness, int depth);
-
-static int init(void);
-static void destroy(void);
-static void start(long trans_time);
-static void stop(long trans_time);
-static void draw(void);
-
-static unsigned int lastFrameTime = 0;
-static float lastFrameDuration = 0.0f;
-static struct screen scr = {
-       "thunder",
-       init,
-       destroy,
-       start,
-       0,
-       draw
-};
-
-struct screen *thunder_screen(void)
-{
-       return &scr;
-}
-
-static int init(void)
-{
-       int i = 0;
-
-       blurBuffer = malloc(BLUR_BUFFER_SIZE);
-       blurBuffer2 = malloc(BLUR_BUFFER_SIZE);
-
-       clearBlurBuffer();
-
-       /* For now, map to blue */
-       for (i = 0; i < 256; i++) {
-               palette[i] = i >> 3;
-       }
-
-       return 0;
-}
-
-static void destroy(void)
-{
-       free(blurBuffer);
-       blurBuffer = 0;
-       
-       free(blurBuffer2);
-       blurBuffer2 = 0;
-}
-
-static void start(long trans_time)
-{
-       lastFrameTime = time_msec;
-}
-
-
-static float remainingThunderDuration = THUNDER_SECONDS;
-static int thunderPattern = 0;
-
-static void draw(void)
-{
-       lastFrameDuration = (time_msec - lastFrameTime) / 1000.0f;
-       lastFrameTime = time_msec;
-
-       remainingThunderDuration -= lastFrameDuration;
-       if (remainingThunderDuration <= 0) {
-               thunderPattern++;
-               remainingThunderDuration = THUNDER_SECONDS;
-       }
-       
-       
-       
-       drawPatternOnBlurBuffer(thunderPattern);
-       applyBlur();
-       blitEffect();
-
-       swap_buffers(0);
-}
-
-void clearBlurBuffer() {
-       /* Clear the whole buffer (including its padding ) */
-       memset(blurBuffer, 0, BLUR_BUFFER_SIZE);
-       memset(blurBuffer2, 0, BLUR_BUFFER_SIZE);
-}
-
-void drawPatternOnBlurBuffer(int seed) {
-       thunder(20, 20, 140, 100, seed, THUNDER_RANDOMNESS, 6);
-}
-
-void applyBlur() {
-       int i, j;
-       unsigned char *tmp;
-       unsigned char *src = blurBuffer + BLUR_BUFFER_WIDTH + 1;
-       unsigned char *dst = blurBuffer2 + BLUR_BUFFER_WIDTH + 1;
-
-       for (j = 0; j < 120; j++) {
-               for (i = 0; i < 160; i++) {
-                       *dst = (*(src - 1) + *(src + 1) + *(src - BLUR_BUFFER_WIDTH) + *(src + BLUR_BUFFER_WIDTH)) >> 2;
-                       if (*dst > 4) *dst -= 4;
-                       else *dst = 0;
-                       dst++;
-                       src++;
-               }
-               /* Just skip the padding since we went through the scanline in the inner loop (except from the padding) */
-               src += 2;
-               dst += 2;
-       }
-
-       /* Swap blur buffers */
-       tmp = blurBuffer;
-       blurBuffer = blurBuffer2;
-       blurBuffer2 = tmp;
-}
-
-void blitEffect() {
-       unsigned int *dst1 = (unsigned int*) vmem_back;
-       unsigned int *dst2 = dst1 + 160; /* We're writing two pixels at once */
-       unsigned char *src1 = blurBuffer + BLUR_BUFFER_WIDTH + 1;
-       unsigned char *src2 = src1 + BLUR_BUFFER_WIDTH;
-       unsigned char tl, tr, bl, br;
-       int i, j;
-
-       for (j = 0; j < 120; j++) {
-               for (i = 0; i < 160; i++) {
-                       tl = *src1;
-                       tr = (*src1 + *(src1 + 1)) >> 1;
-                       bl = (*src1 + *src2) >> 1;
-                       br = tr + ((*src2 + *(src2 + 1)) >> 1) >> 1;
-
-                       /* Pack 2 pixels in each 32 bit word */
-                       *dst1 = (palette[tr] << 16) | palette[tl];
-                       *dst2 = (palette[br] << 16) | palette[bl];
-
-                       dst1++;
-                       src1++;
-                       dst2++;
-                       src2++;
-               }
-               /* Again, skip padding */
-               src1 += 2;
-               src2 += 2;
-
-               /* For now, skip a scanline */
-               dst1 += 160;
-               dst2 += 160;
-       }
-
-}
-
-void thunder(int x0, int y0, int x1, int y1, int seed, int randomness, int depth) {
-       int mx = ((x0 + x1) >> 1) + rand() % randomness - randomness / 2;
-       int my = ((y0 + y1) >> 1) + rand() % randomness - randomness / 2;
-       int i, j;
-       unsigned char *dst = blurBuffer + BLUR_BUFFER_WIDTH + 1 + mx + my * BLUR_BUFFER_WIDTH;
-
-       if (depth <= 0) return;
-
-       srand(seed);
-
-       for (j = 0; j < THUNDER_RECT_SIZE; j++) {
-               memset(dst, 255, THUNDER_RECT_SIZE);
-               dst += BLUR_BUFFER_WIDTH;
-       }
-
-       thunder(x0, y0, mx, my, rand(), randomness >> 1, depth-1);
-       thunder(mx, my, x1, y1, rand(), randomness >> 1, depth - 1);
-}
-
-
-