int cbasebal_vh_start(void) { int i; cbasebal_textram = (unsigned char*)malloc(0x1000); cbasebal_scrollram = (unsigned char*)malloc(0x1000); bg_tilemap = tilemap_create(get_bg_tile_info,tilemap_scan_rows,TILEMAP_OPAQUE, 16,16,64,32); fg_tilemap = tilemap_create(get_fg_tile_info,tilemap_scan_rows,TILEMAP_TRANSPARENT,8,8,64,32); if (!cbasebal_textram || !cbasebal_scrollram || !bg_tilemap || !fg_tilemap) { cbasebal_vh_stop(); return 1; } fg_tilemap->transparent_pen = 3; #define COLORTABLE_START(gfxn,color_code) Machine->drv->gfxdecodeinfo[gfxn].color_codes_start + \ color_code * Machine->gfx[gfxn]->color_granularity #define GFX_COLOR_CODES(gfxn) Machine->gfx[gfxn]->total_colors #define GFX_ELEM_COLORS(gfxn) Machine->gfx[gfxn]->color_granularity palette_init_used_colors(); /* chars */ for (i = 0;i < GFX_COLOR_CODES(0);i++) { memset(&palette_used_colors[COLORTABLE_START(0,i)], PALETTE_COLOR_USED, GFX_ELEM_COLORS(0)-1); } /* bg tiles */ for (i = 0;i < GFX_COLOR_CODES(1);i++) { memset(&palette_used_colors[COLORTABLE_START(1,i)], PALETTE_COLOR_USED, GFX_ELEM_COLORS(1)); } /* sprites */ for (i = 0;i < GFX_COLOR_CODES(2);i++) { memset(&palette_used_colors[COLORTABLE_START(2,i)], PALETTE_COLOR_VISIBLE, GFX_ELEM_COLORS(2)-1); } return 0; }
/*************************************************************************** Start the video hardware emulation. ***************************************************************************/ int lwings_vh_start(void) { int i; if (generic_vh_start() != 0) return 1; if ((dirtybuffer2 = (unsigned char *)gp2x_malloc(lwings_backgroundram_size)) == 0) { generic_vh_stop(); return 1; } fast_memset(dirtybuffer2,1,lwings_backgroundram_size); if ((dirtybuffer4 = (unsigned char *)gp2x_malloc(lwings_backgroundram_size)) == 0) { generic_vh_stop(); return 1; } fast_memset(dirtybuffer4,1,lwings_backgroundram_size); /* the background area is twice as tall as the screen */ if ((tmpbitmap2 = osd_new_bitmap(2*Machine->drv->screen_width, 2*Machine->drv->screen_height,Machine->scrbitmap->depth)) == 0) { gp2x_free(dirtybuffer2); generic_vh_stop(); return 1; } #define COLORTABLE_START(gfxn,color_code) Machine->drv->gfxdecodeinfo[gfxn].color_codes_start + \ color_code * Machine->gfx[gfxn]->color_granularity #define GFX_COLOR_CODES(gfxn) Machine->gfx[gfxn]->total_colors #define GFX_ELEM_COLORS(gfxn) Machine->gfx[gfxn]->color_granularity fast_memset(palette_used_colors,PALETTE_COLOR_UNUSED,Machine->drv->total_colors * sizeof(unsigned char)); /* chars */ for (i = 0;i < GFX_COLOR_CODES(0);i++) { fast_memset(&palette_used_colors[COLORTABLE_START(0,i)], PALETTE_COLOR_USED, GFX_ELEM_COLORS(0)); palette_used_colors[COLORTABLE_START(0,i) + GFX_ELEM_COLORS(0)-1] = PALETTE_COLOR_TRANSPARENT; } /* bg tiles */ for (i = 0;i < GFX_COLOR_CODES(1);i++) { fast_memset(&palette_used_colors[COLORTABLE_START(1,i)], PALETTE_COLOR_USED, GFX_ELEM_COLORS(1)); } /* sprites */ for (i = 0;i < GFX_COLOR_CODES(2);i++) { fast_memset(&palette_used_colors[COLORTABLE_START(2,i)], PALETTE_COLOR_USED, GFX_ELEM_COLORS(2)); } return 0; }