/* raster callback (virtual HBLANK) */ static void raster_callback (int line) { int pos =- 1; RGB color; if (line==1) pos = pos_background[0]; else if (line==32) pos = pos_background[1]; else if (line==48) pos = pos_background[2]; else if (line==64) pos = pos_background[3]; else if (line==112) pos = pos_background[4]; else if (line >= 152) pos = lerp (line, 152,224, pos_background[4], pos_background[5]); if (pos != -1) TLN_SetLayerPosition (LAYER_BACKGROUND, fix2int(pos), 0); /* background color gradients */ if (line < 112) { InterpolateColor (line, 0,112, &sky[0], &sky[1], &color); TLN_SetBGColor (color.r, color.g, color.b); } else if (line >= 144) { InterpolateColor (line, 144,HEIGHT, &sky[2], &sky[3], &color); TLN_SetBGColor (color.r, color.g, color.b); } }
/* entry point */ int main (int argc, char* argv[]) { TLN_Tilemap tilemap; int frame = 0; /* setup engine */ TLN_Init (WIDTH, HEIGHT, 1,0,0); /* load layer */ TLN_SetLoadPath ("assets/sonic"); tilemap = TLN_LoadTilemap ("Sonic_md_fg1.tmx", NULL); /* setup the layer */ TLN_SetLayer (0, NULL, tilemap); TLN_SetBGColor (32,32,128); /* main loop */ TLN_CreateWindow (NULL, 0); while (TLN_ProcessWindow ()) { /* scroll the layer, one pixel per frame */ TLN_SetLayerPosition (0, frame, 0); /* render to the window */ TLN_DrawFrame (frame); frame++; } /* release resources */ TLN_DeleteTilemap (tilemap); TLN_Deinit (); return 0; }
/* entry point */ int main (int argc, char* argv[]) { /* setup engine */ TLN_Init (WIDTH, HEIGHT, 1,0,0); TLN_SetBGColor (0,128,238); TLN_SetRenderTarget (framebuffer, WIDTH * 4); /* load layer (tileset + tilemap) */ tileset = TLN_LoadTileset ("Sonic_md_bg1.tsx"); tilemap = TLN_LoadTilemap ("Sonic_md_bg1.tmx", "Layer 1"); /* setup the layer */ if (tileset && tilemap) TLN_SetLayer (0, tileset, tilemap); /* main loop */ while (1) { /* scroll the layer, one pixel per frame */ TLN_SetLayerPosition (0, frame, 0); /* render to the window */ TLN_UpdateFrame (frame); frame++; } /* release resources */ TLN_DeleteTileset (tileset); TLN_DeleteTilemap (tilemap); TLN_Deinit (); return 0; }
/* entry point */ int main (int argc, char* argv[]) { int y; /* setup engine */ TLN_Init (WIDTH, HEIGHT, MAX_LAYER,0,0); TLN_SetBGColor (0,128,238); TLN_CreateWindow ("overlay.bmp", false); /* load layer (tileset + tilemap) */ LoadMap (MAP_SKY, "NamcoHorizon"); LoadMap (MAP_TREES, "NamcoTrees"); LoadMap (MAP_ROAD1, "NamcoRoad1"); LoadMap (MAP_ROAD2, "NamcoRoad2"); TLN_SetRasterCallback (raster_callback); /* init road */ s0 = 0.03f; s1 = 1.0f; sf = (int)(s1/s0); for (y=0; y<ROAD_H; y++) { road[y].s = lerp (y, 0,ROAD_H, s0,s1); //road[y].s = ((y*49)/143) + 1; road[y].z = (int)500/road[y].s; //road[y].z = 500*50/road[y].s; road[y].t = lerp(road[y].z, 1,sf, 384,0)/50; curve[ROAD_H - y - 1] = (y*(y+1)/2)/64; } /* main loop */ while (TLN_ProcessWindow ()) { /* render to the window */ TLN_DrawFrame (frame); frame++; } /* release resources */ FreeMap (MAP_SKY); FreeMap (MAP_TREES); FreeMap (MAP_ROAD1); FreeMap (MAP_ROAD2); TLN_DeleteWindow (); TLN_Deinit (); return 0; }
int main (int argc, char* argv[]) { int c; TLN_Tilemap tilemap = NULL; TLN_Spriteset spriteset = NULL; /* basic setup */ TLN_Init(WIDTH, HEIGHT, 1, 1, 1); TLN_SetBGColor (0,128,238); TLN_SetRenderTarget(framebuffer, WIDTH * 4); TLN_SetLoadPath("../assets/sonic"); TLN_SetLogLevel(TLN_LOG_VERBOSE); printf("Tilengine version %06X\n", TLN_GetVersion()); /* test layer */ tilemap = TLN_LoadTilemap("dummy", NULL); for (c = 0; c < 2; c++) { TLN_SetLayer(0, NULL, tilemap); if (tilemap == NULL) tilemap = TLN_LoadTilemap("Sonic_md_bg1.tmx", NULL); } TLN_SetLayerPosition(1, 0, 0); TLN_SetLayerPosition(0, 0, 0); /* test sprite */ spriteset = TLN_LoadSpriteset("dummy"); for (c = 0; c < 2; c++) { TLN_ConfigSprite(0, spriteset, 0); if (spriteset == NULL) spriteset = TLN_LoadSpriteset("smw_sprite"); } TLN_SetSpritePosition(1, 10, 10); TLN_SetSpritePosition(0, 10, 10); TLN_UpdateFrame(0); TLN_DeleteSpriteset(spriteset); TLN_DeleteTilemap(tilemap); TLN_Deinit (); return 0; }
/* entry point */ int main (int argc, char *argv[]) { int c; int pitch, size; BYTE* framebuffer; DWORD t0, t1; /* setup engine */ TLN_Init (WIDTH,HEIGHT, MAX_LAYER, 0, 1); TLN_SetRasterCallback (raster_callback); TLN_SetBGColor (0,128,238); /* load resources*/ LoadLayer (LAYER_FOREGROUND, "Sonic_md_fg1"); LoadLayer (LAYER_BACKGROUND, "Sonic_md_bg1"); /* load sequences */ sp = TLN_LoadSequencePack ("Sonic_md_seq.sqx"); sequence = TLN_FindSequence (sp, "seq_water"); /* assign color sequence to various entries in palette */ palette = TLN_GetTilesetPalette (layers[LAYER_BACKGROUND].tileset); TLN_SetPaletteAnimation (0, palette, sequence, false); /* compute increments for variable background scrolling speeds */ inc_background[0] = float2fix(0.562f); inc_background[1] = float2fix(0.437f); inc_background[2] = float2fix(0.375f); inc_background[3] = float2fix(0.625f); inc_background[4] = float2fix(1.0f); inc_background[5] = float2fix(2.0f); /* framebuffer */ pitch = WIDTH*4; size = pitch*HEIGHT; framebuffer = malloc (size); TLN_SetRenderTarget (framebuffer, pitch); /* main loop */ printf ("Rendering 5 seconds... "); speed = 1.0; t0 = t1 = TLN_GetTicks (); while (t1 - t0 < 5000) { /* timekeeper */ time = frame; /* scroll */ pos_foreground += (int2fix(3)*speed); TLN_SetLayerPosition (LAYER_FOREGROUND, fix2int(pos_foreground), ypos); for (c=0; c<6; c++) pos_background[c] += (inc_background[c] * speed); /* render to window */ TLN_UpdateFrame (time); frame++; t1 = TLN_GetTicks (); } printf ("%d fps\n", frame*1000/(t1 - t0)); /* deinit */ free (framebuffer); FreeLayer (LAYER_FOREGROUND); FreeLayer (LAYER_BACKGROUND); TLN_DeleteSequencePack (sp); TLN_Deinit (); return 0; }
JNIEXPORT void JNICALL Java_Tilengine_SetBGColor (JNIEnv* env, jobject thisobj, jbyte r, jbyte g, jbyte b) { TLN_SetBGColor (r, g, b); }