diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 0ed06d296..fd80c2dd8 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -26,7 +26,7 @@ regenerated and the application recompiled. */ -#define DEF_PROPS_SIZE 3246 +#define DEF_PROPS_SIZE 3247 static const char* DefProps[DEF_PROPS_SIZE][20] = { { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2478,6 +2478,7 @@ static const char* DefProps[DEF_PROPS_SIZE][20] = { { "c5930d0e8cdae3e037349bfa08e871be", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "c59633dbebd926c150fb6d30b0576405", "Telegames", "5861 A030", "Bogey Blaster (1989) (Telegames)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c5a76bafc4676edb76e0126fb9f0fb2d", "Charles Morgan", "", "Zero Patrol (Charles Morgan) (Hack)", "Hack of Moon Patrol", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5bab953ac13dbb2cba03cd0684fb125", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "c5c7cc66febf2d4e743b4459de7ed868", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1983) (Atari) (PAL) [a]", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c5d2834bf98e90245e545573eb7e6bbc", "CCE", "", "Snoopy and the Red Baron (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c5dd8399257d8862f3952be75c23e0eb", "Atari - GCC", "CX2680", "RealSports Tennis (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/TIA.cxx b/src/emucore/TIA.cxx index 16c7a0a48..e8072ea13 100644 --- a/src/emucore/TIA.cxx +++ b/src/emucore/TIA.cxx @@ -821,6 +821,33 @@ inline void TIA::updateFrameScanline(uInt32 clocksToUpdate, uInt32 hpos) myCurrentP1Mask = &TIATables::PxMask[myPOSP1 & 0x03] [mySuppressP1][myNUSIZ1 & 0x07][160 - (myPOSP1 & 0xFC)]; + // TODO - 08-27-2009: Simulate the weird effects of Cosmic Ark and + // Stay Frosty. The movement itself is well understood, but there + // also seems to be some widening and blanking occurring as well. + // This doesn't properly emulate the effect, but it does give a + // fair approximation. More testing is required to figure out + // what's really going on here. + if(myHMM0mmr && myPOSM0 % 4 == 3) + { + // Stretch this missle so it's at least 2 pixels wide + myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] + [myNUSIZ0 & 0x07][((myNUSIZ0 & 0x30) >> 4) | 0x01] + [160 - (myPOSM0 & 0xFC)]; + } + else + myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] + [myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)]; + if(myHMM1mmr && myPOSM1 % 4 == 3) + { + // Stretch this missle so it's at least 2 pixels wide + myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] + [myNUSIZ1 & 0x07][((myNUSIZ1 & 0x30) >> 4) | 0x01] + [160 - (myPOSM1 & 0xFC)]; + } + else + myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] + [myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)]; + switch(myEnabledObjects | myPlayfieldPriorityAndScore) { // Background @@ -1445,54 +1472,9 @@ void TIA::updateFrame(Int32 clock) // Apply extra clocks for 'more motion required/mmr' if(myHMP0mmr) { myPOSP0 -= 17; posChanged = true; } if(myHMP1mmr) { myPOSP1 -= 17; posChanged = true; } + if(myHMM0mmr) { myPOSM0 -= 17; posChanged = true; } + if(myHMM1mmr) { myPOSM1 -= 17; posChanged = true; } if(myHMBLmmr) { myPOSBL -= 17; posChanged = true; } - - // TODO - 08-27-2009: Simulate the weird effects of Cosmic Ark and - // Stay Frosty. The movement itself is well understood, but there - // also seems to be some widening and blanking occurring as well. - // This doesn't properly emulate the effect, but it does give a - // fair approximation. More testing is required to figure out - // what's really going on here. - if(myHMM0mmr) - { - myPOSM0 -= 17; if(myPOSM0 < 0) { myPOSM0 += 160; } myPOSM0 %= 160; - if(myPOSM0 % 4 == 3) - { - // Stretch this missle so it's at least 2 pixels wide - myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] - [myNUSIZ0 & 0x07][((myNUSIZ0 & 0x30) >> 4) | 0x01] - [160 - (myPOSM0 & 0xFC)]; - } - else - myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] - [myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)]; - } - else - { - if(myPOSM0 < 0) { myPOSM0 += 160; } myPOSM0 %= 160; - myCurrentM0Mask = &TIATables::MxMask[myPOSM0 & 0x03] - [myNUSIZ0 & 0x07][(myNUSIZ0 & 0x30) >> 4][160 - (myPOSM0 & 0xFC)]; - } - if(myHMM1mmr) - { - myPOSM1 -= 17; if(myPOSM1 < 0) { myPOSM1 += 160; } myPOSM1 %= 160; - if(myPOSM1 % 4 == 3) - { - // Stretch this missle so it's at least 2 pixels wide - myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] - [myNUSIZ1 & 0x07][((myNUSIZ1 & 0x30) >> 4) | 0x01] - [160 - (myPOSM1 & 0xFC)]; - } - else - myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] - [myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)]; - } - else - { - if(myPOSM1 < 0) { myPOSM1 += 160; } myPOSM1 %= 160; - myCurrentM1Mask = &TIATables::MxMask[myPOSM1 & 0x03] - [myNUSIZ1 & 0x07][(myNUSIZ1 & 0x30) >> 4][160 - (myPOSM1 & 0xFC)]; - } #endif // Make sure positions are in range if(posChanged) diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index eef57aae6..68ff53e3b 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -19648,3 +19648,11 @@ "Cartridge.Name" "Challenge of.... Nexar, The (Jone Yuan) (Hack)" "Cartridge.Note" "Hack" "" + +"Cartridge.MD5" "c5bab953ac13dbb2cba03cd0684fb125" +"Cartridge.Manufacturer" "SpiceWare - Darrell Spice Jr." +"Cartridge.Name" "Stay Frosty (SpiceWare)" +"Cartridge.Note" "Part of Stella's Stocking 2007 Xmas compilation" +"Cartridge.Rarity" "Homebrew" +"Display.Phosphor" "YES" +""