Revert r48979. Instead, make the HQ scalers depend on the normal ones. Configure reflects that now.

svn-id: r48996
This commit is contained in:
Andre Heider 2010-05-10 17:25:12 +00:00
parent cdf30ecc5a
commit be0885e9d1
5 changed files with 41 additions and 60 deletions

View file

@ -45,12 +45,12 @@ static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
{"supereagle", "SuperEagle", GFX_SUPEREAGLE}, {"supereagle", "SuperEagle", GFX_SUPEREAGLE},
{"advmame2x", "AdvMAME2x", GFX_ADVMAME2X}, {"advmame2x", "AdvMAME2x", GFX_ADVMAME2X},
{"advmame3x", "AdvMAME3x", GFX_ADVMAME3X}, {"advmame3x", "AdvMAME3x", GFX_ADVMAME3X},
{"tv2x", "TV2x", GFX_TV2X},
{"dotmatrix", "DotMatrix", GFX_DOTMATRIX},
#endif
#ifdef USE_HQ_SCALERS #ifdef USE_HQ_SCALERS
{"hq2x", "HQ2x", GFX_HQ2X}, {"hq2x", "HQ2x", GFX_HQ2X},
{"hq3x", "HQ3x", GFX_HQ3X}, {"hq3x", "HQ3x", GFX_HQ3X},
#endif
{"tv2x", "TV2x", GFX_TV2X},
{"dotmatrix", "DotMatrix", GFX_DOTMATRIX},
#endif #endif
{0, 0, 0} {0, 0, 0}
}; };
@ -58,14 +58,10 @@ static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
// Table of relative scalers magnitudes // Table of relative scalers magnitudes
// [definedScale - 1][scaleFactor - 1] // [definedScale - 1][scaleFactor - 1]
static ScalerProc *scalersMagn[3][3] = { static ScalerProc *scalersMagn[3][3] = {
#if defined(USE_SCALERS) #ifdef USE_SCALERS
{ Normal1x, AdvMame2x, AdvMame3x }, { Normal1x, AdvMame2x, AdvMame3x },
{ Normal1x, Normal1x, Normal1o5x }, { Normal1x, Normal1x, Normal1o5x },
{ Normal1x, Normal1x, Normal1x } { Normal1x, Normal1x, Normal1x }
#elif defined(USE_HQ_SCALERS)
{ Normal1x, HQ2x, HQ3x },
{ Normal1x, Normal1x, Normal1x },
{ Normal1x, Normal1x, Normal1x }
#else // remove dependencies on other scalers #else // remove dependencies on other scalers
{ Normal1x, Normal1x, Normal1x }, { Normal1x, Normal1x, Normal1x },
{ Normal1x, Normal1x, Normal1x }, { Normal1x, Normal1x, Normal1x },
@ -84,7 +80,7 @@ static const int s_gfxModeSwitchTable[][4] = {
{ GFX_NORMAL, GFX_DOTMATRIX, -1, -1 } { GFX_NORMAL, GFX_DOTMATRIX, -1, -1 }
}; };
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
static int cursorStretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY); static int cursorStretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY);
#endif #endif
@ -335,13 +331,6 @@ bool OSystem_SDL::setGraphicsMode(int mode) {
case GFX_ADVMAME3X: case GFX_ADVMAME3X:
newScaleFactor = 3; newScaleFactor = 3;
break; break;
case GFX_TV2X:
newScaleFactor = 2;
break;
case GFX_DOTMATRIX:
newScaleFactor = 2;
break;
#endif // USE_SCALERS
#ifdef USE_HQ_SCALERS #ifdef USE_HQ_SCALERS
case GFX_HQ2X: case GFX_HQ2X:
newScaleFactor = 2; newScaleFactor = 2;
@ -350,6 +339,13 @@ bool OSystem_SDL::setGraphicsMode(int mode) {
newScaleFactor = 3; newScaleFactor = 3;
break; break;
#endif #endif
case GFX_TV2X:
newScaleFactor = 2;
break;
case GFX_DOTMATRIX:
newScaleFactor = 2;
break;
#endif // USE_SCALERS
default: default:
warning("unknown gfx mode %d", mode); warning("unknown gfx mode %d", mode);
@ -399,13 +395,6 @@ void OSystem_SDL::setGraphicsModeIntern() {
case GFX_ADVMAME3X: case GFX_ADVMAME3X:
newScalerProc = AdvMame3x; newScalerProc = AdvMame3x;
break; break;
case GFX_TV2X:
newScalerProc = TV2x;
break;
case GFX_DOTMATRIX:
newScalerProc = DotMatrix;
break;
#endif // USE_SCALERS
#ifdef USE_HQ_SCALERS #ifdef USE_HQ_SCALERS
case GFX_HQ2X: case GFX_HQ2X:
newScalerProc = HQ2x; newScalerProc = HQ2x;
@ -414,6 +403,13 @@ void OSystem_SDL::setGraphicsModeIntern() {
newScalerProc = HQ3x; newScalerProc = HQ3x;
break; break;
#endif #endif
case GFX_TV2X:
newScalerProc = TV2x;
break;
case GFX_DOTMATRIX:
newScalerProc = DotMatrix;
break;
#endif // USE_SCALERS
default: default:
error("Unknown gfx mode %d", _videoMode.mode); error("Unknown gfx mode %d", _videoMode.mode);
@ -902,7 +898,7 @@ void OSystem_SDL::internUpdateScreen() {
r->w = r->w * scale1; r->w = r->w * scale1;
r->h = dst_h * scale1; r->h = dst_h * scale1;
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
if (_videoMode.aspectRatioCorrection && orig_dst_y < height && !_overlayVisible) if (_videoMode.aspectRatioCorrection && orig_dst_y < height && !_overlayVisible)
r->h = stretch200To240((uint8 *) _hwscreen->pixels, dstPitch, r->w, r->h, r->x, r->y, orig_dst_y * scale1); r->h = stretch200To240((uint8 *) _hwscreen->pixels, dstPitch, r->w, r->h, r->x, r->y, orig_dst_y * scale1);
#endif #endif
@ -1114,7 +1110,7 @@ void OSystem_SDL::addDirtyRect(int x, int y, int w, int h, bool realCoordinates)
h = height - y; h = height - y;
} }
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
if (_videoMode.aspectRatioCorrection && !_overlayVisible && !realCoordinates) { if (_videoMode.aspectRatioCorrection && !_overlayVisible && !realCoordinates) {
makeRectStretchable(x, y, w, h); makeRectStretchable(x, y, w, h);
} }
@ -1375,7 +1371,7 @@ void OSystem_SDL::clearOverlay() {
_scalerProc((byte *)(_tmpscreen->pixels) + _tmpscreen->pitch + 2, _tmpscreen->pitch, _scalerProc((byte *)(_tmpscreen->pixels) + _tmpscreen->pitch + 2, _tmpscreen->pitch,
(byte *)_overlayscreen->pixels, _overlayscreen->pitch, _videoMode.screenWidth, _videoMode.screenHeight); (byte *)_overlayscreen->pixels, _overlayscreen->pitch, _videoMode.screenWidth, _videoMode.screenHeight);
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
if (_videoMode.aspectRatioCorrection) if (_videoMode.aspectRatioCorrection)
stretch200To240((uint8 *)_overlayscreen->pixels, _overlayscreen->pitch, stretch200To240((uint8 *)_overlayscreen->pixels, _overlayscreen->pitch,
_videoMode.overlayWidth, _videoMode.screenHeight * _videoMode.scaleFactor, 0, 0, 0); _videoMode.overlayWidth, _videoMode.screenHeight * _videoMode.scaleFactor, 0, 0, 0);
@ -1668,7 +1664,7 @@ void OSystem_SDL::blitCursor() {
_mouseCurState.vHotY = _mouseCurState.hotY; _mouseCurState.vHotY = _mouseCurState.hotY;
} }
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
int rH1 = rH; // store original to pass to aspect-correction function later int rH1 = rH; // store original to pass to aspect-correction function later
#endif #endif
@ -1706,10 +1702,8 @@ void OSystem_SDL::blitCursor() {
// If possible, use the same scaler for the cursor as for the rest of // If possible, use the same scaler for the cursor as for the rest of
// the game. This only works well with the non-blurring scalers so we // the game. This only works well with the non-blurring scalers so we
// actually only use the 1x, 1.5x, 2x and AdvMame scalers. // actually only use the 1x, 1.5x, 2x and AdvMame scalers.
if (_cursorTargetScale == 1 && (_videoMode.mode == GFX_DOUBLESIZE ||
_videoMode.mode == GFX_TRIPLESIZE || if (_cursorTargetScale == 1 && (_videoMode.mode == GFX_DOUBLESIZE || _videoMode.mode == GFX_TRIPLESIZE))
_videoMode.mode == GFX_HQ2X ||
_videoMode.mode == GFX_HQ3X))
scalerProc = _scalerProc; scalerProc = _scalerProc;
else else
scalerProc = scalersMagn[_cursorTargetScale - 1][_videoMode.scaleFactor - 1]; scalerProc = scalersMagn[_cursorTargetScale - 1][_videoMode.scaleFactor - 1];
@ -1718,7 +1712,7 @@ void OSystem_SDL::blitCursor() {
_mouseOrigSurface->pitch, (byte *)_mouseSurface->pixels, _mouseSurface->pitch, _mouseOrigSurface->pitch, (byte *)_mouseSurface->pixels, _mouseSurface->pitch,
_mouseCurState.w, _mouseCurState.h); _mouseCurState.w, _mouseCurState.h);
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
if (_videoMode.aspectRatioCorrection && _cursorTargetScale == 1) if (_videoMode.aspectRatioCorrection && _cursorTargetScale == 1)
cursorStretch200To240((uint8 *)_mouseSurface->pixels, _mouseSurface->pitch, rW, rH1, 0, 0, 0); cursorStretch200To240((uint8 *)_mouseSurface->pixels, _mouseSurface->pitch, rW, rH1, 0, 0, 0);
#endif #endif
@ -1727,9 +1721,9 @@ void OSystem_SDL::blitCursor() {
SDL_UnlockSurface(_mouseOrigSurface); SDL_UnlockSurface(_mouseOrigSurface);
} }
#if defined(USE_SCALERS) || defined(USE_HQ_SCALERS) #ifdef USE_SCALERS
// Basically it is kVeryFastAndUglyAspectMode of stretch200To240 from // Basically it is kVeryFastAndUglyAspectMode of stretch200To240 from
// graphics/scale/aspect.cpp // common/scale/aspect.cpp
static int cursorStretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY) { static int cursorStretch200To240(uint8 *buf, uint32 pitch, int width, int height, int srcX, int srcY, int origSrcY) {
int maxDstY = real2Aspect(origSrcY + height - 1); int maxDstY = real2Aspect(origSrcY + height - 1);
int y; int y;

View file

@ -94,7 +94,7 @@ AspectRatio::AspectRatio(int w, int h) {
_kh = h; _kh = h;
} }
#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && (defined(USE_SCALERS) || defined(USE_HQ_SCALERS)) #if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && defined(USE_SCALERS)
static const size_t AR_COUNT = 4; static const size_t AR_COUNT = 4;
static const char* desiredAspectRatioAsStrings[AR_COUNT] = { "auto", "4/3", "16/9", "16/10" }; static const char* desiredAspectRatioAsStrings[AR_COUNT] = { "auto", "4/3", "16/9", "16/10" };
static const AspectRatio desiredAspectRatios[AR_COUNT] = { AspectRatio(0, 0), AspectRatio(4,3), AspectRatio(16,9), AspectRatio(16,10) }; static const AspectRatio desiredAspectRatios[AR_COUNT] = { AspectRatio(0, 0), AspectRatio(4,3), AspectRatio(16,9), AspectRatio(16,10) };
@ -150,16 +150,12 @@ void OSystem_SDL::initBackend() {
memset(&_transactionDetails, 0, sizeof(_transactionDetails)); memset(&_transactionDetails, 0, sizeof(_transactionDetails));
_cksumValid = false; _cksumValid = false;
#if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && (defined(USE_SCALERS) || defined(USE_HQ_SCALERS)) #if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && defined(USE_SCALERS)
_videoMode.mode = GFX_DOUBLESIZE; _videoMode.mode = GFX_DOUBLESIZE;
_videoMode.scaleFactor = 2; _videoMode.scaleFactor = 2;
_videoMode.aspectRatioCorrection = ConfMan.getBool("aspect_ratio"); _videoMode.aspectRatioCorrection = ConfMan.getBool("aspect_ratio");
_videoMode.desiredAspectRatio = getDesiredAspectRatio(); _videoMode.desiredAspectRatio = getDesiredAspectRatio();
#ifdef USE_SCALERS
_scalerProc = Normal2x; _scalerProc = Normal2x;
#else
_scalerProc = HQ2x;
#endif
#else // for small screen platforms #else // for small screen platforms
_videoMode.mode = GFX_NORMAL; _videoMode.mode = GFX_NORMAL;
_videoMode.scaleFactor = 1; _videoMode.scaleFactor = 1;

18
configure vendored
View file

@ -1436,7 +1436,6 @@ if test -n "$_host"; then
_need_memalign=yes _need_memalign=yes
_backend="dc" _backend="dc"
_build_scalers="no" _build_scalers="no"
_build_hq_scalers="no"
_mad="yes" _mad="yes"
_zlib="yes" _zlib="yes"
add_line_to_config_mk 'ronindir = /usr/local/ronin' add_line_to_config_mk 'ronindir = /usr/local/ronin'
@ -1447,7 +1446,6 @@ if test -n "$_host"; then
_need_memalign=yes _need_memalign=yes
_backend="wii" _backend="wii"
_build_scalers="no" _build_scalers="no"
_build_hq_scalers="no"
_mt32emu="no" _mt32emu="no"
_port_mk="backends/platform/wii/wii.mk" _port_mk="backends/platform/wii/wii.mk"
add_line_to_config_mk 'GAMECUBE = 1' add_line_to_config_mk 'GAMECUBE = 1'
@ -1574,7 +1572,6 @@ if test -n "$_host"; then
_need_memalign=yes _need_memalign=yes
_backend="ps2" _backend="ps2"
_build_scalers="no" _build_scalers="no"
_build_hq_scalers="no"
_mt32emu="no" _mt32emu="no"
# HACK to enable mad & zlib (they are not properly detected due to linker issues). # HACK to enable mad & zlib (they are not properly detected due to linker issues).
# This trick doesn't work for tremor right now, as the PS2 port the resulting library # This trick doesn't work for tremor right now, as the PS2 port the resulting library
@ -1602,7 +1599,6 @@ if test -n "$_host"; then
_need_memalign=yes _need_memalign=yes
_backend="psp" _backend="psp"
_build_scalers="no" _build_scalers="no"
_build_hq_scalers="no"
_mt32emu="no" _mt32emu="no"
_port_mk="backends/platform/psp/psp.mk" _port_mk="backends/platform/psp/psp.mk"
;; ;;
@ -1618,8 +1614,6 @@ if test -n "$_host"; then
add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1' add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
_backend="samsungtv" _backend="samsungtv"
_mt32emu="no" _mt32emu="no"
_build_scalers="yes"
_build_hq_scalers="yes"
_vkeybd="yes" _vkeybd="yes"
;; ;;
wii) wii)
@ -1627,7 +1621,6 @@ if test -n "$_host"; then
_need_memalign=yes _need_memalign=yes
_backend="wii" _backend="wii"
_build_scalers="no" _build_scalers="no"
_build_hq_scalers="no"
_port_mk="backends/platform/wii/wii.mk" _port_mk="backends/platform/wii/wii.mk"
add_line_to_config_mk 'GAMECUBE = 0' add_line_to_config_mk 'GAMECUBE = 0'
add_line_to_config_h "#define DEBUG_WII_USBGECKO" add_line_to_config_h "#define DEBUG_WII_USBGECKO"
@ -1913,6 +1906,7 @@ add_to_config_mk_if_yes "$_16bit" 'USE_RGB_COLOR = 1'
# Check whether to enable the (hq) scalers # Check whether to enable the (hq) scalers
# #
if test "$_build_scalers" = no ; then if test "$_build_scalers" = no ; then
_build_hq_scalers=no
_def_scalers='#undef USE_SCALERS' _def_scalers='#undef USE_SCALERS'
else else
_def_scalers='#define USE_SCALERS' _def_scalers='#define USE_SCALERS'
@ -2318,11 +2312,11 @@ if test "$_16bit" = yes ; then
fi fi
if test "$_build_scalers" = yes ; then if test "$_build_scalers" = yes ; then
echo_n ", scalers" if test "$_build_hq_scalers" = yes ; then
fi echo_n ", HQ scalers"
else
if test "$_build_hq_scalers" = yes ; then echo_n ", scalers"
echo_n ", HQ scalers" fi
fi fi
if test "$_mt32emu" = yes ; then if test "$_mt32emu" = yes ; then

View file

@ -48,14 +48,7 @@ MODULE_OBJS += \
scaler/Normal2xARM.o scaler/Normal2xARM.o
endif endif
endif
ifdef USE_HQ_SCALERS ifdef USE_HQ_SCALERS
ifndef USE_SCALERS
MODULE_OBJS += \
scaler/aspect.o
endif
MODULE_OBJS += \ MODULE_OBJS += \
scaler/hq2x.o \ scaler/hq2x.o \
scaler/hq3x.o scaler/hq3x.o
@ -68,5 +61,7 @@ endif
endif endif
endif
# Include common rules # Include common rules
include $(srcdir)/rules.mk include $(srcdir)/rules.mk

View file

@ -42,6 +42,7 @@ typedef void ScalerProc(const uint8 *srcPtr, uint32 srcPitch,
DECLARE_SCALER(Normal1x); DECLARE_SCALER(Normal1x);
#ifdef USE_SCALERS #ifdef USE_SCALERS
DECLARE_SCALER(Normal2x); DECLARE_SCALER(Normal2x);
DECLARE_SCALER(Normal3x); DECLARE_SCALER(Normal3x);
DECLARE_SCALER(Normal1o5x); DECLARE_SCALER(Normal1o5x);
@ -55,13 +56,14 @@ DECLARE_SCALER(AdvMame3x);
DECLARE_SCALER(TV2x); DECLARE_SCALER(TV2x);
DECLARE_SCALER(DotMatrix); DECLARE_SCALER(DotMatrix);
#endif // #ifdef USE_SCALERS
#ifdef USE_HQ_SCALERS #ifdef USE_HQ_SCALERS
DECLARE_SCALER(HQ2x); DECLARE_SCALER(HQ2x);
DECLARE_SCALER(HQ3x); DECLARE_SCALER(HQ3x);
#endif #endif
#endif // #ifdef USE_SCALERS
// creates a 160x100 thumbnail for 320x200 games // creates a 160x100 thumbnail for 320x200 games
// and 160x120 thumbnail for 320x240 and 640x480 games // and 160x120 thumbnail for 320x240 and 640x480 games
// only 565 mode // only 565 mode