SHERLOCK: remove transBlitFromUnscaled3DO
This commit is contained in:
parent
5f2218c326
commit
a08b0b9e59
4 changed files with 41 additions and 48 deletions
|
@ -201,10 +201,10 @@ bool Animation::play3DO(const Common::String &filename, bool intro, int minDelay
|
||||||
// Draw the sprite. Note that we explicitly use the raw frame below, rather than the ImageFrame,
|
// Draw the sprite. Note that we explicitly use the raw frame below, rather than the ImageFrame,
|
||||||
// since we don't want the offsets in the image file to be used, just the explicit position we specify
|
// since we don't want the offsets in the image file to be used, just the explicit position we specify
|
||||||
if (!fadeActive) {
|
if (!fadeActive) {
|
||||||
screen.transBlitFromUnscaled3DO(images[imageFrame]._frame, pt);
|
screen.transBlitFrom(images[imageFrame]._frame, pt);
|
||||||
} else {
|
} else {
|
||||||
// Fade active, blit to backbuffer1
|
// Fade active, blit to backbuffer1
|
||||||
screen._backBuffer1.transBlitFromUnscaled3DO(images[imageFrame]._frame, pt);
|
screen._backBuffer1.transBlitFrom(images[imageFrame]._frame, pt);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// At this point, either the sprites for the frame has been complete, or there weren't any sprites
|
// At this point, either the sprites for the frame has been complete, or there weren't any sprites
|
||||||
|
|
|
@ -533,7 +533,7 @@ bool ScalpelEngine::show3DOSplash() {
|
||||||
// 3DO EA Splash screen
|
// 3DO EA Splash screen
|
||||||
ImageFile3DO titleImage_3DOSplash("3DOSplash.cel");
|
ImageFile3DO titleImage_3DOSplash("3DOSplash.cel");
|
||||||
|
|
||||||
_screen->transBlitFromUnscaled3DO(titleImage_3DOSplash[0]._frame, Common::Point(0, -20));
|
_screen->transBlitFrom(titleImage_3DOSplash[0]._frame, Common::Point(0, -20));
|
||||||
bool finished = _events->delay(3000, true);
|
bool finished = _events->delay(3000, true);
|
||||||
|
|
||||||
if (finished) {
|
if (finished) {
|
||||||
|
@ -577,7 +577,7 @@ bool ScalpelEngine::showCityCutscene3DO() {
|
||||||
|
|
||||||
// "London, England"
|
// "London, England"
|
||||||
ImageFile3DO titleImage_London("title2a.cel");
|
ImageFile3DO titleImage_London("title2a.cel");
|
||||||
_screen->_backBuffer1.transBlitFromUnscaled3DO(titleImage_London[0]._frame, Common::Point(30, 50));
|
_screen->_backBuffer1.transBlitFrom(titleImage_London[0]._frame, Common::Point(30, 50));
|
||||||
|
|
||||||
_screen->fadeIntoScreen3DO(1);
|
_screen->fadeIntoScreen3DO(1);
|
||||||
finished = _events->delay(1500, true);
|
finished = _events->delay(1500, true);
|
||||||
|
@ -585,7 +585,7 @@ bool ScalpelEngine::showCityCutscene3DO() {
|
||||||
if (finished) {
|
if (finished) {
|
||||||
// "November, 1888"
|
// "November, 1888"
|
||||||
ImageFile3DO titleImage_November("title2b.cel");
|
ImageFile3DO titleImage_November("title2b.cel");
|
||||||
_screen->_backBuffer1.transBlitFromUnscaled3DO(titleImage_November[0]._frame, Common::Point(100, 100));
|
_screen->_backBuffer1.transBlitFrom(titleImage_November[0]._frame, Common::Point(100, 100));
|
||||||
|
|
||||||
_screen->fadeIntoScreen3DO(1);
|
_screen->fadeIntoScreen3DO(1);
|
||||||
finished = _music->waitUntilMSec(14700, 0, 0, 5000);
|
finished = _music->waitUntilMSec(14700, 0, 0, 5000);
|
||||||
|
@ -605,7 +605,7 @@ bool ScalpelEngine::showCityCutscene3DO() {
|
||||||
|
|
||||||
// "Sherlock Holmes" (title)
|
// "Sherlock Holmes" (title)
|
||||||
ImageFile3DO titleImage_SherlockHolmesTitle("title1ab.cel");
|
ImageFile3DO titleImage_SherlockHolmesTitle("title1ab.cel");
|
||||||
_screen->_backBuffer1.transBlitFromUnscaled3DO(titleImage_SherlockHolmesTitle[0]._frame, Common::Point(34, 5));
|
_screen->_backBuffer1.transBlitFrom(titleImage_SherlockHolmesTitle[0]._frame, Common::Point(34, 5));
|
||||||
|
|
||||||
// Blend in
|
// Blend in
|
||||||
_screen->fadeIntoScreen3DO(2);
|
_screen->fadeIntoScreen3DO(2);
|
||||||
|
@ -615,7 +615,7 @@ bool ScalpelEngine::showCityCutscene3DO() {
|
||||||
if (finished) {
|
if (finished) {
|
||||||
ImageFile3DO titleImage_Copyright("title1c.cel");
|
ImageFile3DO titleImage_Copyright("title1c.cel");
|
||||||
|
|
||||||
_screen->transBlitFromUnscaled3DO(titleImage_Copyright[0]._frame, Common::Point(20, 190));
|
_screen->transBlitFrom(titleImage_Copyright[0]._frame, Common::Point(20, 190));
|
||||||
finished = _events->delay(3500, true);
|
finished = _events->delay(3500, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -632,7 +632,7 @@ bool ScalpelEngine::showCityCutscene3DO() {
|
||||||
if (finished) {
|
if (finished) {
|
||||||
// "In the alley behind the Regency Theatre..."
|
// "In the alley behind the Regency Theatre..."
|
||||||
ImageFile3DO titleImage_InTheAlley("title1d.cel");
|
ImageFile3DO titleImage_InTheAlley("title1d.cel");
|
||||||
_screen->_backBuffer1.transBlitFromUnscaled3DO(titleImage_InTheAlley[0]._frame, Common::Point(72, 51));
|
_screen->_backBuffer1.transBlitFrom(titleImage_InTheAlley[0]._frame, Common::Point(72, 51));
|
||||||
|
|
||||||
// Fade in
|
// Fade in
|
||||||
_screen->fadeIntoScreen3DO(4);
|
_screen->fadeIntoScreen3DO(4);
|
||||||
|
@ -670,7 +670,7 @@ bool ScalpelEngine::showAlleyCutscene3DO() {
|
||||||
ImageFile3DO titleImage_ScreamingVictim("scream.cel");
|
ImageFile3DO titleImage_ScreamingVictim("scream.cel");
|
||||||
|
|
||||||
_screen->clear();
|
_screen->clear();
|
||||||
_screen->transBlitFromUnscaled3DO(titleImage_ScreamingVictim[0]._frame, Common::Point(0, 0));
|
_screen->transBlitFrom(titleImage_ScreamingVictim[0]._frame, Common::Point(0, 0));
|
||||||
|
|
||||||
// Play "scream.aiff"
|
// Play "scream.aiff"
|
||||||
if (_sound->_voices)
|
if (_sound->_voices)
|
||||||
|
@ -699,7 +699,7 @@ bool ScalpelEngine::showAlleyCutscene3DO() {
|
||||||
if (finished) {
|
if (finished) {
|
||||||
// "Early the following morning on Baker Street..."
|
// "Early the following morning on Baker Street..."
|
||||||
ImageFile3DO titleImage_EarlyTheFollowingMorning("title3.cel");
|
ImageFile3DO titleImage_EarlyTheFollowingMorning("title3.cel");
|
||||||
_screen->_backBuffer1.transBlitFromUnscaled3DO(titleImage_EarlyTheFollowingMorning[0]._frame, Common::Point(35, 51));
|
_screen->_backBuffer1.transBlitFrom(titleImage_EarlyTheFollowingMorning[0]._frame, Common::Point(35, 51));
|
||||||
|
|
||||||
// Fade in
|
// Fade in
|
||||||
_screen->fadeIntoScreen3DO(4);
|
_screen->fadeIntoScreen3DO(4);
|
||||||
|
@ -754,7 +754,7 @@ bool ScalpelEngine::showOfficeCutscene3DO() {
|
||||||
ImageFile3DO titleImage_CoffeeNote("note.cel");
|
ImageFile3DO titleImage_CoffeeNote("note.cel");
|
||||||
|
|
||||||
_screen->clear();
|
_screen->clear();
|
||||||
_screen->transBlitFromUnscaled3DO(titleImage_CoffeeNote[0]._frame, Common::Point(0, 0));
|
_screen->transBlitFrom(titleImage_CoffeeNote[0]._frame, Common::Point(0, 0));
|
||||||
|
|
||||||
if (_sound->_voices) {
|
if (_sound->_voices) {
|
||||||
finished = _sound->playSound("prologue/sounds/note.aiff", WAIT_KBD_OR_FINISH);
|
finished = _sound->playSound("prologue/sounds/note.aiff", WAIT_KBD_OR_FINISH);
|
||||||
|
|
|
@ -172,46 +172,42 @@ void Surface::transBlitFromUnscaled(const Graphics::Surface &src, const Common::
|
||||||
addDirtyRect(Common::Rect(destPt.x, destPt.y, destPt.x + drawRect.width(),
|
addDirtyRect(Common::Rect(destPt.x, destPt.y, destPt.x + drawRect.width(),
|
||||||
destPt.y + drawRect.height()));
|
destPt.y + drawRect.height()));
|
||||||
|
|
||||||
// Draw loop
|
switch (src.format.bytesPerPixel) {
|
||||||
for (int yp = 0; yp < drawRect.height(); ++yp) {
|
case 1:
|
||||||
const byte *srcP = (const byte *)src.getBasePtr(
|
// 8-bit palettized: Draw loop
|
||||||
flipped ? drawRect.right - 1 : drawRect.left, drawRect.top + yp);
|
assert(_surface.format.bytesPerPixel == 1); // Security check
|
||||||
byte *destP = (byte *)getBasePtr(destPt.x, destPt.y + yp);
|
for (int yp = 0; yp < drawRect.height(); ++yp) {
|
||||||
|
const byte *srcP = (const byte *)src.getBasePtr(
|
||||||
|
flipped ? drawRect.right - 1 : drawRect.left, drawRect.top + yp);
|
||||||
|
byte *destP = (byte *)getBasePtr(destPt.x, destPt.y + yp);
|
||||||
|
|
||||||
for (int xp = 0; xp < drawRect.width(); ++xp, ++destP) {
|
for (int xp = 0; xp < drawRect.width(); ++xp, ++destP) {
|
||||||
if (*srcP != TRANSPARENCY)
|
if (*srcP != TRANSPARENCY)
|
||||||
*destP = overrideColor ? overrideColor : *srcP;
|
*destP = overrideColor ? overrideColor : *srcP;
|
||||||
|
|
||||||
srcP = flipped ? srcP - 1 : srcP + 1;
|
srcP = flipped ? srcP - 1 : srcP + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
}
|
case 2:
|
||||||
|
// 3DO 15-bit RGB565: Draw loop
|
||||||
|
assert(_surface.format.bytesPerPixel == 2); // Security check
|
||||||
|
for (int yp = 0; yp < drawRect.height(); ++yp) {
|
||||||
|
const uint16 *srcP = (const uint16 *)src.getBasePtr(
|
||||||
|
flipped ? drawRect.right - 1 : drawRect.left, drawRect.top + yp);
|
||||||
|
uint16 *destP = (uint16 *)getBasePtr(destPt.x, destPt.y + yp);
|
||||||
|
|
||||||
// TODO: Needs to get implemented properly
|
for (int xp = 0; xp < drawRect.width(); ++xp, ++destP) {
|
||||||
void Surface::transBlitFromUnscaled3DO(const Graphics::Surface &src, const Common::Point &pt) {
|
if (*srcP) // RGB 0, 0, 0 -> transparent on 3DO
|
||||||
Common::Rect drawRect(0, 0, src.w, src.h);
|
*destP = *srcP; // overrideColor ? overrideColor : *srcP;
|
||||||
Common::Rect destRect(pt.x, pt.y, pt.x + src.w, pt.y + src.h);
|
|
||||||
|
|
||||||
// Clip the display area to on-screen
|
srcP = flipped ? srcP - 1 : srcP + 1;
|
||||||
if (!clip(drawRect, destRect))
|
}
|
||||||
// It's completely off-screen
|
|
||||||
return;
|
|
||||||
|
|
||||||
Common::Point destPt(destRect.left, destRect.top);
|
|
||||||
addDirtyRect(Common::Rect(destPt.x, destPt.y, destPt.x + drawRect.width(),
|
|
||||||
destPt.y + drawRect.height()));
|
|
||||||
|
|
||||||
// Draw loop
|
|
||||||
for (int yp = 0; yp < drawRect.height(); ++yp) {
|
|
||||||
const uint16 *srcP = (const uint16 *)src.getBasePtr(drawRect.left, drawRect.top + yp);
|
|
||||||
uint16 *destP = (uint16 *)getBasePtr(destPt.x, destPt.y + yp);
|
|
||||||
|
|
||||||
for (int xp = 0; xp < drawRect.width(); ++xp, ++destP) {
|
|
||||||
if (*srcP) // 0 = transparent on 3DO
|
|
||||||
*destP = *srcP;
|
|
||||||
|
|
||||||
srcP = srcP + 1;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error("Surface: unsupported bytesperpixel");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,9 +65,6 @@ private:
|
||||||
void transBlitFromUnscaled(const Graphics::Surface &src, const Common::Point &pt, bool flipped,
|
void transBlitFromUnscaled(const Graphics::Surface &src, const Common::Point &pt, bool flipped,
|
||||||
int overrideColor);
|
int overrideColor);
|
||||||
|
|
||||||
public:
|
|
||||||
void transBlitFromUnscaled3DO(const Graphics::Surface &src, const Common::Point &pt);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Graphics::Surface _surface;
|
Graphics::Surface _surface;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue