static RLEBitmap *rleCreate(unsigned int w, unsigned int h);
static void rleDestroy(RLEBitmap *b);
-static void rleBlit(unsigned short *dst, int dstW, int dstH, int dstStride,
+static void rleBlit(unsigned short *dst, int dstW, int dstH, int dstStride,
RLEBitmap *bitmap, int blitX, int blitY);
static void rleBlitScale(unsigned short *dst, int dstW, int dstH, int dstStride,
RLEBitmap *bitmap, int blitX, int blitY, float scaleX, float scaleY);
static void updatePropeller(float t);
-extern void drawFps(unsigned short *vram);
-
#define BG_FILENAME "data/grise.png"
#define GROBJ_01_FILENAME "data/grobj_01.png"
static unsigned short *background = 0;
-static unsigned int backgroundW = 0;
-static unsigned int backgroundH = 0;
+static int backgroundW = 0;
+static int backgroundH = 0;
static unsigned int lastFrameTime = 0;
static float lastFrameDuration = 0.0f;
static int scrollModTable[REFLECTION_HEIGHT];
static float nearScrollAmount = 0.0f;
-static char miniFXBuffer[1024];
+static unsigned char miniFXBuffer[1024];
static RLEBitmap *grobj = 0;
static RLEBitmap *rlePropeller = 0;
init,
destroy,
start,
- stop,
+ 0,
draw
};
processNormal();
-#ifdef MIKE_PC
- return 0xCAFE;
-#else
return 0;
-#endif
}
static void destroy(void)
lastFrameTime = time_msec;
}
-static void stop(long trans_time)
-{
-}
-
-
-
static void draw(void)
-{
+{
int scroll = MIN_SCROLL + (MAX_SCROLL - MIN_SCROLL) * mouse_x / fb_width;
unsigned short *dst = backBuffer + PIXEL_PADDING;
unsigned short *src = background + scroll;
src += backgroundW;
dst += BB_SIZE;
}
-
+
/* Create scroll offsets for all scanlines of the normalmap */
updateScrollTables(lastFrameDuration);
- /* Render the baked reflection one scanline below its place, so that
+ /* Render the baked reflection one scanline below its place, so that
* the displacement that follows will be done in a cache-friendly way
*/
src -= PIXEL_PADDING; /* We want to also fill the PADDING pixels here */
/* Then after displacement, blit the objects */
for (i = 0; i < 5; i++) rleBlit(backBuffer + PIXEL_PADDING, fb_width, fb_height, BB_SIZE, rlePropeller, 134 + (i-3) * 60, 100);
-
+
/* Blit effect to framebuffer */
src = backBuffer + PIXEL_PADDING;
dst = vmem_back;
for (scanline = 0; scanline < fb_height; scanline++) {
memcpy(dst, src, fb_width * 2);
- src += BB_SIZE;
+ src += BB_SIZE;
dst += fb_width;
}
- drawFps(vmem_back);
-
swap_buffers(0);
}
static void updateScrollTables(float dt) {
int i = 0;
-
+
nearScrollAmount += dt * NEAR_SCROLL_SPEED;
nearScrollAmount = (float) fmod(nearScrollAmount, 512.0f);
}
/* -------------------------------------------------------------------------------------------------
- * RLE STUFF
+ * RLE STUFF
* -------------------------------------------------------------------------------------------------
*/
/* Limit streak count per scanline so we can directly jump to specific scanline */
static void rleDistributeStreaks(RLEBitmap *bitmap) {
int scanline, halfW = bitmap->w >> 1;
unsigned char *ptr, tmp;
-
+
ptr = bitmap->scans;
for (scanline = 0; scanline < bitmap->h; scanline++) {
if (ptr[0] >= halfW) {
}
static void rleBlit(unsigned short *dst, int dstW, int dstH, int dstStride,
- RLEBitmap *bitmap, int blitX, int blitY)
+ RLEBitmap *bitmap, int blitX, int blitY)
{
int scanline = 0;
int streakPos = 0;
t += 1.0f;
ti = (*((unsigned int*)&t)) & 0x7FFFFF;
-
+
for (i = 0; i < RLE_BYTES_PER_SCANLINE; i++) {
if (*a == 0) {
*output++ = *b++;
int scaleXFixed;
static unsigned char scan[512];
- int blitW = (int)(bitmap->w * scaleX + 0.5f);
+ /*int blitW = (int)(bitmap->w * scaleX + 0.5f);*/
int blitH = (int)(bitmap->h * scaleY + 0.5f);
/* From this point on, scaleY will be inverted */
int scaleXFixed;
static unsigned char scan[512];
- int blitW = (int)(bitmap->w * scaleX + 0.5f);
+ /*int blitW = (int)(bitmap->w * scaleX + 0.5f);*/
int blitH = (int)(bitmap->h * scaleY + 0.5f);
/* From this point on, scaleY will be inverted */
static void updatePropeller(float t) {
int i, j;
int cx, cy, count = 0;
- char *dst;
+ unsigned char *dst;
float x = 0.0f;
float y = 18.0f;
float nx, ny;