SCI: Add partial support for Amiga SCI1 games.
svn-id: r43549
This commit is contained in:
parent
9dbc76c459
commit
c3462a8c76
5 changed files with 49 additions and 50 deletions
|
@ -43,7 +43,7 @@ int _reset_graphics_input(EngineState *s) {
|
||||||
gfx_color_t transparent = { PaletteEntry(), 0, -1, -1, 0 };
|
gfx_color_t transparent = { PaletteEntry(), 0, -1, -1, 0 };
|
||||||
debug(2, "Initializing graphics");
|
debug(2, "Initializing graphics");
|
||||||
|
|
||||||
if (!s->resmgr->isVGA()) {
|
if (s->resmgr->getViewType() == kViewEga) {
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
if (gfxop_set_color(s->gfx_state, &(s->ega_colors[i]), gfx_sci0_image_colors[sci0_palette][i].r,
|
if (gfxop_set_color(s->gfx_state, &(s->ega_colors[i]), gfx_sci0_image_colors[sci0_palette][i].r,
|
||||||
gfx_sci0_image_colors[sci0_palette][i].g, gfx_sci0_image_colors[sci0_palette][i].b, 0, -1, -1)) {
|
gfx_sci0_image_colors[sci0_palette][i].g, gfx_sci0_image_colors[sci0_palette][i].b, 0, -1, -1)) {
|
||||||
|
|
|
@ -100,7 +100,7 @@ int GfxResManager::calculatePic(gfxr_pic_t *scaled_pic, gfxr_pic_t *unscaled_pic
|
||||||
if (_version == SCI_VERSION_1_1)
|
if (_version == SCI_VERSION_1_1)
|
||||||
gfxr_draw_pic11(unscaled_pic, flags, default_palette, res->size, res->data, &basic_style, res->id.number, _staticPalette, _portBounds);
|
gfxr_draw_pic11(unscaled_pic, flags, default_palette, res->size, res->data, &basic_style, res->id.number, _staticPalette, _portBounds);
|
||||||
else
|
else
|
||||||
gfxr_draw_pic01(unscaled_pic, flags, default_palette, res->size, res->data, &basic_style, res->id.number, _resManager->isVGA(), _staticPalette, _portBounds);
|
gfxr_draw_pic01(unscaled_pic, flags, default_palette, res->size, res->data, &basic_style, res->id.number, _resManager->getViewType(), _staticPalette, _portBounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scaled_pic && scaled_pic->undithered_buffer)
|
if (scaled_pic && scaled_pic->undithered_buffer)
|
||||||
|
@ -109,7 +109,7 @@ int GfxResManager::calculatePic(gfxr_pic_t *scaled_pic, gfxr_pic_t *unscaled_pic
|
||||||
if (_version == SCI_VERSION_1_1)
|
if (_version == SCI_VERSION_1_1)
|
||||||
gfxr_draw_pic11(scaled_pic, flags, default_palette, res->size, res->data, &style, res->id.number, _staticPalette, _portBounds);
|
gfxr_draw_pic11(scaled_pic, flags, default_palette, res->size, res->data, &style, res->id.number, _staticPalette, _portBounds);
|
||||||
else
|
else
|
||||||
gfxr_draw_pic01(scaled_pic, flags, default_palette, res->size, res->data, &style, res->id.number, _resManager->isVGA(), _staticPalette, _portBounds);
|
gfxr_draw_pic01(scaled_pic, flags, default_palette, res->size, res->data, &style, res->id.number, _resManager->getViewType(), _staticPalette, _portBounds);
|
||||||
|
|
||||||
if (!_resManager->isVGA()) {
|
if (!_resManager->isVGA()) {
|
||||||
if (need_unscaled)
|
if (need_unscaled)
|
||||||
|
@ -536,7 +536,7 @@ gfxr_view_t *GfxResManager::getView(int nr, int *loop, int *cel, int palette) {
|
||||||
int pal = (_version <= SCI_VERSION_01) ? -1 : palette;
|
int pal = (_version <= SCI_VERSION_01) ? -1 : palette;
|
||||||
view = getEGAView(resid, viewRes->data, viewRes->size, pal);
|
view = getEGAView(resid, viewRes->data, viewRes->size, pal);
|
||||||
} else {
|
} else {
|
||||||
view = getVGAView(resid, viewRes->data, viewRes->size, _staticPalette, viewType == kViewVga11);
|
view = getVGAView(resid, viewRes->data, viewRes->size, viewType);
|
||||||
|
|
||||||
if (view->palette) {
|
if (view->palette) {
|
||||||
// Palettize view
|
// Palettize view
|
||||||
|
|
|
@ -199,13 +199,13 @@ void gfxr_clear_pic0(gfxr_pic_t *pic, int titlebar_size);
|
||||||
* @param[in] resource Pointer to the resource data
|
* @param[in] resource Pointer to the resource data
|
||||||
* @param[in] style The drawing style
|
* @param[in] style The drawing style
|
||||||
* @param[in] resid The resource ID
|
* @param[in] resid The resource ID
|
||||||
* @param[in] sci1 true if SCI1, false otherwise
|
* @param[in] viewType The view type for embedded views
|
||||||
* @param[in] static_pal The static palette
|
* @param[in] static_pal The static palette
|
||||||
* @param[in] portBounds The bounds of the port being drawn to
|
* @param[in] portBounds The bounds of the port being drawn to
|
||||||
*/
|
*/
|
||||||
void gfxr_draw_pic01(gfxr_pic_t *pic, int fill_normally,
|
void gfxr_draw_pic01(gfxr_pic_t *pic, int fill_normally,
|
||||||
int default_palette, int size, byte *resource,
|
int default_palette, int size, byte *resource,
|
||||||
gfxr_pic0_params_t *style, int resid, int sci1,
|
gfxr_pic0_params_t *style, int resid, ViewType viewType,
|
||||||
Palette *static_pal, Common::Rect portBounds);
|
Palette *static_pal, Common::Rect portBounds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -321,9 +321,9 @@ Palette *gfxr_read_pal11(int id, byte *resource, int size);
|
||||||
* @param[in] isSci11 true if SCI1.1, false otherwise
|
* @param[in] isSci11 true if SCI1.1, false otherwise
|
||||||
* @return The resulting view
|
* @return The resulting view
|
||||||
*/
|
*/
|
||||||
gfxr_view_t *getVGAView(int id, byte *resource, int size, Palette *static_pal, bool isSci11);
|
gfxr_view_t *getVGAView(int id, byte *resource, int size, ViewType viewType);
|
||||||
|
|
||||||
gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *resource, byte *cel_base, int size, gfxr_view_t *view, bool isAmiga, bool isSci11);
|
gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *resource, byte *cel_base, int size, gfxr_view_t *view, ViewType viewType);
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
} // End of namespace Sci
|
} // End of namespace Sci
|
||||||
|
|
|
@ -1135,7 +1135,7 @@ extern gfx_pixmap_t *gfxr_draw_cel0(int id, int loop, int cel, byte *resource, i
|
||||||
extern void _gfx_crossblit_simple(byte *dest, byte *src, int dest_line_width, int src_line_width, int xl, int yl, int bpp);
|
extern void _gfx_crossblit_simple(byte *dest, byte *src, int dest_line_width, int src_line_width, int xl, int yl, int bpp);
|
||||||
|
|
||||||
void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size, byte *resource,
|
void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size, byte *resource,
|
||||||
gfxr_pic0_params_t *style, int resid, int sci1, Palette *static_pal, Common::Rect portBounds) {
|
gfxr_pic0_params_t *style, int resid, ViewType viewType, Palette *static_pal, Common::Rect portBounds) {
|
||||||
const int default_palette_table[GFXR_PIC0_PALETTE_SIZE] = {
|
const int default_palette_table[GFXR_PIC0_PALETTE_SIZE] = {
|
||||||
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
|
0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
|
||||||
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0x88,
|
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0x88,
|
||||||
|
@ -1189,7 +1189,7 @@ void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
case PIC_OP_SET_COLOR:
|
case PIC_OP_SET_COLOR:
|
||||||
p0printf("Set color @%d\n", pos);
|
p0printf("Set color @%d\n", pos);
|
||||||
|
|
||||||
if (!sci1) {
|
if (viewType == kViewEga) {
|
||||||
pal = *(resource + pos++);
|
pal = *(resource + pos++);
|
||||||
index = pal % GFXR_PIC0_PALETTE_SIZE;
|
index = pal % GFXR_PIC0_PALETTE_SIZE;
|
||||||
pal /= GFXR_PIC0_PALETTE_SIZE;
|
pal /= GFXR_PIC0_PALETTE_SIZE;
|
||||||
|
@ -1216,7 +1216,7 @@ void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
case PIC_OP_SET_PRIORITY:
|
case PIC_OP_SET_PRIORITY:
|
||||||
p0printf("Set priority @%d\n", pos);
|
p0printf("Set priority @%d\n", pos);
|
||||||
|
|
||||||
if (!sci1) {
|
if (viewType == kViewEga) {
|
||||||
pal = *(resource + pos++);
|
pal = *(resource + pos++);
|
||||||
index = pal % GFXR_PIC0_PALETTE_SIZE;
|
index = pal % GFXR_PIC0_PALETTE_SIZE;
|
||||||
pal /= GFXR_PIC0_PALETTE_SIZE; // Ignore pal
|
pal /= GFXR_PIC0_PALETTE_SIZE; // Ignore pal
|
||||||
|
@ -1425,7 +1425,7 @@ void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
opx = *(resource + pos++);
|
opx = *(resource + pos++);
|
||||||
p0printf("OPX: ");
|
p0printf("OPX: ");
|
||||||
|
|
||||||
if (sci1)
|
if (viewType != kViewEga)
|
||||||
opx += SCI1_OP_OFFSET; // See comment at the definition of SCI1_OP_OFFSET.
|
opx += SCI1_OP_OFFSET; // See comment at the definition of SCI1_OP_OFFSET.
|
||||||
|
|
||||||
switch (opx) {
|
switch (opx) {
|
||||||
|
@ -1509,11 +1509,13 @@ void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
bytesize = (*(resource + pos)) + (*(resource + pos + 1) << 8);
|
bytesize = (*(resource + pos)) + (*(resource + pos + 1) << 8);
|
||||||
p0printf("(%d, %d)\n", posx, posy);
|
p0printf("(%d, %d)\n", posx, posy);
|
||||||
pos += 2;
|
pos += 2;
|
||||||
if (!sci1 && !nodraw)
|
if (!nodraw) {
|
||||||
view = gfxr_draw_cel0(-1, -1, -1, resource + pos, bytesize, NULL, flags & DRAWPIC1_FLAG_MIRRORED);
|
if (viewType == kViewEga)
|
||||||
else
|
view = gfxr_draw_cel0(-1, -1, -1, resource + pos, bytesize, NULL, flags & DRAWPIC1_FLAG_MIRRORED);
|
||||||
view = gfxr_draw_cel1(-1, -1, -1, flags & DRAWPIC1_FLAG_MIRRORED, resource + pos, resource + pos,
|
else
|
||||||
bytesize, NULL, (static_pal && static_pal->size() == GFX_SCI1_AMIGA_COLORS_NR), false);
|
view = gfxr_draw_cel1(-1, -1, -1, flags & DRAWPIC1_FLAG_MIRRORED, resource + pos, resource + pos,
|
||||||
|
bytesize, NULL, viewType);
|
||||||
|
}
|
||||||
pos += bytesize;
|
pos += bytesize;
|
||||||
if (nodraw)
|
if (nodraw)
|
||||||
continue;
|
continue;
|
||||||
|
@ -1526,20 +1528,22 @@ void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
// we can only safely replace the palette if it's static
|
// we can only safely replace the palette if it's static
|
||||||
// *if it's not for some reason, we should die
|
// *if it's not for some reason, we should die
|
||||||
|
|
||||||
if (view->palette && view->palette->isShared() && !sci1) {
|
if (view->palette && view->palette->isShared() && (viewType == kViewEga)) {
|
||||||
warning("gfx_draw_pic0(): can't set a non-static palette for an embedded view");
|
warning("gfx_draw_pic0(): can't set a non-static palette for an embedded view");
|
||||||
}
|
}
|
||||||
|
|
||||||
// For SCI0, use special color mapping to copy the low
|
// For SCI0, use special color mapping to copy the low
|
||||||
// nibble of the color index to the high nibble.
|
// nibble of the color index to the high nibble.
|
||||||
|
|
||||||
if (sci1) {
|
if (viewType != kViewEga) {
|
||||||
if (static_pal && static_pal->size() == GFX_SCI1_AMIGA_COLORS_NR) {
|
if (view->palette)
|
||||||
// Assume Amiga game
|
view->palette->free();
|
||||||
|
|
||||||
|
if (viewType == kViewAmiga) {
|
||||||
pic->visual_map->palette = static_pal->getref();
|
pic->visual_map->palette = static_pal->getref();
|
||||||
|
} else {
|
||||||
|
view->palette = pic->visual_map->palette->copy();
|
||||||
}
|
}
|
||||||
if (view->palette) view->palette->free();
|
|
||||||
view->palette = pic->visual_map->palette->copy();
|
|
||||||
} else
|
} else
|
||||||
view->palette = embedded_view_pal->getref();
|
view->palette = embedded_view_pal->getref();
|
||||||
|
|
||||||
|
@ -1648,7 +1652,7 @@ void gfxr_draw_pic11(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
pic->visual_map->palette = gfxr_read_pal11(-1, resource + palette_data_ptr, 1284);
|
pic->visual_map->palette = gfxr_read_pal11(-1, resource + palette_data_ptr, 1284);
|
||||||
|
|
||||||
if (has_bitmap)
|
if (has_bitmap)
|
||||||
view = gfxr_draw_cel1(-1, 0, 0, flags & DRAWPIC1_FLAG_MIRRORED, resource, resource + bitmap_data_ptr, size - bitmap_data_ptr, NULL, 0, true);
|
view = gfxr_draw_cel1(-1, 0, 0, flags & DRAWPIC1_FLAG_MIRRORED, resource, resource + bitmap_data_ptr, size - bitmap_data_ptr, NULL, kViewVga11);
|
||||||
|
|
||||||
if (view) {
|
if (view) {
|
||||||
view->palette = pic->visual_map->palette->getref();
|
view->palette = pic->visual_map->palette->getref();
|
||||||
|
@ -1677,7 +1681,7 @@ void gfxr_draw_pic11(gfxr_pic_t *pic, int flags, int default_palette, int size,
|
||||||
warning("[GFX] No view was contained in SCI1.1 pic resource");
|
warning("[GFX] No view was contained in SCI1.1 pic resource");
|
||||||
}
|
}
|
||||||
|
|
||||||
gfxr_draw_pic01(pic, flags, default_palette, size - vector_data_ptr, resource + vector_data_ptr, style, resid, 1, static_pal, portBounds);
|
gfxr_draw_pic01(pic, flags, default_palette, size - vector_data_ptr, resource + vector_data_ptr, style, resid, kViewVga11, static_pal, portBounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfxr_dither_pic0(gfxr_pic_t *pic, int dmode, int pattern) {
|
void gfxr_dither_pic0(gfxr_pic_t *pic, int dmode, int pattern) {
|
||||||
|
|
|
@ -326,19 +326,19 @@ static int decompress_sci_view_amiga(int id, int loop, int cel, byte *resource,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *resource, byte *cel_base, int size, gfxr_view_t *view, bool isAmiga, bool isSci11) {
|
gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *resource, byte *cel_base, int size, gfxr_view_t *view, ViewType viewType) {
|
||||||
int xl = READ_LE_UINT16(cel_base);
|
int xl = READ_LE_UINT16(cel_base);
|
||||||
int yl = READ_LE_UINT16(cel_base + 2);
|
int yl = READ_LE_UINT16(cel_base + 2);
|
||||||
int pixmap_size = xl * yl;
|
int pixmap_size = xl * yl;
|
||||||
int xdisplace = isSci11 ? READ_LE_UINT16(cel_base + 4) : (int8) cel_base[4];
|
int xdisplace = (viewType == kViewVga11) ? READ_LE_UINT16(cel_base + 4) : (int8) cel_base[4];
|
||||||
int ydisplace = isSci11 ? READ_LE_UINT16(cel_base + 6) : cel_base[5];
|
int ydisplace = (viewType == kViewVga11) ? READ_LE_UINT16(cel_base + 6) : cel_base[5];
|
||||||
int runlength_offset = isSci11 ? READ_LE_UINT16(cel_base + 24) : 8;
|
int runlength_offset = (viewType == kViewVga11) ? READ_LE_UINT16(cel_base + 24) : 8;
|
||||||
int literal_offset = isSci11 ? READ_LE_UINT16(cel_base + 28) : 8;
|
int literal_offset = (viewType == kViewVga11) ? READ_LE_UINT16(cel_base + 28) : 8;
|
||||||
gfx_pixmap_t *retval = gfx_pixmap_alloc_index_data(gfx_new_pixmap(xl, yl, id, loop, cel));
|
gfx_pixmap_t *retval = gfx_pixmap_alloc_index_data(gfx_new_pixmap(xl, yl, id, loop, cel));
|
||||||
byte *dest = retval->index_data;
|
byte *dest = retval->index_data;
|
||||||
int decompress_failed;
|
int decompress_failed;
|
||||||
|
|
||||||
retval->color_key = cel_base[isSci11 ? 8 : 6];
|
retval->color_key = cel_base[(viewType == kViewVga11) ? 8 : 6];
|
||||||
retval->xoffset = mirrored ? xdisplace : -xdisplace;
|
retval->xoffset = mirrored ? xdisplace : -xdisplace;
|
||||||
retval->yoffset = -ydisplace;
|
retval->yoffset = -ydisplace;
|
||||||
// FIXME: In LSL5, it seems that the inventory has views without palettes (or we don't load palettes properly)
|
// FIXME: In LSL5, it seems that the inventory has views without palettes (or we don't load palettes properly)
|
||||||
|
@ -350,12 +350,12 @@ gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *reso
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isAmiga)
|
if (viewType == kViewAmiga)
|
||||||
decompress_failed = decompress_sci_view(id, loop, cel, resource, dest, mirrored, pixmap_size, size, runlength_offset,
|
|
||||||
literal_offset, xl, yl, retval->color_key);
|
|
||||||
else
|
|
||||||
decompress_failed = decompress_sci_view_amiga(id, loop, cel, resource, dest, mirrored, pixmap_size, size, runlength_offset,
|
decompress_failed = decompress_sci_view_amiga(id, loop, cel, resource, dest, mirrored, pixmap_size, size, runlength_offset,
|
||||||
xl, yl, retval->color_key);
|
xl, yl, retval->color_key);
|
||||||
|
else
|
||||||
|
decompress_failed = decompress_sci_view(id, loop, cel, resource, dest, mirrored, pixmap_size, size, runlength_offset,
|
||||||
|
literal_offset, xl, yl, retval->color_key);
|
||||||
|
|
||||||
if (decompress_failed) {
|
if (decompress_failed) {
|
||||||
gfx_free_pixmap(retval);
|
gfx_free_pixmap(retval);
|
||||||
|
@ -365,27 +365,22 @@ gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *reso
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfxr_view_t *getVGAView(int id, byte *resource, int size, Palette *static_pal, bool isSci11) {
|
gfxr_view_t *getVGAView(int id, byte *resource, int size, ViewType viewType) {
|
||||||
uint16 palOffset = READ_LE_UINT16(resource + V1_PALETTE_OFFSET + (isSci11 ? 2 : 0));
|
uint16 palOffset = READ_LE_UINT16(resource + V1_PALETTE_OFFSET + ((viewType == kViewVga11) ? 2 : 0));
|
||||||
uint16 headerSize = isSci11 ? READ_LE_UINT16(resource + V2_HEADER_SIZE) : 0;
|
uint16 headerSize = (viewType == kViewVga11) ? READ_LE_UINT16(resource + V2_HEADER_SIZE) : 0;
|
||||||
byte* seeker = resource + headerSize;
|
byte* seeker = resource + headerSize;
|
||||||
uint16 loopOffset = 0;
|
uint16 loopOffset = 0;
|
||||||
int amiga_game = 0;
|
|
||||||
gfxr_view_t *view = (gfxr_view_t *)malloc(sizeof(gfxr_view_t));
|
gfxr_view_t *view = (gfxr_view_t *)malloc(sizeof(gfxr_view_t));
|
||||||
|
|
||||||
view->ID = id;
|
view->ID = id;
|
||||||
view->flags = 0;
|
view->flags = 0;
|
||||||
view->loops_nr = READ_LE_UINT16(resource + V1_LOOPS_NR_OFFSET + (isSci11 ? 2 : 0)) & 0xFF;
|
view->loops_nr = READ_LE_UINT16(resource + V1_LOOPS_NR_OFFSET + ((viewType == kViewVga11) ? 2 : 0)) & 0xFF;
|
||||||
|
|
||||||
if (palOffset > 0) {
|
if (palOffset > 0) {
|
||||||
if (!isSci11)
|
if (viewType == kViewVga11)
|
||||||
view->palette = gfxr_read_pal1(id, resource + palOffset, size - palOffset);
|
|
||||||
else
|
|
||||||
view->palette = gfxr_read_pal11(id, resource + palOffset, size - palOffset);
|
view->palette = gfxr_read_pal11(id, resource + palOffset, size - palOffset);
|
||||||
} else if (static_pal && static_pal->size() == GFX_SCI1_AMIGA_COLORS_NR) {
|
else
|
||||||
// Assume we're running an amiga game.
|
view->palette = gfxr_read_pal1(id, resource + palOffset, size - palOffset);
|
||||||
amiga_game = 1;
|
|
||||||
view->palette = static_pal->getref();
|
|
||||||
} else {
|
} else {
|
||||||
view->palette = NULL;
|
view->palette = NULL;
|
||||||
}
|
}
|
||||||
|
@ -393,7 +388,7 @@ gfxr_view_t *getVGAView(int id, byte *resource, int size, Palette *static_pal, b
|
||||||
view->loops = (gfxr_loop_t *)calloc(view->loops_nr, sizeof(gfxr_loop_t));
|
view->loops = (gfxr_loop_t *)calloc(view->loops_nr, sizeof(gfxr_loop_t));
|
||||||
|
|
||||||
for (int i = 0; i < view->loops_nr; i++) {
|
for (int i = 0; i < view->loops_nr; i++) {
|
||||||
if (!isSci11) {
|
if (viewType != kViewVga11) {
|
||||||
bool mirrored = READ_LE_UINT16(resource + V1_MIRROR_MASK) & (1 << i);
|
bool mirrored = READ_LE_UINT16(resource + V1_MIRROR_MASK) & (1 << i);
|
||||||
loopOffset = READ_LE_UINT16(resource + V1_FIRST_LOOP_OFFSET + (i << 1));
|
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_nr = READ_LE_UINT16(resource + loopOffset);
|
||||||
|
@ -405,7 +400,7 @@ gfxr_view_t *getVGAView(int id, byte *resource, int size, Palette *static_pal, b
|
||||||
resource + cel_offset,
|
resource + cel_offset,
|
||||||
resource + cel_offset,
|
resource + cel_offset,
|
||||||
size - cel_offset,
|
size - cel_offset,
|
||||||
view, amiga_game, false);
|
view, viewType);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
byte copy_entry = seeker[V2_COPY_OF_LOOP];
|
byte copy_entry = seeker[V2_COPY_OF_LOOP];
|
||||||
|
@ -417,7 +412,7 @@ gfxr_view_t *getVGAView(int id, byte *resource, int size, Palette *static_pal, b
|
||||||
|
|
||||||
byte* cellSeeker = resource + loopOffset;
|
byte* cellSeeker = resource + loopOffset;
|
||||||
for (int j = 0; j < view->loops[i].cels_nr; j++) {
|
for (int j = 0; j < view->loops[i].cels_nr; j++) {
|
||||||
view->loops[i].cels[j] = gfxr_draw_cel1(id, i, j, mirrored, resource, cellSeeker, size, view, 0, true);
|
view->loops[i].cels[j] = gfxr_draw_cel1(id, i, j, mirrored, resource, cellSeeker, size, view, viewType);
|
||||||
cellSeeker += resource[V2_BYTES_PER_CEL];
|
cellSeeker += resource[V2_BYTES_PER_CEL];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue