Example #1
0
void sliver_state::render_jpeg()
{
	int x;
	int addr = (int)m_jpeg2 + (((int)m_jpeg1) << 16);

	m_bitmap_bg.fill(0);
	if (addr < 0)
	{
		return;
	}

	//printf("access address %04x\n", addr);

	/* Access libJPEG */
	{
		struct jpeg_decompress_struct cinfo;
		struct jpeg_error_mgr jerr;
		JSAMPARRAY buffer;

		cinfo.err = jpeg_std_error(&jerr);
		jpeg_create_decompress(&cinfo);

		jpeg_mem_src(&cinfo, memregion("user2")->base()+addr, memregion("user2")->bytes()-addr);

		jpeg_read_header(&cinfo, TRUE);
		jpeg_start_decompress(&cinfo);

		int row_stride = cinfo.output_width * cinfo.output_components;

		buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);

		while (cinfo.output_scanline < cinfo.output_height)
		{
			jpeg_read_scanlines(&cinfo, buffer, 1);
			int y = cinfo.output_scanline;

			for (x = 0; x < row_stride/3; x++)
			{
				UINT8 b = buffer[0][(x*3)];
				UINT8 g = buffer[0][(x*3)+1];
				UINT8 r = buffer[0][(x*3)+2];
				plot_pixel_rgb(x - x_offset + m_jpeg_x, y - y_offset - m_jpeg_y, r, g, b);

			}

		}

		jpeg_finish_decompress(&cinfo);
		jpeg_destroy_decompress(&cinfo);


	}

}
Example #2
0
static void render_jpeg(void)
{
	int x,y;
	int addr=jpeg_addr;
	fillbitmap(sliver_bitmap_bg, 0,0);
	if(jpeg_addr<0)
	{
		return;
	}
	for (y=0;y<jpeg_h;y++)
	{
		for (x=0;x<jpeg_w;x++)
		{
			plot_pixel_rgb(x-x_offset+jpeg_x,jpeg_h-y-y_offset-jpeg_y,memory_region(REGION_USER3)[addr],memory_region(REGION_USER3)[addr+1],memory_region(REGION_USER3)[addr+2]);
			addr+=3;
		}
	}
}
Example #3
0
static void render_jpeg(running_machine *machine)
{
	int x, y;
	int addr = jpeg_addr;
	UINT8 *rom;

	bitmap_fill(sliver_bitmap_bg, 0, 0);
	if(jpeg_addr < 0)
	{
		return;
	}
	rom = memory_region(machine, "user3");
	for (y = 0; y < jpeg_h; y++)
	{
		for (x = 0; x < jpeg_w; x++)
		{
			plot_pixel_rgb(x - x_offset + jpeg_x, jpeg_h - y - y_offset - jpeg_y, rom[addr], rom[addr + 1], rom[addr + 2]);
			addr+=3;
		}
	}
}
Example #4
0
static void render_jpeg(running_machine &machine)
{
	sliver_state *state = machine.driver_data<sliver_state>();
	int x, y;
	int addr = state->m_jpeg_addr;
	UINT8 *rom;

	bitmap_fill(state->m_bitmap_bg, 0, 0);
	if (addr < 0)
	{
		return;
	}

	rom = machine.region("user3")->base();
	for (y = 0; y < state->m_jpeg_h; y++)
	{
		for (x = 0; x < state->m_jpeg_w; x++)
		{
			plot_pixel_rgb(state, x - x_offset + state->m_jpeg_x, state->m_jpeg_h - y - y_offset - state->m_jpeg_y, rom[addr], rom[addr + 1], rom[addr + 2]);
			addr+=3;
		}
	}
}