Added missing code for 24-bit mode software zooming without dirty rects,

which I left out in the previous commit.

Added properties entry for "Conquest of Mars".


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1198 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2006-12-10 18:07:39 +00:00
parent 6608b99d8c
commit 32c41b1d58
4 changed files with 74 additions and 41 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: FrameBufferSoft.cxx,v 1.62 2006-12-10 17:04:33 stephena Exp $
// $Id: FrameBufferSoft.cxx,v 1.63 2006-12-10 18:07:34 stephena Exp $
//============================================================================
#include <SDL.h>
@ -327,6 +327,47 @@ void FrameBufferSoft::drawMediaSource()
case kSoftZoom_24:
{
SDL_Rect temp;
temp.x = temp.y = temp.w = temp.h = 0;
myRectList->add(&temp);
uInt8* buffer = (uInt8*)myScreen->pixels;
uInt32 bufofsY = 0;
uInt32 screenofsY = 0;
for(uInt32 y = 0; y < height; ++y)
{
uInt32 ystride = myZoomLevel;
while(ystride--)
{
uInt32 pos = screenofsY;
for(uInt32 x = 0; x < width; ++x)
{
const uInt32 bufofs = bufofsY + x;
uInt32 xstride = myZoomLevel;
uInt8 v = currentFrame[bufofs];
uInt8 w = previousFrame[bufofs];
if(v != w || theRedrawTIAIndicator)
{
uInt32 pixel = myDefPalette[v];
uInt8 r = pixel & 0xff;
uInt8 g = (pixel & 0xff00) >> 8;
uInt8 b = (pixel & 0xff0000) >> 16;
while(xstride--)
{
buffer[pos++] = r; buffer[pos++] = g; buffer[pos++] = b;
buffer[pos++] = r; buffer[pos++] = g; buffer[pos++] = b;
}
}
else // try to eliminate multply whereever possible
pos += xstride + xstride + xstride + xstride + xstride + xstride;
}
screenofsY += myPitch;
}
bufofsY += width;
}
break; // kSoftZoom_24
}
@ -373,9 +414,6 @@ void FrameBufferSoft::drawMediaSource()
case kPhosphor_16:
{
// Since phosphor mode updates the whole screen,
// we might as well use SDL_Flip (see postFrameUpdate)
myUseDirtyRects = false;
SDL_Rect temp;
temp.x = temp.y = temp.w = temp.h = 0;
myRectList->add(&temp);
@ -412,9 +450,6 @@ void FrameBufferSoft::drawMediaSource()
case kPhosphor_24:
{
// Since phosphor mode updates the whole screen,
// we might as well use SDL_Flip (see postFrameUpdate)
myUseDirtyRects = false;
SDL_Rect temp;
temp.x = temp.y = temp.w = temp.h = 0;
myRectList->add(&temp);
@ -435,21 +470,10 @@ void FrameBufferSoft::drawMediaSource()
uInt8 v = currentFrame[bufofs];
uInt8 w = previousFrame[bufofs];
uInt8 r, g, b;
if(SDL_BYTEORDER == SDL_BIG_ENDIAN)
{
uInt32 pixel = myAvgPalette[v][w];
b = pixel & 0xff;
g = (pixel & 0xff00) >> 8;
r = (pixel & 0xff0000) >> 16;
}
else
{
uInt32 pixel = myAvgPalette[v][w];
r = pixel & 0xff;
g = (pixel & 0xff00) >> 8;
b = (pixel & 0xff0000) >> 16;
}
uInt32 pixel = myAvgPalette[v][w];
uInt8 r = pixel & 0xff;
uInt8 g = (pixel & 0xff00) >> 8;
uInt8 b = (pixel & 0xff0000) >> 16;
while(xstride--)
{
@ -466,9 +490,6 @@ void FrameBufferSoft::drawMediaSource()
case kPhosphor_32:
{
// Since phosphor mode updates the whole screen,
// we might as well use SDL_Flip (see postFrameUpdate)
myUseDirtyRects = false;
SDL_Rect temp;
temp.x = temp.y = temp.w = temp.h = 0;
myRectList->add(&temp);
@ -746,9 +767,15 @@ void FrameBufferSoft::stateChanged(EventHandler::State state)
// When in a UI mode, always use dirty rects
// Otherwise, check the 'dirtyrects' setting
// Phosphor mode implies a full update, so turn on dirty rects
bool emulation = state == EventHandler::S_EMULATE;
if(emulation)
myUseDirtyRects = myOSystem->settings().getBool("dirtyrects");
{
if(myUsePhosphor)
myUseDirtyRects = false;
else
myUseDirtyRects = myOSystem->settings().getBool("dirtyrects");
}
else
myUseDirtyRects = true;
@ -790,7 +817,8 @@ void FrameBufferSoft::stateChanged(EventHandler::State state)
}
// Have the changes take effect
cls();
myOSystem->eventHandler().refreshDisplay();
//cerr << "Render type: " << myRenderType << endl;
//cerr << "Render type = " << myRenderType << ", dirty rects = " << myUseDirtyRects << endl;
}

View File

@ -346,7 +346,7 @@ static const char* DefProps[][23] = {
{ "4dbf47c7f5ac767a3b07843a530d29a5", "Ric Pryor", "", "Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack)", "Bump 'n' Jump Hack", "", "", "E7", "", "", "", "", "", "", "", "", "8", "152", "41", "188", "", "", "" },
{ "4e4895c3381aa4220f8c2795d6338237", "", "", "Backwards Cannonball v1 (Human Cannonball Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "8", "152", "", "", "", "", "" },
{ "4faeb04b1b7fb0fa25db05753182a898", "", "", "2600 Digital Clock (V x.xx) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "51de328e79d919d7234cf19c1cd77fbc", "Atari", "CX2678", "Dukes of Hazzard (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "35", "195", "", "", "" },
{ "514f911ecff2be5eeff2f39c49a9725c", "Parker Bros", "PB5350", "Sky Skipper (1983) (Parker Bros) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "PAL", "", "", "40", "220", "", "", "" },
{ "52bae1726d2d7a531c9ca81e25377fc3", "", "", "Space Instigators (V1.8 Fixed) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "5385cf2a04de1d36ab55c73174b84db0", "", "", "Combat Rock (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "551a64a945d7d6ece81e9c1047acedbc", "Matthias Jaap", "", "Coffee Cup Soccer by matthias Jaap (Pele's Soccer Hack)", "Hack of Pele's Soccer (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -685,8 +685,8 @@ static const char* DefProps[][23] = {
{ "4e99ebd65a967cabf350db54405d577c", "Coleco", "2663", "Time Pilot (1983) (Coleco) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "35", "193", "", "", "" },
{ "4f781f0476493c50dc578336f1132a67", "Atari", "CX2611", "Indy 500 (1978) (Atari) (PAL) [p1][o1][!]", "Uses Driving Controllers", "Uncommon", "", "", "", "", "", "", "Driving", "Driving", "", "PAL", "", "", "54", "205", "", "", "" },
{ "4fc1b85b8074b4b9436d097900e34f29", "", "", "John K Harvey's Equalizer (NTSC) (PD) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Yes", "", "" },
{ "514f911ecff2be5eeff2f39c49a9725c", "Parker Bros", "PB5350", "Sky Skipper (1983) (Parker Bros) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "PAL", "", "", "40", "220", "", "", "" },
{ "51f15b39d9f502c2361b6ba6a73464d4", "", "", "Amanda Invaders (PD) [o1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "39", "", "", "", "" },
{ "50ef88f9a5e0e1e6b86e175362a27fdb", "", "", "Multi-Sprite Game V2.4 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "51de328e79d919d7234cf19c1cd77fbc", "Atari", "CX2678", "Dukes of Hazzard (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "35", "195", "", "", "" },
{ "52615ae358a68de6e76467e95eb404c7", "", "", "DJdsl-wopd (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "52e9db3fe8b5d336843acac234aaea79", "", "", "Fu Kung! (V0.11) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "537ed1e0d80e6c9f752b33ea7acbe079", "", "", "A-VCS-tec Challenge (beta 5) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -1363,10 +1363,10 @@ static const char* DefProps[][23] = {
{ "4f89b897444e7c3b36aed469b8836839", "", "", "BMX Air Master (1989) (Atari) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "64", "202", "", "", "" },
{ "4fbe0f10a6327a76f83f83958c3cbeff", "", "", "Keystone Kapers (CCE) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "8", "152", "39", "200", "", "", "" },
{ "502044b1ac111b394e6fbb0d821fca41", "", "", "Hangman Invader 4letter (Hangman Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "50ef88f9a5e0e1e6b86e175362a27fdb", "", "", "Multi-Sprite Game V2.4 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "50a410a5ded0fc9aa6576be45a04f215", "Activision", "AG-019", "Sky Jinks (1982) (Activision) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "PAL", "8", "152", "63", "191", "", "", "" },
{ "512e874a240731d7378586a05f28aec6", "Tigervision", "7-005", "Marauder (1982) (Tigervision) (PAL) [!]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "PAL", "", "", "63", "200", "", "", "" },
{ "516ffd008057a1d78d007c851e6eff37", "ParkerB", "", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "36", "256", "", "", "" },
{ "51e390424f20e468d2b480030ce95d7b", "Video Game Program", "", "Fire Bird (Video Game Program) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "62", "", "", "", "" },
{ "522c9cf684ecd72db2f85053e6f6f720", "Rainbow Vision", "", "Year 1999, The (Rainbow Vision) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "64", "219", "", "", "" },
{ "51f15b39d9f502c2361b6ba6a73464d4", "", "", "Amanda Invaders (PD) [o1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "39", "", "", "", "" },
{ "525ea747d746f3e80e3027720e1fa7ac", "Activision", "AZ-032", "Pressure Cooker (1983) (Activision) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "PAL", "8", "152", "64", "200", "", "", "" },
{ "52a0003efb3b1c49fcde4dbc2c685d8f", "Atari", "CX2641 / 99807 / 75105", "Surround (1978) (Atari) [a1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "52e1954dc01454c03a336b30c390fb8d", "Retroactive", "", "Qb (2.14) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Yes", "", "" },
@ -2719,14 +2719,14 @@ static const char* DefProps[][23] = {
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "50a410a5ded0fc9aa6576be45a04f215", "Activision", "AG-019", "Sky Jinks (1982) (Activision) (PAL) [!]", "", "Rare", "", "", "", "", "", "", "", "", "", "PAL", "8", "152", "63", "191", "", "", "" },
{ "512e874a240731d7378586a05f28aec6", "Tigervision", "7-005", "Marauder (1982) (Tigervision) (PAL) [!]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "PAL", "", "", "63", "200", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "50dd164c77c4df579843baf838327469", "Champ Games", "", "Conquest Of Mars", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "515046e3061b7b18aa3a551c3ae12673", "Atari", "CX2692", "Moon Patrol (1983) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "8", "152", "47", "175", "", "", "" },
{ "517592e6e0c71731019c0cebc2ce044f", "Parker Bros", "PB5550", "Q-bert's Qubes (1983) (Parker Bros) [a1]", "", "Extremely Rare", "", "E0", "", "", "", "", "", "", "", "", "8", "144", "32", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "51e390424f20e468d2b480030ce95d7b", "Video Game Program", "", "Fire Bird (Video Game Program) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "62", "", "", "", "" },
{ "522c9cf684ecd72db2f85053e6f6f720", "Rainbow Vision", "", "Year 1999, The (Rainbow Vision) (PAL) [!]", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "64", "219", "", "", "" },
{ "524693b337f7ecc9e8b9126e04a232af", "", "", "Euchre (19-08-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "528400fad9a77fd5ad7fc5fdc2b7d69d", "Starpath", "AR-4201", "Sword of Saros (1983) (Starpath)", "", "Extremely Rare", "", "AR", "", "", "", "", "", "", "", "", "8", "144", "35", "200", "", "", "" },

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: EventHandler.cxx,v 1.183 2006-12-10 17:04:34 stephena Exp $
// $Id: EventHandler.cxx,v 1.184 2006-12-10 18:07:39 stephena Exp $
//============================================================================
#include <sstream>
@ -195,7 +195,6 @@ void EventHandler::refreshDisplay(bool forceUpdate)
switch(myState)
{
case S_EMULATE:
myOSystem->frameBuffer().cls();
myOSystem->frameBuffer().refresh();
break;

View File

@ -20958,3 +20958,9 @@
"Display.Format" "PAL"
"Display.Height" "250"
""
"Cartridge.MD5" "50dd164c77c4df579843baf838327469"
"Cartridge.Manufacturer" "Champ Games"
"Cartridge.Name" "Conquest Of Mars"
"Cartridge.Rarity" "Homebrew"
""