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); } }
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; } } }
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; } } }
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; } } }