Merge branch 'master' into feature/controller-remapping

This commit is contained in:
Stephen Anthony 2018-05-26 13:38:37 -02:30
commit dc1802b49b
16 changed files with 48 additions and 29 deletions

View File

@ -12,7 +12,7 @@
Release History
===========================================================================
5.1.1 to 5.2: (MMM d, 2018)
5.1.2 to 5.2: (MMM d, 2018)
* Extra functionality for Time Machine dialog (start/stop recording;
minor fixes; TODO button and initial key repeats...)
@ -21,13 +21,23 @@
* UI modernization (new widget look, dialog titles added, dialogs refactored)
* Fixed bug in UI navigation with joystick hat movement.
* Updated version of SDL included with the Windows build to 2.0.8.
* The Linux builds now use the system-installed PNG and ZLIB libraries
by default.
-Have fun!
5.1.1 to 5.1.2: (May 20, 2018)
* Fixed bug with SaveKey autodetection; some ROMs were not correctly
detecting that a virtual SaveKey device was plugged in. This notably
fixes issues in "Super Cobra" and "Scramble" ROMs.
* Make previously mentioned ROMs use the SaveKey device by default.
* Fixed bug in UI navigation with joystick hat movement.
5.1 to 5.1.1: (February 21, 2018)
* Fixed bug in Stargunner ROM starting with a blank screen.

2
debian/compat vendored
View File

@ -1 +1 @@
5
9

2
debian/control vendored
View File

@ -3,7 +3,7 @@ Section: games
Priority: optional
Maintainer: Stephen Anthony <sa666666@gmail.com>
Standards-Version: 3.7.2
Build-Depends: debhelper (>= 5.0.0), libsdl2-dev
Build-Depends: debhelper (>= 5.0.0), libsdl2-dev, libpng-dev
Package: stella
Architecture: any

2
debian/rules vendored
View File

@ -20,7 +20,7 @@ endif
config.status: configure
dh_testdir
CXXFLAGS="$(CXXFLAGS)" ./configure --prefix=/usr --force-builtin-libpng
CXXFLAGS="$(CXXFLAGS)" ./configure --prefix=/usr
build: build-stamp

View File

@ -27,7 +27,7 @@
#include "StateManager.hxx"
#define STATE_HEADER "05010000state"
#define STATE_HEADER "05019000state"
// #define MOVIE_HEADER "03030000movie"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -414,7 +414,7 @@ bool DebuggerParser::validateArgs(int cmd)
{
if(required)
{
commandResult.str();
void(commandResult.str());
outputCommandError("missing required argument(s)", cmd);
return false; // needed args. didn't get 'em.
}
@ -513,13 +513,13 @@ cerr << "curCount = " << curCount << endl
if(curCount < argRequiredCount)
{
commandResult.str();
void(commandResult.str());
outputCommandError("missing required argument(s)", cmd);
return false;
}
else if(argCount > curCount)
{
commandResult.str();
void(commandResult.str());
outputCommandError("too many arguments", cmd);
return false;
}

View File

@ -64,9 +64,10 @@ CartridgeBUS::CartridgeBUS(const BytePtr& image, uInt32 size,
myDisplayImage = myBUSRAM + DSRAM;
// Create Thumbulator ARM emulator
string prefix = settings.getBool("dev.settings") ? "plr." : "dev.";
myThumbEmulator = make_unique<Thumbulator>(
reinterpret_cast<uInt16*>(myImage), reinterpret_cast<uInt16*>(myBUSRAM),
settings.getBool("thumb.trapfatal"), Thumbulator::ConfigureFor::BUS, this
settings.getBool(prefix + "thumb.trapfatal"), Thumbulator::ConfigureFor::BUS, this
);
setInitialState();

View File

@ -67,9 +67,10 @@ CartridgeCDF::CartridgeCDF(const BytePtr& image, uInt32 size,
setVersion();
// Create Thumbulator ARM emulator
string prefix = settings.getBool("dev.settings") ? "plr." : "dev.";
myThumbEmulator = make_unique<Thumbulator>(
reinterpret_cast<uInt16*>(myImage), reinterpret_cast<uInt16*>(myCDFRAM),
settings.getBool("thumb.trapfatal"), myVersion ?
settings.getBool(prefix + "thumb.trapfatal"), myVersion ?
Thumbulator::ConfigureFor::CDF1 : Thumbulator::ConfigureFor::CDF, this);
setInitialState();

View File

@ -53,10 +53,11 @@ CartridgeDPCPlus::CartridgeDPCPlus(const BytePtr& image, uInt32 size,
myFrequencyImage = myDisplayImage + 0x1000;
// Create Thumbulator ARM emulator
string prefix = settings.getBool("dev.settings") ? "plr." : "dev.";
myThumbEmulator = make_unique<Thumbulator>
(reinterpret_cast<uInt16*>(myImage),
reinterpret_cast<uInt16*>(myDPCRAM),
settings.getBool("thumb.trapfatal"),
settings.getBool(prefix + "thumb.trapfatal"),
Thumbulator::ConfigureFor::DPCplus,
this);

View File

@ -473,7 +473,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "2319922df4d0c820b3e5f15faa870cc3", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2327456f86d7e0deda94758c518d05b3", "Digitel", "", "Mr. Postman (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2351d26d0bfdee3095bec9c05cbcf7b0", "", "", "Warring Worms (19-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2353725ec98e0f0073462109e886efd7", "Champ Games", "CG-03-P", "Scramble (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" },
{ "2353725ec98e0f0073462109e886efd7", "Champ Games", "CG-03-P", "Scramble (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "PAL60", "", "", "YES", "" },
{ "235436ab0832370e73677c9c6f0c8b06", "", "", "Beast Invaders (Double Shot) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2365e1534d67f94d8670394ab99150ce", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "YES", "" },
{ "23d445ea19a18fb78d5035878d9fb649", "CBS Electronics - JWDA, Sylvia Day, Todd Marshall, Henry Will IV", "4L1818, 4L1819, 4L1820, 4L1821", "Mouse Trap (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
@ -1186,7 +1186,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "59e53894b3899ee164c91cfa7842da66", "Data Age", "", "Survival Run (1983) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "59e96de9628e8373d1c685f5e57dcf10", "PlayAround - J.H.M.", "204", "Beat 'Em & Eat 'Em (1982) (PlayAround)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" },
{ "59f596285d174233c84597dee6f34f1f", "CCE", "C-811", "River Raid (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "5a0ff99ba10bd26d542e1d6f59f56850", "Champ Games", "CG-04-P", "Super Cobra Arcade (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" },
{ "5a0ff99ba10bd26d542e1d6f59f56850", "Champ Games", "CG-04-P", "Super Cobra Arcade (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "PAL60", "", "", "YES", "" },
{ "5a17e30e6e911e74ccd7b716d02b16c6", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "5a272012a62becabcd52920348c7c60b", "Star Game", "", "Pitfall (Star Game)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "5a2f2dcd775207536d9299e768bcd2df", "Otto Versand", "781698", "Flippern (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -1762,7 +1762,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "83f50fa0fbae545e4b88bb53b788c341", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" },
{ "83fafd7bd12e3335166c6314b3bde528", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "840a5a2eaea24d95d289f514fd12f9bb", "", "", "GBImprov (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "841057f83ce3731e6bbfda1707cbca58", "Champ Games", "CG-04-N", "Super Cobra Arcade (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "841057f83ce3731e6bbfda1707cbca58", "Champ Games", "CG-04-N", "Super Cobra Arcade (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "", "", "YES", "" },
{ "841b7bc1cad05f5408302308777d49dc", "Activision", "", "Unknown Activision Game (10-22-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "84290e333ff7567c2380f179430083b8", "Imagic, Dave Johnson", "13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "843435eb360ed72085f7ab9374f9749a", "Joe Grand", "", "SCSIcide (1.31) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" },
@ -3032,7 +3032,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
{ "e9cb18770a41a16de63b124c1e8bd493", "Parker Brothers, Joe Gaucher", "931519", "Popeye (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "e9e646f730b8400cd5da08c849ef3e3b", "Tron", "", "Enduro (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "e9e6ad30549a6e2cd89fe93b7691d447", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)", "AKA Nile Flyer, Sphinx", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "e9f25c7af4f27c9e1b5b8f6fe6141e8c", "Champ Games", "CG-03-N", "Scramble (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "e9f25c7af4f27c9e1b5b8f6fe6141e8c", "Champ Games", "CG-03-N", "Scramble (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "", "", "YES", "" },
{ "ea38fcfc06ad87a0aed1a3d1588744e4", "Atari, Lou Harp", "CX26122", "Sinistar (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "ea6d40db5498d6386571a76df448aa4c", "", "", "Vertical Playfield Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "ea7e25ade3fe68f5b786ee0aa82b1fe5", "", "", "Galatic (208 in 1) (Unknown) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },

View File

@ -149,9 +149,6 @@ void MT24LC256::update()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void MT24LC256::systemReset()
{
myCyclesWhenSDASet = myCyclesWhenSCLSet = myCyclesWhenTimerSet =
mySystem.cycles();
memset(myPageHit, false, sizeof(myPageHit));
}
@ -399,8 +396,8 @@ bool MT24LC256::jpee_timercheck(int mode)
{
if(myTimerActive)
{
uInt32 elapsed = uInt32(mySystem.cycles() - myCyclesWhenTimerSet);
myTimerActive = elapsed < uInt32(5000000.0 / 838.0);
uInt64 elapsed = mySystem.cycles() - myCyclesWhenTimerSet;
myTimerActive = elapsed < uInt64(5000000.0 / 838.0);
}
return myTimerActive;
}

View File

@ -2733,6 +2733,7 @@
"Cartridge.Name" "Scramble (PAL60)"
"Cartridge.Note" "Compatible with Genesis controller"
"Cartridge.Rarity" "Homebrew"
"Controller.Right" "SAVEKEY"
"Display.Format" "PAL60"
"Display.Phosphor" "YES"
""
@ -7146,6 +7147,7 @@
"Cartridge.Name" "Super Cobra Arcade (PAL60)"
"Cartridge.Note" "Compatible with Genesis controller"
"Cartridge.Rarity" "Homebrew"
"Controller.Right" "SAVEKEY"
"Display.Format" "PAL60"
"Display.Phosphor" "YES"
""
@ -10697,6 +10699,7 @@
"Cartridge.Name" "Super Cobra Arcade (NTSC)"
"Cartridge.Note" "Compatible with Genesis controller"
"Cartridge.Rarity" "Homebrew"
"Controller.Right" "SAVEKEY"
"Display.Phosphor" "YES"
""
@ -18507,6 +18510,7 @@
"Cartridge.Name" "Scramble (NTSC)"
"Cartridge.Note" "Compatible with Genesis controller"
"Cartridge.Rarity" "Homebrew"
"Controller.Right" "SAVEKEY"
"Display.Phosphor" "YES"
""

View File

@ -116,7 +116,7 @@ bool PaddleReader::save(Serializer& out) const
out.putDouble(myU);
out.putDouble(myValue);
out.putDouble(myTimestamp);
out.putLong(myTimestamp);
out.putInt(int(myConsoleTiming));
out.putDouble(myClockFreq);
@ -144,7 +144,7 @@ bool PaddleReader::load(Serializer& in)
myU = in.getDouble();
myValue = in.getDouble();
myTimestamp = in.getDouble();
myTimestamp = in.getLong();
myConsoleTiming = ConsoleTiming(in.getInt());
myClockFreq = in.getDouble();

View File

@ -273,7 +273,7 @@ bool TIA::save(Serializer& out) const
out.putByte(myColorHBlank);
out.putDouble(myTimestamp);
out.putLong(myTimestamp);
out.putBool(myAutoFrameEnabled);
@ -344,7 +344,7 @@ bool TIA::load(Serializer& in)
myColorHBlank = in.getByte();
myTimestamp = in.getDouble();
myTimestamp = in.getLong();
myAutoFrameEnabled = in.getBool();

View File

@ -53,7 +53,7 @@ BrowserDialog::BrowserDialog(GuiObject* boss, const GUI::Font& font,
xpos = 10; ypos = 4 + _th;
// Current path - TODO: handle long paths ?
StaticTextWidget* t = new StaticTextWidget(this, font, xpos, ypos + 2, "Pfad ");
StaticTextWidget* t = new StaticTextWidget(this, font, xpos, ypos + 2, "Path ");
_currentPath = new EditTextWidget(this, font, xpos + t->getWidth(), ypos,
_w - t->getWidth() - 2 * xpos, lineHeight);
_currentPath->setEditable(false);

View File

@ -791,8 +791,13 @@ Widget* Dialog::TabFocus::getNewFocus()
bool Dialog::getResizableBounds(uInt32& w, uInt32& h) const
{
const GUI::Rect& r = instance().frameBuffer().imageRect();
bool ntsc = true;
if(instance().hasConsole())
{
ntsc = instance().console().about().InitialFrameRate == "60";
}
bool ntsc = instance().console().about().InitialFrameRate == "60";
uInt32 aspect = instance().settings().getInt(ntsc ?"tia.aspectn" : "tia.aspectp");
if(r.width() <= FrameBuffer::kFBMinW || r.height() <= FrameBuffer::kFBMinH)