diff options
Diffstat (limited to 'engines/sci/gfx/res_view.cpp')
-rw-r--r-- | engines/sci/gfx/res_view.cpp | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/engines/sci/gfx/res_view.cpp b/engines/sci/gfx/res_view.cpp index c10f62f676..e4f6148fc0 100644 --- a/engines/sci/gfx/res_view.cpp +++ b/engines/sci/gfx/res_view.cpp @@ -86,9 +86,6 @@ gfx_pixmap_t *gfxr_draw_cel0(int id, int loop, int cel, byte *resource, int size int count = op >> 4; int color = op & 0xf; - if (view->flags & GFX_PIXMAP_FLAG_PALETTIZED) - color = view->translation[color]; - if (color == color_key) color = retval->color_key; @@ -116,9 +113,6 @@ gfx_pixmap_t *gfxr_draw_cel0(int id, int loop, int cel, byte *resource, int size int count = op >> 4; int color = op & 0xf; - if (view && (view->flags & GFX_PIXMAP_FLAG_PALETTIZED)) - color = view->translation[color]; - if (color == color_key) color = retval->color_key; @@ -135,65 +129,6 @@ gfx_pixmap_t *gfxr_draw_cel0(int id, int loop, int cel, byte *resource, int size return retval; } -gfxr_view_t *getEGAView(int id, byte *resource, int size, int palette) { - int i; - gfxr_view_t *view; - int mirror_bitpos = 1; - int mirror_bytepos = V0_MIRROR_LIST_OFFSET; - int palette_ofs = READ_LE_UINT16(resource + 6); - - if (size < V0_FIRST_LOOP_OFFSET + 8) { - error("Attempt to draw empty view %04x", id); - return NULL; - } - - view = (gfxr_view_t *)malloc(sizeof(gfxr_view_t)); - view->ID = id; - - view->loops_nr = resource[V0_LOOPS_NR_OFFSET]; - - // Set palette - view->flags = 0; - view->palette = gfx_sci0_image_pal[sci0_palette]->getref(); - - if ((palette_ofs) && (palette >= 0)) { - byte *paldata = resource + palette_ofs + (palette * GFX_SCI0_IMAGE_COLORS_NR); - - for (i = 0; i < GFX_SCI0_IMAGE_COLORS_NR; i++) - view->translation[i] = *(paldata++); - - view->flags |= GFX_PIXMAP_FLAG_PALETTIZED; - } - - if (view->loops_nr * 2 + V0_FIRST_LOOP_OFFSET > size) { - error("View %04x: Not enough space in resource to accomodate for the claimed %d loops", id, view->loops_nr); - free(view); - return NULL; - } - - view->loops = (gfxr_loop_t*)malloc(sizeof(gfxr_loop_t) * ((view->loops_nr) ? view->loops_nr : 1)); /* Alloc 1 if no loop */ - - for (i = 0; i < view->loops_nr; i++) { - int loop_offset = READ_LE_UINT16(resource + V0_FIRST_LOOP_OFFSET + (i << 1)); - int mirrored = resource[mirror_bytepos] & mirror_bitpos; - - if ((mirror_bitpos <<= 1) == 0x100) { - mirror_bytepos++; - mirror_bitpos = 1; - } - - view->loops[i].cels_nr = READ_LE_UINT16(resource + loop_offset); - view->loops[i].cels = (gfx_pixmap_t**)calloc(view->loops[i].cels_nr, sizeof(gfx_pixmap_t *)); - - for (int j = 0; j < view->loops[i].cels_nr; j++) { - int cel_offset = READ_LE_UINT16(resource + loop_offset + 4 + (j << 1)); - view->loops[i].cels[j] = gfxr_draw_cel0(id, i, j, resource + cel_offset, size - cel_offset, view, mirrored); - } - } - - return view; -} - #define NEXT_LITERAL_BYTE(n) \ if (literal_pos == runlength_pos) \ runlength_pos += n; \ @@ -365,68 +300,4 @@ gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *reso return retval; } -// SCI1: -// [LoopCount:WORD] [MirrorMask:WORD] [??:WORD] [PaletteOffset:WORD] [LoopOffset0:WORD] [LoopOffset1:WORD]... -// Loop-data: -// [CelCount:WORD] [Unknown:WORD] [CelOffset0:WORD] [CelOffset1:WORD]... -// SCI11: -// [HeaderSize:WORD] [LoopCount:BYTE] [Unknown:BYTE] [??:WORD] [??:WORD] [PaletteOffset:WORD] -gfxr_view_t *getVGAView(int id, byte *resource, int size, ViewType viewType) { - uint16 palOffset = READ_LE_UINT16(resource + V1_PALETTE_OFFSET + ((viewType == kViewVga11) ? 2 : 0)); - uint16 headerSize = (viewType == kViewVga11) ? READ_LE_UINT16(resource + V2_HEADER_SIZE) : 0; - byte* seeker = resource + headerSize; - uint16 loopOffset = 0; - gfxr_view_t *view = (gfxr_view_t *)malloc(sizeof(gfxr_view_t)); - - view->ID = id; - view->flags = 0; - view->loops_nr = READ_LE_UINT16(resource + V1_LOOPS_NR_OFFSET + ((viewType == kViewVga11) ? 2 : 0)) & 0xFF; - - if (palOffset > 0) { - if (viewType == kViewVga11) - view->palette = gfxr_read_pal11(id, resource + palOffset, size - palOffset); - else - view->palette = gfxr_read_pal1(id, resource + palOffset, size - palOffset); - } else { - view->palette = NULL; - } - - view->loops = (gfxr_loop_t *)calloc(view->loops_nr, sizeof(gfxr_loop_t)); - - for (int i = 0; i < view->loops_nr; i++) { - if (viewType != kViewVga11) { - bool mirrored = READ_LE_UINT16(resource + V1_MIRROR_MASK) & (1 << i); - loopOffset = READ_LE_UINT16(resource + V1_FIRST_LOOP_OFFSET + (i << 1)); - view->loops[i].cels_nr = READ_LE_UINT16(resource + loopOffset); - view->loops[i].cels = (gfx_pixmap_t**)calloc(view->loops[i].cels_nr, sizeof(gfx_pixmap_t *)); - - for (int j = 0; j < view->loops[i].cels_nr; j++) { - int cel_offset = READ_LE_UINT16(resource + loopOffset + 4 + (j << 1)); - view->loops[i].cels[j] = gfxr_draw_cel1(id, i, j, mirrored, - resource + cel_offset, - resource + cel_offset, - size - cel_offset, - view, viewType); - } - } else { - byte copy_entry = seeker[V2_COPY_OF_LOOP]; - bool mirrored = (copy_entry != 255); - byte *buf = !mirrored ? seeker : resource + headerSize + copy_entry * resource[V2_BYTES_PER_LOOP]; - loopOffset = READ_LE_UINT16(buf + V2_LOOP_OFFSET); - view->loops[i].cels_nr = buf[V2_CELS_NUM]; - view->loops[i].cels = (gfx_pixmap_t**)calloc(view->loops[i].cels_nr, sizeof(gfx_pixmap_t *)); - - byte* celSeeker = resource + loopOffset; - for (int j = 0; j < view->loops[i].cels_nr; j++) { - view->loops[i].cels[j] = gfxr_draw_cel1(id, i, j, mirrored, resource, celSeeker, size, view, viewType); - celSeeker += resource[V2_BYTES_PER_CEL]; - } - - seeker += resource[V2_BYTES_PER_LOOP]; - } - } - - return view; -} - } // End of namespace Sci |