Cleanup.
svn-id: r26480
This commit is contained in:
parent
aa0f36358b
commit
1c00843f2b
11 changed files with 89 additions and 109 deletions
|
@ -1273,7 +1273,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
bool drawImage_clip(VC10_state *state);
|
bool drawImage_clip(VC10_state *state);
|
||||||
|
|
||||||
void drawImage_init(VC10_state *state);
|
void drawImage_init(uint16 image, uint16 palette, uint16 x, uint16 y, uint16 flags);
|
||||||
|
|
||||||
void drawImage(VC10_state *state);
|
void drawImage(VC10_state *state);
|
||||||
void drawImage_Amiga(VC10_state *state);
|
void drawImage_Amiga(VC10_state *state);
|
||||||
|
|
|
@ -435,7 +435,7 @@ void AGOSEngine::dumpBitmap(const char *filename, const byte *offs, int w, int h
|
||||||
VC10_state state;
|
VC10_state state;
|
||||||
|
|
||||||
state.depack_cont = -0x80;
|
state.depack_cont = -0x80;
|
||||||
state.depack_src = offs;
|
state.srcPtr = offs;
|
||||||
state.dh = h;
|
state.dh = h;
|
||||||
state.y_skip = 0;
|
state.y_skip = 0;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
|
|
||||||
#include "agos/agos.h"
|
#include "agos/agos.h"
|
||||||
#include "agos/intern.h"
|
#include "agos/intern.h"
|
||||||
#include "agos/vga.h"
|
|
||||||
|
|
||||||
namespace AGOS {
|
namespace AGOS {
|
||||||
|
|
||||||
|
@ -54,7 +53,6 @@ byte *AGOSEngine::getScaleBuf() {
|
||||||
void AGOSEngine::animateSprites() {
|
void AGOSEngine::animateSprites() {
|
||||||
VgaSprite *vsp;
|
VgaSprite *vsp;
|
||||||
VgaPointersEntry *vpe;
|
VgaPointersEntry *vpe;
|
||||||
VC10_state state;
|
|
||||||
|
|
||||||
if (_paletteFlag == 2)
|
if (_paletteFlag == 2)
|
||||||
_paletteFlag = 1;
|
_paletteFlag = 1;
|
||||||
|
@ -84,13 +82,7 @@ void AGOSEngine::animateSprites() {
|
||||||
_vgaCurSpriteId = vsp->id;
|
_vgaCurSpriteId = vsp->id;
|
||||||
_vgaCurSpritePriority = vsp->priority;
|
_vgaCurSpritePriority = vsp->priority;
|
||||||
|
|
||||||
state.image = vsp->image;
|
drawImage_init(vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
|
||||||
state.palette = (vsp->palette & 15) * 16;
|
|
||||||
state.x = vsp->x;
|
|
||||||
state.y = vsp->y;
|
|
||||||
state.flags = vsp->flags;
|
|
||||||
|
|
||||||
drawImage_init(&state);
|
|
||||||
|
|
||||||
vsp++;
|
vsp++;
|
||||||
}
|
}
|
||||||
|
@ -124,13 +116,7 @@ void AGOSEngine::animateSpritesDebug() {
|
||||||
printf("id:%5d image:%3d base-color:%3d x:%3d y:%3d flags:%x\n",
|
printf("id:%5d image:%3d base-color:%3d x:%3d y:%3d flags:%x\n",
|
||||||
vsp->id, vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
|
vsp->id, vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
|
||||||
|
|
||||||
state.image = vsp->image;
|
drawImage_init(vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
|
||||||
state.palette = (vsp->palette & 15) * 16;
|
|
||||||
state.x = vsp->x;
|
|
||||||
state.y = vsp->y;
|
|
||||||
state.flags = vsp->flags;
|
|
||||||
|
|
||||||
drawImage_init(&state);
|
|
||||||
|
|
||||||
vsp++;
|
vsp++;
|
||||||
}
|
}
|
||||||
|
@ -200,13 +186,7 @@ void AGOSEngine::animateSpritesByY() {
|
||||||
_vgaCurSpriteId = vsp->id;
|
_vgaCurSpriteId = vsp->id;
|
||||||
_vgaCurSpritePriority = vsp->priority;
|
_vgaCurSpritePriority = vsp->priority;
|
||||||
|
|
||||||
state.image = vsp->image;
|
drawImage_init(vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
|
||||||
state.palette = 0;
|
|
||||||
state.x = vsp->x;
|
|
||||||
state.y = vsp->y;
|
|
||||||
state.flags = vsp->flags;
|
|
||||||
|
|
||||||
drawImage_init(&state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateScreen = true;
|
_updateScreen = true;
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace AGOS {
|
||||||
|
|
||||||
byte *vc10_depackColumn(VC10_state * vs) {
|
byte *vc10_depackColumn(VC10_state * vs) {
|
||||||
int8 a = vs->depack_cont;
|
int8 a = vs->depack_cont;
|
||||||
const byte *src = vs->depack_src;
|
const byte *src = vs->srcPtr;
|
||||||
byte *dst = vs->depack_dest;
|
byte *dst = vs->depack_dest;
|
||||||
uint16 dh = vs->dh;
|
uint16 dh = vs->dh;
|
||||||
byte color;
|
byte color;
|
||||||
|
@ -66,7 +66,7 @@ byte *vc10_depackColumn(VC10_state * vs) {
|
||||||
}
|
}
|
||||||
|
|
||||||
get_out:;
|
get_out:;
|
||||||
vs->depack_src = src;
|
vs->srcPtr = src;
|
||||||
vs->depack_cont = a;
|
vs->depack_cont = a;
|
||||||
return vs->depack_dest + vs->y_skip;
|
return vs->depack_dest + vs->y_skip;
|
||||||
}
|
}
|
||||||
|
@ -368,7 +368,7 @@ void AGOSEngine::drawImage_Feeble(VC10_state *state) {
|
||||||
byte *dst;
|
byte *dst;
|
||||||
uint count;
|
uint count;
|
||||||
|
|
||||||
src = state->depack_src + state->width * state->y_skip;
|
src = state->srcPtr + state->width * state->y_skip;
|
||||||
dst = state->surf_addr;
|
dst = state->surf_addr;
|
||||||
do {
|
do {
|
||||||
for (count = 0; count != state->draw_width; count++) {
|
for (count = 0; count != state->draw_width; count++) {
|
||||||
|
@ -455,7 +455,7 @@ void AGOSEngine::drawImage_Simon(VC10_state *state) {
|
||||||
|
|
||||||
if (state->flags & kDFCompressed) {
|
if (state->flags & kDFCompressed) {
|
||||||
byte *dstPtr = state->surf_addr;
|
byte *dstPtr = state->surf_addr;
|
||||||
src = state->depack_src;
|
src = state->srcPtr;
|
||||||
/* AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE
|
/* AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE
|
||||||
* aaaaabbb bbcccccd ddddeeee efffffgg ggghhhhh
|
* aaaaabbb bbcccccd ddddeeee efffffgg ggghhhhh
|
||||||
*/
|
*/
|
||||||
|
@ -502,7 +502,7 @@ void AGOSEngine::drawImage_Simon(VC10_state *state) {
|
||||||
dstPtr += _screenWidth;
|
dstPtr += _screenWidth;
|
||||||
} while (--state->draw_height);
|
} while (--state->draw_height);
|
||||||
} else {
|
} else {
|
||||||
src = state->depack_src + (state->width * state->y_skip * 16) + (state->x_skip * 8);
|
src = state->srcPtr + (state->width * state->y_skip * 16) + (state->x_skip * 8);
|
||||||
dst = state->surf_addr;
|
dst = state->surf_addr;
|
||||||
|
|
||||||
state->draw_width *= 2;
|
state->draw_width *= 2;
|
||||||
|
@ -562,7 +562,7 @@ void AGOSEngine::drawImage_Simon(VC10_state *state) {
|
||||||
byte *dst;
|
byte *dst;
|
||||||
uint count;
|
uint count;
|
||||||
|
|
||||||
src = state->depack_src + (state->width * state->y_skip) * 8;
|
src = state->srcPtr + (state->width * state->y_skip) * 8;
|
||||||
dst = state->surf_addr;
|
dst = state->surf_addr;
|
||||||
state->x_skip *= 4;
|
state->x_skip *= 4;
|
||||||
|
|
||||||
|
@ -598,7 +598,7 @@ void AGOSEngine::drawImage_Amiga(VC10_state *state) {
|
||||||
state->surf_addr += xoffs + yoffs * state->surf2_pitch;
|
state->surf_addr += xoffs + yoffs * state->surf2_pitch;
|
||||||
|
|
||||||
if (state->flags & kDFMasked) {
|
if (state->flags & kDFMasked) {
|
||||||
const byte *mask = state->depack_src + (state->width * state->y_skip * 16) + (state->x_skip * 8);
|
const byte *mask = state->srcPtr + (state->width * state->y_skip * 16) + (state->x_skip * 8);
|
||||||
src = state->surf2_addr;
|
src = state->surf2_addr;
|
||||||
dst = state->surf_addr;
|
dst = state->surf_addr;
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ void AGOSEngine::drawImage_Amiga(VC10_state *state) {
|
||||||
mask += state->width * 16;
|
mask += state->width * 16;
|
||||||
} while (--h);
|
} while (--h);
|
||||||
} else {
|
} else {
|
||||||
src = state->depack_src + (state->width * state->y_skip * 16) + (state->x_skip * 8);
|
src = state->srcPtr + (state->width * state->y_skip * 16) + (state->x_skip * 8);
|
||||||
dst = state->surf_addr;
|
dst = state->surf_addr;
|
||||||
|
|
||||||
state->draw_width *= 2;
|
state->draw_width *= 2;
|
||||||
|
@ -722,7 +722,7 @@ void AGOSEngine::drawImage(VC10_state *state) {
|
||||||
byte *dst;
|
byte *dst;
|
||||||
uint count;
|
uint count;
|
||||||
|
|
||||||
src = state->depack_src + (state->width * state->y_skip) * 8;
|
src = state->srcPtr + (state->width * state->y_skip) * 8;
|
||||||
dst = state->surf_addr;
|
dst = state->surf_addr;
|
||||||
state->x_skip *= 4;
|
state->x_skip *= 4;
|
||||||
|
|
||||||
|
@ -753,7 +753,7 @@ void AGOSEngine::horizontalScroll(VC10_state *state) {
|
||||||
else
|
else
|
||||||
_scrollXMax = state->width * 2 - 40;
|
_scrollXMax = state->width * 2 - 40;
|
||||||
_scrollYMax = 0;
|
_scrollYMax = 0;
|
||||||
_scrollImage = state->depack_src;
|
_scrollImage = state->srcPtr;
|
||||||
_scrollHeight = state->height;
|
_scrollHeight = state->height;
|
||||||
if (_variableArrayPtr[34] < 0)
|
if (_variableArrayPtr[34] < 0)
|
||||||
state->x = _variableArrayPtr[251];
|
state->x = _variableArrayPtr[251];
|
||||||
|
@ -765,9 +765,9 @@ void AGOSEngine::horizontalScroll(VC10_state *state) {
|
||||||
dst = getBackBuf();
|
dst = getBackBuf();
|
||||||
|
|
||||||
if (getGameType() == GType_FF)
|
if (getGameType() == GType_FF)
|
||||||
src = state->depack_src + _scrollX / 2;
|
src = state->srcPtr + _scrollX / 2;
|
||||||
else
|
else
|
||||||
src = state->depack_src + _scrollX * 4;
|
src = state->srcPtr + _scrollX * 4;
|
||||||
|
|
||||||
for (w = 0; w < _screenWidth; w += 8) {
|
for (w = 0; w < _screenWidth; w += 8) {
|
||||||
decodeColumn(dst, src + readUint32Wrapper(src), state->height);
|
decodeColumn(dst, src + readUint32Wrapper(src), state->height);
|
||||||
|
@ -783,7 +783,7 @@ void AGOSEngine::verticalScroll(VC10_state *state) {
|
||||||
|
|
||||||
_scrollXMax = 0;
|
_scrollXMax = 0;
|
||||||
_scrollYMax = state->height - 480;
|
_scrollYMax = state->height - 480;
|
||||||
_scrollImage = state->depack_src;
|
_scrollImage = state->srcPtr;
|
||||||
_scrollWidth = state->width;
|
_scrollWidth = state->width;
|
||||||
if (_variableArrayPtr[34] < 0)
|
if (_variableArrayPtr[34] < 0)
|
||||||
state->y = _variableArrayPtr[250];
|
state->y = _variableArrayPtr[250];
|
||||||
|
@ -793,7 +793,7 @@ void AGOSEngine::verticalScroll(VC10_state *state) {
|
||||||
vcWriteVar(250, _scrollY);
|
vcWriteVar(250, _scrollY);
|
||||||
|
|
||||||
dst = getBackBuf();
|
dst = getBackBuf();
|
||||||
src = state->depack_src + _scrollY / 2;
|
src = state->srcPtr + _scrollY / 2;
|
||||||
|
|
||||||
for (h = 0; h < _screenHeight; h += 8) {
|
for (h = 0; h < _screenHeight; h += 8) {
|
||||||
decodeRow(dst, src + READ_LE_UINT32(src), state->width);
|
decodeRow(dst, src + READ_LE_UINT32(src), state->width);
|
||||||
|
|
|
@ -141,7 +141,7 @@ byte *AGOSEngine::convertImage(VC10_state *state, bool compressed) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const byte *src = state->depack_src;
|
const byte *src = state->srcPtr;
|
||||||
int width = state->width * 16;
|
int width = state->width * 16;
|
||||||
int height = state->height;
|
int height = state->height;
|
||||||
|
|
||||||
|
|
|
@ -970,7 +970,7 @@ void AGOSEngine::printScroll() {
|
||||||
VC10_state state;
|
VC10_state state;
|
||||||
VgaPointersEntry *vpe = &_vgaBufferPointers[1];
|
VgaPointersEntry *vpe = &_vgaBufferPointers[1];
|
||||||
|
|
||||||
state.depack_src = vpe->vgaFile2 + READ_BE_UINT32(vpe->vgaFile2 + 9 * 8);
|
state.srcPtr = vpe->vgaFile2 + READ_BE_UINT32(vpe->vgaFile2 + 9 * 8);
|
||||||
|
|
||||||
state.palette = 0;
|
state.palette = 0;
|
||||||
state.x = 10;
|
state.x = 10;
|
||||||
|
|
|
@ -81,7 +81,7 @@ void AGOSEngine::os1_animate() {
|
||||||
uint windowNum = getVarOrByte();
|
uint windowNum = getVarOrByte();
|
||||||
uint x = getVarOrWord();
|
uint x = getVarOrWord();
|
||||||
uint y = getVarOrWord();
|
uint y = getVarOrWord();
|
||||||
uint palette = getVarOrWord();
|
uint palette = (getVarOrWord() & 15);
|
||||||
|
|
||||||
if (getFeatures() & GF_TALKIE && vgaSpriteId >= 400) {
|
if (getFeatures() & GF_TALKIE && vgaSpriteId >= 400) {
|
||||||
_lastVgaWaitFor = 0;
|
_lastVgaWaitFor = 0;
|
||||||
|
|
|
@ -95,7 +95,7 @@ void AGOSEngine::os2_animate() {
|
||||||
uint windowNum = getVarOrByte();
|
uint windowNum = getVarOrByte();
|
||||||
uint x = getVarOrWord();
|
uint x = getVarOrWord();
|
||||||
uint y = getVarOrWord();
|
uint y = getVarOrWord();
|
||||||
uint palette = getVarOrWord();
|
uint palette = (getVarOrWord() & 15);
|
||||||
|
|
||||||
_lockWord |= 0x40;
|
_lockWord |= 0x40;
|
||||||
animate(windowNum, zoneNum, vgaSpriteId, x, y, palette);
|
animate(windowNum, zoneNum, vgaSpriteId, x, y, palette);
|
||||||
|
|
|
@ -578,128 +578,134 @@ byte *AGOSEngine::vc10_flip(const byte *src, uint w, uint h) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AGOSEngine::vc10_draw() {
|
void AGOSEngine::vc10_draw() {
|
||||||
VC10_state state;
|
uint16 image, palette, x, y, flags;
|
||||||
|
|
||||||
state.image = (int16)vcReadNextWord();
|
image = (int16)vcReadNextWord();
|
||||||
|
|
||||||
state.palette = 0;
|
palette = 0;
|
||||||
if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
||||||
|
palette = _vcPtr[0];
|
||||||
_vcPtr += 2;
|
_vcPtr += 2;
|
||||||
} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
|
} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
|
||||||
state.palette = (_vcPtr[1] * 16);
|
palette = _vcPtr[1];
|
||||||
_vcPtr += 2;
|
_vcPtr += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
state.x = (int16)vcReadNextWord();
|
x = (int16)vcReadNextWord();
|
||||||
state.y = (int16)vcReadNextWord();
|
y = (int16)vcReadNextWord();
|
||||||
|
|
||||||
if (getGameType() == GType_SIMON2 || getGameType() == GType_FF || getGameType() == GType_PP) {
|
if (getGameType() == GType_SIMON2 || getGameType() == GType_FF || getGameType() == GType_PP) {
|
||||||
state.flags = vcReadNextByte();
|
flags = vcReadNextByte();
|
||||||
} else {
|
} else {
|
||||||
state.flags = vcReadNextWord();
|
flags = vcReadNextWord();
|
||||||
}
|
}
|
||||||
|
|
||||||
drawImage_init(&state);
|
drawImage_init(image, palette, x, y, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AGOSEngine::drawImage_init(VC10_state *state) {
|
void AGOSEngine::drawImage_init(uint16 image, uint16 palette, uint16 x, uint16 y, uint16 flags) {
|
||||||
if (state->image == 0)
|
if (image == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
byte *p2;
|
byte *src;
|
||||||
uint width, height;
|
uint width, height;
|
||||||
byte flags;
|
VC10_state state;
|
||||||
|
|
||||||
state->x -= _scrollX;
|
state.image = image;
|
||||||
state->y -= _scrollY;
|
if (state.image < 0)
|
||||||
|
state.image = vcReadVar(-state.image);
|
||||||
|
|
||||||
if (state->image < 0)
|
state.palette = palette * 16;
|
||||||
state->image = vcReadVar(-state->image);
|
|
||||||
|
|
||||||
p2 = _curVgaFile2 + state->image * 8;
|
state.x = x - _scrollX;
|
||||||
state->depack_src = _curVgaFile2 + readUint32Wrapper(p2);
|
state.y = y - _scrollY;
|
||||||
|
|
||||||
|
state.flags = flags;
|
||||||
|
|
||||||
|
src = _curVgaFile2 + state.image * 8;
|
||||||
|
state.srcPtr = _curVgaFile2 + readUint32Wrapper(src);
|
||||||
if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
||||||
width = READ_LE_UINT16(p2 + 6);
|
width = READ_LE_UINT16(src + 6);
|
||||||
height = READ_LE_UINT16(p2 + 4) & 0x7FFF;
|
height = READ_LE_UINT16(src + 4) & 0x7FFF;
|
||||||
flags = p2[5];
|
flags = src[5];
|
||||||
} else {
|
} else {
|
||||||
width = READ_BE_UINT16(p2 + 6) / 16;
|
width = READ_BE_UINT16(src + 6) / 16;
|
||||||
height = p2[5];
|
height = src[5];
|
||||||
flags = p2[4];
|
flags = src[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (height == 0 || width == 0)
|
if (height == 0 || width == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_dumpImages)
|
if (_dumpImages)
|
||||||
dumpSingleBitmap(_vgaCurZoneNum, state->image, state->depack_src, width, height,
|
dumpSingleBitmap(_vgaCurZoneNum, state.image, state.srcPtr, width, height,
|
||||||
state->palette);
|
state.palette);
|
||||||
state->width = state->draw_width = width; /* cl */
|
state.width = state.draw_width = width; /* cl */
|
||||||
state->height = state->draw_height = height; /* ch */
|
state.height = state.draw_height = height; /* ch */
|
||||||
|
|
||||||
state->depack_cont = -0x80;
|
state.depack_cont = -0x80;
|
||||||
|
|
||||||
state->x_skip = 0; /* colums to skip = bh */
|
state.x_skip = 0; /* colums to skip = bh */
|
||||||
state->y_skip = 0; /* rows to skip = bl */
|
state.y_skip = 0; /* rows to skip = bl */
|
||||||
|
|
||||||
if (getFeatures() & GF_PLANAR) {
|
if (getFeatures() & GF_PLANAR) {
|
||||||
state->depack_src = convertImage(state, ((flags & 0x80) != 0));
|
state.srcPtr = convertImage(&state, ((flags & 0x80) != 0));
|
||||||
|
|
||||||
// converted planar clip is already uncompressed
|
// converted planar clip is already uncompressed
|
||||||
if (state->flags & kDFCompressedFlip) {
|
if (state.flags & kDFCompressedFlip) {
|
||||||
state->flags &= ~kDFCompressedFlip;
|
state.flags &= ~kDFCompressedFlip;
|
||||||
state->flags |= kDFFlip;
|
state.flags |= kDFFlip;
|
||||||
}
|
}
|
||||||
if (state->flags & kDFCompressed) {
|
if (state.flags & kDFCompressed) {
|
||||||
state->flags &= ~kDFCompressed;
|
state.flags &= ~kDFCompressed;
|
||||||
}
|
}
|
||||||
} else if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
} else if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
||||||
if (flags & 0x80) {
|
if (flags & 0x80) {
|
||||||
state->flags |= kDFCompressed;
|
state.flags |= kDFCompressed;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (flags & 0x80 && !(state->flags & kDFCompressedFlip)) {
|
if (flags & 0x80 && !(state.flags & kDFCompressedFlip)) {
|
||||||
if (state->flags & kDFFlip) {
|
if (state.flags & kDFFlip) {
|
||||||
state->flags &= ~kDFFlip;
|
state.flags &= ~kDFFlip;
|
||||||
state->flags |= kDFCompressedFlip;
|
state.flags |= kDFCompressedFlip;
|
||||||
} else {
|
} else {
|
||||||
state->flags |= kDFCompressed;
|
state.flags |= kDFCompressed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint maxWidth = (getGameType() == GType_FF || getGameType() == GType_PP) ? 640 : 20;
|
uint maxWidth = (getGameType() == GType_FF || getGameType() == GType_PP) ? 640 : 20;
|
||||||
if ((getGameType() == GType_SIMON2 || getGameType() == GType_FF) && width > maxWidth) {
|
if ((getGameType() == GType_SIMON2 || getGameType() == GType_FF) && width > maxWidth) {
|
||||||
horizontalScroll(state);
|
horizontalScroll(&state);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getGameType() == GType_FF && height > 480) {
|
if (getGameType() == GType_FF && height > 480) {
|
||||||
verticalScroll(state);
|
verticalScroll(&state);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getGameType() != GType_FF && getGameType() != GType_PP) {
|
if (getGameType() != GType_FF && getGameType() != GType_PP) {
|
||||||
if (state->flags & kDFCompressedFlip) {
|
if (state.flags & kDFCompressedFlip) {
|
||||||
state->depack_src = vc10_uncompressFlip(state->depack_src, width, height);
|
state.srcPtr = vc10_uncompressFlip(state.srcPtr, width, height);
|
||||||
} else if (state->flags & kDFFlip) {
|
} else if (state.flags & kDFFlip) {
|
||||||
state->depack_src = vc10_flip(state->depack_src, width, height);
|
state.srcPtr = vc10_flip(state.srcPtr, width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state->surf2_addr = getFrontBuf();
|
state.surf2_addr = getFrontBuf();
|
||||||
state->surf2_pitch = _dxSurfacePitch;
|
state.surf2_pitch = _dxSurfacePitch;
|
||||||
|
|
||||||
state->surf_addr = getBackBuf();
|
state.surf_addr = getBackBuf();
|
||||||
state->surf_pitch = _dxSurfacePitch;
|
state.surf_pitch = _dxSurfacePitch;
|
||||||
|
|
||||||
if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
if (getGameType() == GType_FF || getGameType() == GType_PP) {
|
||||||
drawImage_Feeble(state);
|
drawImage_Feeble(&state);
|
||||||
} else if (getFeatures() & GF_32COLOR) {
|
} else if (getFeatures() & GF_32COLOR) {
|
||||||
drawImage_Amiga(state);
|
drawImage_Amiga(&state);
|
||||||
} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
|
} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
|
||||||
drawImage_Simon(state);
|
drawImage_Simon(&state);
|
||||||
} else {
|
} else {
|
||||||
drawImage(state);
|
drawImage(&state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,7 @@ struct VC10_state {
|
||||||
|
|
||||||
uint16 dl, dh;
|
uint16 dl, dh;
|
||||||
|
|
||||||
const byte *depack_src;
|
const byte *srcPtr;
|
||||||
int8 depack_cont;
|
int8 depack_cont;
|
||||||
|
|
||||||
byte depack_dest[480];
|
byte depack_dest[480];
|
||||||
|
|
|
@ -207,13 +207,7 @@ void AGOSEngine::vc62_fastFadeOut() {
|
||||||
_curVgaFile2 = vpe->vgaFile2;
|
_curVgaFile2 = vpe->vgaFile2;
|
||||||
_windowNum = vsp->windowNum;
|
_windowNum = vsp->windowNum;
|
||||||
|
|
||||||
state.image = vsp->image;
|
drawImage_init(vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
|
||||||
state.palette = (vsp->palette & 15) * 16;
|
|
||||||
state.x = vsp->x;
|
|
||||||
state.y = vsp->y;
|
|
||||||
state.flags = vsp->flags;
|
|
||||||
|
|
||||||
drawImage_init(&state);
|
|
||||||
|
|
||||||
_windowNum = palmode;
|
_windowNum = palmode;
|
||||||
_curVgaFile1 = old_file_1;
|
_curVgaFile1 = old_file_1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue