mirror of https://github.com/stella-emu/stella.git
Fourth pass at updates for warnings from Visual Studio.
This commit is contained in:
parent
11ff4aca4f
commit
40127109c8
|
@ -44,7 +44,7 @@ CheatCodeDialog::CheatCodeDialog(OSystem& osystem, DialogContainer& parent,
|
|||
VBORDER = Dialog::vBorder(),
|
||||
HBORDER = Dialog::hBorder();
|
||||
WidgetArray wid;
|
||||
ButtonWidget* b;
|
||||
ButtonWidget* b = nullptr;
|
||||
|
||||
// Set real dimensions
|
||||
_w = 45 * fontWidth + HBORDER * 2;
|
||||
|
|
|
@ -47,7 +47,7 @@ string Base::toString(int value, Common::Base::Fmt outputBase)
|
|||
|
||||
case Base::Fmt::_10: // base 10: 3 or 5 bytes (depending on value)
|
||||
if(value > -0x100 && value < 0x100)
|
||||
std::snprintf(vToS_buf, 5, "%3d", Int16(value));
|
||||
std::snprintf(vToS_buf, 5, "%3d", static_cast<Int16>(value));
|
||||
else
|
||||
std::snprintf(vToS_buf, 6, "%5d", value);
|
||||
break;
|
||||
|
|
|
@ -99,8 +99,8 @@ void EventHandlerSDL2::pollEvent()
|
|||
case SDL_KEYUP:
|
||||
case SDL_KEYDOWN:
|
||||
{
|
||||
handleKeyEvent(StellaKey(myEvent.key.keysym.scancode),
|
||||
StellaMod(myEvent.key.keysym.mod),
|
||||
handleKeyEvent(static_cast<StellaKey>(myEvent.key.keysym.scancode),
|
||||
static_cast<StellaMod>(myEvent.key.keysym.mod),
|
||||
myEvent.key.type == SDL_KEYDOWN,
|
||||
myEvent.key.repeat);
|
||||
break;
|
||||
|
|
|
@ -68,6 +68,14 @@ class EventHandlerSDL2 : public EventHandler
|
|||
|
||||
private:
|
||||
SDL_Joystick* myStick{nullptr};
|
||||
|
||||
private:
|
||||
// Following constructors and assignment operators not supported
|
||||
JoystickSDL2() = delete;
|
||||
JoystickSDL2(const JoystickSDL2&) = delete;
|
||||
JoystickSDL2(JoystickSDL2&&) = delete;
|
||||
JoystickSDL2& operator=(const JoystickSDL2&) = delete;
|
||||
JoystickSDL2& operator=(JoystickSDL2&&) = delete;
|
||||
};
|
||||
|
||||
private:
|
||||
|
|
|
@ -38,7 +38,6 @@ class StaggeredLogger
|
|||
public:
|
||||
|
||||
StaggeredLogger(const string& message, Logger::Level level);
|
||||
|
||||
~StaggeredLogger();
|
||||
|
||||
void log();
|
||||
|
@ -83,6 +82,13 @@ class StaggeredLogger
|
|||
// returns. This id is unique per timer and is used to return from the callback
|
||||
// early in case the time is stale.
|
||||
uInt32 myTimerCallbackId{0};
|
||||
|
||||
private:
|
||||
// Following constructors and assignment operators not supported
|
||||
StaggeredLogger(const StaggeredLogger&) = delete;
|
||||
StaggeredLogger(StaggeredLogger&&) = delete;
|
||||
StaggeredLogger& operator=(const StaggeredLogger&) = delete;
|
||||
StaggeredLogger& operator=(StaggeredLogger&&) = delete;
|
||||
};
|
||||
|
||||
#endif // STAGGERED_LOGGER
|
||||
|
|
|
@ -146,15 +146,17 @@ class TimerManager
|
|||
|
||||
struct Timer
|
||||
{
|
||||
explicit Timer(TimerId tid = 0) : id(tid) { }
|
||||
explicit Timer(TimerId tid = 0) : id{tid} { }
|
||||
Timer(Timer&& r) noexcept;
|
||||
Timer& operator=(Timer&& r) noexcept;
|
||||
|
||||
Timer(TimerId id, Timestamp next, Duration period, const TFunction& func) noexcept;
|
||||
|
||||
// Never called
|
||||
Timer() = default;
|
||||
~Timer() = default;
|
||||
Timer(Timer const& r) = delete;
|
||||
Timer& operator=(Timer const& r) = delete;
|
||||
Timer& operator=(Timer&& r) = delete;
|
||||
|
||||
TimerId id{0};
|
||||
Timestamp next;
|
||||
|
@ -204,6 +206,13 @@ class TimerManager
|
|||
|
||||
// Valid IDs are guaranteed not to be this value
|
||||
static TimerId constexpr no_timer = TimerId(0);
|
||||
|
||||
private:
|
||||
// Following constructors and assignment operators not supported
|
||||
TimerManager(const TimerManager&) = delete;
|
||||
TimerManager(TimerManager&&) = delete;
|
||||
TimerManager& operator=(const TimerManager&) = delete;
|
||||
TimerManager& operator=(TimerManager&&) = delete;
|
||||
};
|
||||
|
||||
#endif // TIMERTHREAD_H
|
||||
|
|
|
@ -113,7 +113,7 @@ uInt64 ZipHandler::decompress(ByteBuffer& image)
|
|||
{
|
||||
if(myZip && myZip->myHeader.uncompressedLength > 0)
|
||||
{
|
||||
uInt64 length = myZip->myHeader.uncompressedLength;
|
||||
const uInt64 length = myZip->myHeader.uncompressedLength;
|
||||
image = make_unique<uInt8[]>(length);
|
||||
if(image == nullptr)
|
||||
throw runtime_error(errorMessage(ZipError::OUT_OF_MEMORY));
|
||||
|
@ -247,7 +247,7 @@ void ZipHandler::ZipFile::initialize()
|
|||
|
||||
// Read the central directory
|
||||
uInt64 read_length = 0;
|
||||
bool success = readStream(myCd, myEcd.cdStartDiskOffset, myEcd.cdSize, read_length);
|
||||
const bool success = readStream(myCd, myEcd.cdStartDiskOffset, myEcd.cdSize, read_length);
|
||||
if(!success)
|
||||
throw runtime_error(errorMessage(ZipError::FILE_ERROR));
|
||||
else if(read_length != myEcd.cdSize)
|
||||
|
@ -275,7 +275,7 @@ void ZipHandler::ZipFile::readEcd()
|
|||
// We may need multiple tries
|
||||
while(buflen < 65536)
|
||||
{
|
||||
uInt64 read_length;
|
||||
uInt64 read_length = 0;
|
||||
|
||||
// Max out the buf length at the size of the file
|
||||
if(buflen > myLength)
|
||||
|
@ -287,15 +287,15 @@ void ZipHandler::ZipFile::readEcd()
|
|||
throw runtime_error(errorMessage(ZipError::OUT_OF_MEMORY));
|
||||
|
||||
// Read in one buffers' worth of data
|
||||
bool success = readStream(buffer, myLength - buflen, buflen, read_length);
|
||||
const bool success = readStream(buffer, myLength - buflen, buflen, read_length);
|
||||
if(!success || read_length != buflen)
|
||||
throw runtime_error(errorMessage(ZipError::FILE_ERROR));
|
||||
|
||||
// Find the ECD signature
|
||||
Int32 offset;
|
||||
for(offset = Int32(buflen - EcdReader::minimumLength()); offset >= 0; --offset)
|
||||
Int32 offset = 0;
|
||||
for(offset = static_cast<Int32>(buflen - EcdReader::minimumLength()); offset >= 0; --offset)
|
||||
{
|
||||
EcdReader reader(buffer.get() + offset);
|
||||
const EcdReader reader(buffer.get() + offset);
|
||||
if(reader.signatureCorrect() && ((reader.totalLength() + offset) <= buflen))
|
||||
break;
|
||||
}
|
||||
|
@ -324,7 +324,7 @@ void ZipHandler::ZipFile::readEcd()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool ZipHandler::ZipFile::readStream(ByteBuffer& out, uInt64 offset,
|
||||
bool ZipHandler::ZipFile::readStream(const ByteBuffer& out, uInt64 offset,
|
||||
uInt64 length, uInt64& actual)
|
||||
{
|
||||
try
|
||||
|
@ -368,7 +368,7 @@ const ZipHandler::ZipHeader* ZipHandler::ZipFile::nextFile()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void ZipHandler::ZipFile::decompress(ByteBuffer& out, uInt64 length)
|
||||
void ZipHandler::ZipFile::decompress(const ByteBuffer& out, uInt64 length)
|
||||
{
|
||||
// If we don't have enough buffer, error
|
||||
if(length < myHeader.uncompressedLength)
|
||||
|
@ -381,7 +381,7 @@ void ZipHandler::ZipFile::decompress(ByteBuffer& out, uInt64 length)
|
|||
try
|
||||
{
|
||||
// Get the compressed data offset
|
||||
uInt64 offset = getCompressedDataOffset();
|
||||
const uInt64 offset = getCompressedDataOffset();
|
||||
|
||||
// Handle compression types
|
||||
switch(myHeader.compression)
|
||||
|
@ -420,14 +420,14 @@ uInt64 ZipHandler::ZipFile::getCompressedDataOffset()
|
|||
|
||||
// Read the fixed-sized part of the local file header
|
||||
uInt64 read_length = 0;
|
||||
bool success = readStream(myBuffer, myHeader.localHeaderOffset, 0x1e, read_length);
|
||||
const bool success = readStream(myBuffer, myHeader.localHeaderOffset, 0x1e, read_length);
|
||||
if(!success)
|
||||
throw runtime_error(errorMessage(ZipError::FILE_ERROR));
|
||||
else if(read_length != LocalFileHeaderReader::minimumLength())
|
||||
throw runtime_error(errorMessage(ZipError::FILE_TRUNCATED));
|
||||
|
||||
// Compute the final offset
|
||||
LocalFileHeaderReader reader(&myBuffer[0]);
|
||||
const LocalFileHeaderReader reader(&myBuffer[0]);
|
||||
if(!reader.signatureCorrect())
|
||||
throw runtime_error(errorMessage(ZipError::BAD_SIGNATURE));
|
||||
|
||||
|
@ -436,11 +436,11 @@ uInt64 ZipHandler::ZipFile::getCompressedDataOffset()
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void ZipHandler::ZipFile::decompressDataType0(
|
||||
uInt64 offset, ByteBuffer& out, uInt64 length)
|
||||
uInt64 offset, const ByteBuffer& out, uInt64 length)
|
||||
{
|
||||
// The data is uncompressed; just read it
|
||||
uInt64 read_length = 0;
|
||||
bool success = readStream(out, offset, myHeader.compressedLength, read_length);
|
||||
const bool success = readStream(out, offset, myHeader.compressedLength, read_length);
|
||||
if(!success)
|
||||
throw runtime_error(errorMessage(ZipError::FILE_ERROR));
|
||||
else if(read_length != myHeader.compressedLength)
|
||||
|
@ -449,18 +449,18 @@ void ZipHandler::ZipFile::decompressDataType0(
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void ZipHandler::ZipFile::decompressDataType8(
|
||||
uInt64 offset, ByteBuffer& out, uInt64 length)
|
||||
uInt64 offset, const ByteBuffer& out, uInt64 length)
|
||||
{
|
||||
uInt64 input_remaining = myHeader.compressedLength;
|
||||
|
||||
// Reset the stream
|
||||
z_stream stream;
|
||||
z_stream stream{};
|
||||
stream.zalloc = Z_NULL;
|
||||
stream.zfree = Z_NULL;
|
||||
stream.opaque = Z_NULL;
|
||||
stream.avail_in = 0;
|
||||
stream.next_out = reinterpret_cast<Bytef *>(out.get());
|
||||
stream.avail_out = uInt32(length); // TODO - use zip64
|
||||
stream.avail_out = static_cast<uInt32>(length); // TODO - use zip64
|
||||
|
||||
// Initialize the decompressor
|
||||
int zerr = inflateInit2(&stream, -MAX_WBITS);
|
||||
|
@ -472,8 +472,8 @@ void ZipHandler::ZipFile::decompressDataType8(
|
|||
{
|
||||
// Read in the next chunk of data
|
||||
uInt64 read_length = 0;
|
||||
bool success = readStream(myBuffer, offset,
|
||||
std::min(input_remaining, uInt64(sizeof(myBuffer.get()))), read_length);
|
||||
const bool success = readStream(myBuffer, offset,
|
||||
std::min(input_remaining, static_cast<uInt64>(sizeof(myBuffer.get()))), read_length);
|
||||
if(!success)
|
||||
{
|
||||
inflateEnd(&stream);
|
||||
|
@ -490,7 +490,7 @@ void ZipHandler::ZipFile::decompressDataType8(
|
|||
|
||||
// Fill out the input data
|
||||
stream.next_in = myBuffer.get();
|
||||
stream.avail_in = uInt32(read_length); // TODO - use zip64
|
||||
stream.avail_in = static_cast<uInt32>(read_length); // TODO - use zip64
|
||||
input_remaining -= read_length;
|
||||
|
||||
// Add a dummy byte at end of compressed data
|
||||
|
|
|
@ -126,22 +126,22 @@ class ZipHandler
|
|||
void readEcd();
|
||||
|
||||
/** Read data from stream */
|
||||
bool readStream(ByteBuffer& out, uInt64 offset, uInt64 length, uInt64& actual);
|
||||
bool readStream(const ByteBuffer& out, uInt64 offset, uInt64 length, uInt64& actual);
|
||||
|
||||
/** Return the next entry in the ZIP file */
|
||||
const ZipHeader* nextFile();
|
||||
|
||||
/** Decompress the most recently found file in the ZIP into target buffer */
|
||||
void decompress(ByteBuffer& out, uInt64 length);
|
||||
void decompress(const ByteBuffer& out, uInt64 length);
|
||||
|
||||
/** Return the offset of the compressed data */
|
||||
uInt64 getCompressedDataOffset();
|
||||
|
||||
/** Decompress type 0 data (which is uncompressed) */
|
||||
void decompressDataType0(uInt64 offset, ByteBuffer& out, uInt64 length);
|
||||
void decompressDataType0(uInt64 offset, const ByteBuffer& out, uInt64 length);
|
||||
|
||||
/** Decompress type 8 data (which is deflated) */
|
||||
void decompressDataType8(uInt64 offset, ByteBuffer& out, uInt64 length);
|
||||
void decompressDataType8(uInt64 offset, const ByteBuffer& out, uInt64 length);
|
||||
};
|
||||
using ZipFilePtr = unique_ptr<ZipFile>;
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ class CompositeKeyValueRepositoryAtomic;
|
|||
class CompositeKeyValueRepository
|
||||
{
|
||||
public:
|
||||
CompositeKeyValueRepository() = default;
|
||||
|
||||
virtual ~CompositeKeyValueRepository() = default;
|
||||
|
||||
|
@ -38,6 +39,13 @@ class CompositeKeyValueRepository
|
|||
virtual void remove(const string& key) = 0;
|
||||
|
||||
virtual CompositeKeyValueRepositoryAtomic* atomic() { return nullptr; }
|
||||
|
||||
private:
|
||||
// Following constructors and assignment operators not supported
|
||||
CompositeKeyValueRepository(const CompositeKeyValueRepository&) = delete;
|
||||
CompositeKeyValueRepository(CompositeKeyValueRepository&&) = delete;
|
||||
CompositeKeyValueRepository& operator=(const CompositeKeyValueRepository&) = delete;
|
||||
CompositeKeyValueRepository& operator=(CompositeKeyValueRepository&&) = delete;
|
||||
};
|
||||
|
||||
class CompositeKeyValueRepositoryAtomic : public CompositeKeyValueRepository
|
||||
|
|
|
@ -21,7 +21,8 @@
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
KeyValueRepositoryConfigfile::KeyValueRepositoryConfigfile(const FilesystemNode& file)
|
||||
: KeyValueRepositoryFile<KeyValueRepositoryConfigfile>(file)
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
std::map<string, Variant> KeyValueRepositoryConfigfile::load(istream& in)
|
||||
|
@ -29,7 +30,7 @@ std::map<string, Variant> KeyValueRepositoryConfigfile::load(istream& in)
|
|||
std::map<string, Variant> values;
|
||||
|
||||
string line, key, value;
|
||||
string::size_type equalPos, garbage;
|
||||
string::size_type equalPos = 0, garbage = 0;
|
||||
|
||||
while(getline(in, line))
|
||||
{
|
||||
|
|
|
@ -32,7 +32,8 @@ namespace {
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
KeyValueRepositoryJsonFile::KeyValueRepositoryJsonFile(const FilesystemNode& node)
|
||||
: KeyValueRepositoryFile<KeyValueRepositoryJsonFile>(node)
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
std::map<string, Variant> KeyValueRepositoryJsonFile::load(istream& in)
|
||||
|
|
|
@ -72,7 +72,8 @@ namespace {
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
KeyValueRepositoryPropertyFile::KeyValueRepositoryPropertyFile(const FilesystemNode& node)
|
||||
: KeyValueRepositoryFile<KeyValueRepositoryPropertyFile>(node)
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
std::map<string, Variant> KeyValueRepositoryPropertyFile::load(istream& in)
|
||||
|
|
|
@ -80,7 +80,6 @@ bool AbstractKeyValueRepositorySqlite::get(const string& key, Variant& value)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool AbstractKeyValueRepositorySqlite::save(const std::map<string, Variant>& values)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,20 @@
|
|||
//============================================================================
|
||||
//
|
||||
// SSSS tt lll lll
|
||||
// SS SS tt ll ll
|
||||
// SS tttttt eeee ll ll aaaa
|
||||
// SSSS tt ee ee ll ll aa
|
||||
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||
// SS SS tt ee ll ll aa aa
|
||||
// SSSS ttt eeeee llll llll aaaaa
|
||||
//
|
||||
// Copyright (c) 1995-2022 by Bradford W. Mott, Stephen Anthony
|
||||
// and the Stella Team
|
||||
//
|
||||
// See the file "License.txt" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//============================================================================
|
||||
|
||||
#ifndef ABSTRACT_KEY_VALUE_REPOSITORY_SQLITE_HXX
|
||||
#define ABSTRACT_KEY_VALUE_REPOSITORY_SQLITE_HXX
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ bool CompositeKeyValueRepositorySqlite::has(const string& key)
|
|||
if (!myStmtCountSet->step())
|
||||
throw SqliteError("count failed");
|
||||
|
||||
Int32 rowCount = myStmtCountSet->columnInt(0);
|
||||
const Int32 rowCount = myStmtCountSet->columnInt(0);
|
||||
|
||||
myStmtCountSet->reset();
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ SqliteStatement& SqliteStatement::bind(int index, Int32 value)
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool SqliteStatement::step()
|
||||
{
|
||||
int result = sqlite3_step(myStmt);
|
||||
const int result = sqlite3_step(myStmt);
|
||||
|
||||
if (result == SQLITE_ERROR) throw SqliteError(myHandle);
|
||||
|
||||
|
|
|
@ -200,7 +200,7 @@ void StellaDb::importOldPropset(const FilesystemNode& node)
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void StellaDb::migrate()
|
||||
{
|
||||
Int32 version = myDb->getUserVersion();
|
||||
const Int32 version = myDb->getUserVersion();
|
||||
switch (version) {
|
||||
case 1:
|
||||
return;
|
||||
|
|
|
@ -42,7 +42,7 @@ class BreakpointMap
|
|||
uInt16 addr{0};
|
||||
uInt8 bank{0};
|
||||
|
||||
explicit Breakpoint(uInt16 c_addr, uInt8 c_bank) : addr(c_addr), bank(c_bank) { }
|
||||
explicit constexpr Breakpoint(uInt16 c_addr, uInt8 c_bank) : addr{c_addr}, bank{c_bank} { }
|
||||
|
||||
bool operator==(const Breakpoint& other) const
|
||||
{
|
||||
|
|
|
@ -117,7 +117,7 @@ class DivExpression : public Expression
|
|||
public:
|
||||
DivExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
Int32 evaluate() const override
|
||||
{ int denom = myRHS->evaluate();
|
||||
{ const int denom = myRHS->evaluate();
|
||||
return denom == 0 ? 0 : myLHS->evaluate() / denom; }
|
||||
};
|
||||
|
||||
|
@ -250,7 +250,7 @@ class ModExpression : public Expression
|
|||
public:
|
||||
ModExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
Int32 evaluate() const override
|
||||
{ int rhs = myRHS->evaluate();
|
||||
{ const int rhs = myRHS->evaluate();
|
||||
return rhs == 0 ? 0 : myLHS->evaluate() % rhs; }
|
||||
};
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ CartridgeE7Widget::CartridgeE7Widget(
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void CartridgeE7Widget::initialize(GuiObject* boss,
|
||||
CartridgeE7& cart, ostringstream& info)
|
||||
const CartridgeE7& cart, const ostringstream& info)
|
||||
{
|
||||
const uInt32 size = cart.romBankCount() * cart.BANK_SIZE;
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ class CartridgeE7Widget : public CartDebugWidget
|
|||
};
|
||||
|
||||
protected:
|
||||
void initialize(GuiObject* boss, CartridgeE7& cart, ostringstream& info);
|
||||
void initialize(GuiObject* boss, const CartridgeE7& cart, const ostringstream& info);
|
||||
const char* getSpotLower(int idx);
|
||||
const char* getSpotUpper(int idx);
|
||||
|
||||
|
|
|
@ -47,8 +47,8 @@ DrivingWidget::DrivingWidget(GuiObject* boss, const GUI::Font& font,
|
|||
const int lwidth = font.getStringWidth("Right (Driving)"),
|
||||
bWidth = font.getStringWidth("Gray code +") + _fontWidth * 1.25;
|
||||
|
||||
StaticTextWidget* t = new StaticTextWidget(boss, font, xpos, ypos + 2, lwidth,
|
||||
lineHeight, label, TextAlign::Left);
|
||||
const StaticTextWidget* t = new StaticTextWidget(boss, font, xpos, ypos + 2, lwidth,
|
||||
lineHeight, label, TextAlign::Left);
|
||||
|
||||
ypos = t->getBottom() + _lineHeight * 1.334;
|
||||
myGrayUp = new ButtonWidget(boss, font, xpos, ypos, bWidth, bHeight,
|
||||
|
@ -125,10 +125,7 @@ void DrivingWidget::handleCommand(
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DrivingWidget::setValue(int idx)
|
||||
{
|
||||
int grayCode = ourGrayTable[idx];
|
||||
const int grayCode = ourGrayTable[idx];
|
||||
// FIXME * 8 = a nasty hack, because the DataGridWidget does not support 2 digit binary output
|
||||
myGrayValue->setList(0, (grayCode & 0b01) + (grayCode & 0b10) * 8);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const std::array<uInt8, 4> DrivingWidget::ourGrayTable = { 0x03, 0x01, 0x00, 0x02 };
|
||||
|
|
|
@ -44,7 +44,9 @@ class DrivingWidget : public ControllerWidget
|
|||
|
||||
int myGrayIndex{0};
|
||||
|
||||
static const std::array<uInt8, 4> ourGrayTable;
|
||||
static constexpr std::array<uInt8, 4> ourGrayTable = {
|
||||
{ 0x03, 0x01, 0x00, 0x02 }
|
||||
};
|
||||
|
||||
private:
|
||||
void loadConfig() override;
|
||||
|
|
|
@ -26,10 +26,9 @@ GenesisWidget::GenesisWidget(GuiObject* boss, const GUI::Font& font,
|
|||
|
||||
const int fontHeight = font.getFontHeight();
|
||||
int xpos = x, ypos = y, lwidth = font.getStringWidth("Right (Genesis)");
|
||||
StaticTextWidget* t;
|
||||
|
||||
t = new StaticTextWidget(boss, font, xpos, ypos+2, lwidth,
|
||||
fontHeight, label, TextAlign::Left);
|
||||
const StaticTextWidget* t = new StaticTextWidget(boss, font, xpos, ypos+2, lwidth,
|
||||
fontHeight, label, TextAlign::Left);
|
||||
xpos += t->getWidth()/2 - 5; ypos += t->getHeight() + 20;
|
||||
myPins[kJUp] = new CheckboxWidget(boss, font, xpos, ypos, "",
|
||||
CheckboxWidget::kCheckActionCmd);
|
||||
|
@ -114,6 +113,3 @@ void GenesisWidget::handleCommand(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
constexpr std::array<Controller::DigitalPin, 5> GenesisWidget::ourPinNo;
|
||||
|
|
|
@ -30,10 +30,8 @@ JoystickWidget::JoystickWidget(GuiObject* boss, const GUI::Font& font,
|
|||
{
|
||||
const string& label = getHeader();
|
||||
const int lwidth = font.getStringWidth("Right (Joystick)");
|
||||
StaticTextWidget* t;
|
||||
|
||||
t = new StaticTextWidget(boss, font, xpos, ypos + 2, lwidth,
|
||||
_lineHeight, label, TextAlign::Left);
|
||||
const StaticTextWidget* t = new StaticTextWidget(boss, font, xpos, ypos + 2, lwidth,
|
||||
_lineHeight, label, TextAlign::Left);
|
||||
xpos += t->getWidth() / 2 - 5; ypos = t->getBottom() + fontHeight;
|
||||
}
|
||||
myPins[kJUp] = new CheckboxWidget(boss, font, xpos, ypos, "",
|
||||
|
@ -91,6 +89,3 @@ void JoystickWidget::handleCommand(
|
|||
if(cmd == CheckboxWidget::kCheckActionCmd)
|
||||
setPin(ourPinNo[id], !myPins[id]->getState());
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
constexpr std::array<Controller::DigitalPin, 5> JoystickWidget::ourPinNo;
|
||||
|
|
|
@ -28,10 +28,8 @@ KeyboardWidget::KeyboardWidget(GuiObject* boss, const GUI::Font& font,
|
|||
|
||||
const int fontHeight = font.getFontHeight();
|
||||
int xpos = x, ypos = y, lwidth = font.getStringWidth("Right (Keyboard)");
|
||||
StaticTextWidget* t;
|
||||
|
||||
t = new StaticTextWidget(boss, font, xpos, ypos+2, lwidth,
|
||||
fontHeight, label, TextAlign::Left);
|
||||
const StaticTextWidget* t = new StaticTextWidget(boss, font, xpos, ypos+2, lwidth,
|
||||
fontHeight, label, TextAlign::Left);
|
||||
|
||||
xpos += 30; ypos += t->getHeight() + 20;
|
||||
|
||||
|
@ -67,7 +65,3 @@ void KeyboardWidget::handleCommand(
|
|||
if(cmd == CheckboxWidget::kCheckActionCmd)
|
||||
instance().eventHandler().handleEvent(myEvent[id], myBox[id]->getState());
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
constexpr std::array<Event::Type, 12> KeyboardWidget::ourLeftEvents;
|
||||
constexpr std::array<Event::Type, 12> KeyboardWidget::ourRightEvents;
|
||||
|
|
|
@ -29,9 +29,8 @@ PointingDeviceWidget::PointingDeviceWidget(GuiObject* boss, const GUI::Font& fon
|
|||
xMid = xLeft + 30,
|
||||
xRight = xLeft + 60,
|
||||
xValue = xLeft + 87;
|
||||
StaticTextWidget* t;
|
||||
|
||||
t = new StaticTextWidget(boss, font, x, y + 2, getHeader());
|
||||
const StaticTextWidget* t = new StaticTextWidget(boss, font,
|
||||
x, y + 2, getHeader());
|
||||
ypos += t->getHeight() + 8;
|
||||
|
||||
// add gray code and up widgets
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include "TrakBallWidget.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
TrakBallWidget::TrakBallWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, Controller& controller)
|
||||
: PointingDeviceWidget(boss, font, x, y, controller)
|
||||
|
|
|
@ -55,8 +55,8 @@ class Bankswitch
|
|||
// Info about the various bankswitch schemes, useful for displaying
|
||||
// in GUI dropdown boxes, etc
|
||||
struct Description {
|
||||
const char* const name;
|
||||
const char* const desc;
|
||||
const char* const name{nullptr};
|
||||
const char* const desc{nullptr};
|
||||
};
|
||||
static const std::array<Description, static_cast<int>(Type::NumSchemes)> BSList;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ class CartridgeAR : public Cartridge
|
|||
friend class CartridgeARWidget;
|
||||
|
||||
public:
|
||||
static constexpr uInt32 BANK_SIZE = uInt32(2_KB);
|
||||
static constexpr uInt32 BANK_SIZE = static_cast<uInt32>(2_KB);
|
||||
static constexpr uInt32 RAM_SIZE = 3 * BANK_SIZE;
|
||||
static constexpr uInt32 LOAD_SIZE = 8448;
|
||||
|
||||
|
|
|
@ -27,17 +27,18 @@
|
|||
#include "exception/FatalEmulationError.hxx"
|
||||
|
||||
// Location of data within the RAM copy of the BUS Driver.
|
||||
#define DSxPTR 0x06D8
|
||||
#define DSxINC 0x0720
|
||||
#define DSMAPS 0x0760
|
||||
#define WAVEFORM 0x07F4
|
||||
#define DSRAM 0x0800
|
||||
static constexpr int
|
||||
DSxPTR = 0x06D8,
|
||||
DSxINC = 0x0720,
|
||||
DSMAPS = 0x0760,
|
||||
WAVEFORM = 0x07F4,
|
||||
DSRAM = 0x0800,
|
||||
|
||||
#define COMMSTREAM 0x10
|
||||
#define JUMPSTREAM 0x11
|
||||
COMMSTREAM = 0x10,
|
||||
JUMPSTREAM = 0x11;
|
||||
|
||||
#define BUS_STUFF_ON ((myMode & 0x0F) == 0)
|
||||
#define DIGITAL_AUDIO_ON ((myMode & 0xF0) == 0)
|
||||
static constexpr bool BUS_STUFF_ON(uInt8 mode) { return (mode & 0x0F) == 0; }
|
||||
static constexpr bool DIGITAL_AUDIO_ON(uInt8 mode) { return (mode & 0xF0) == 0; }
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
CartridgeBUS::CartridgeBUS(const ByteBuffer& image, size_t size,
|
||||
|
@ -221,7 +222,7 @@ uInt8 CartridgeBUS::peek(uInt16 address)
|
|||
}
|
||||
|
||||
// test for JMP FASTJUMP where FASTJUMP = $0000
|
||||
if (BUS_STUFF_ON
|
||||
if (BUS_STUFF_ON(myMode)
|
||||
&& peekvalue == 0x4C
|
||||
&& myProgramImage[myBankOffset + address+1] == 0
|
||||
&& myProgramImage[myBankOffset + address+2] == 0)
|
||||
|
@ -234,7 +235,7 @@ uInt8 CartridgeBUS::peek(uInt16 address)
|
|||
myJMPoperandAddress = 0;
|
||||
|
||||
// save the STY's zero page address
|
||||
if (BUS_STUFF_ON && mySTYZeroPageAddress == address)
|
||||
if (BUS_STUFF_ON(myMode) && mySTYZeroPageAddress == address)
|
||||
myBusOverdriveAddress = peekvalue;
|
||||
|
||||
mySTYZeroPageAddress = 0;
|
||||
|
@ -245,7 +246,7 @@ uInt8 CartridgeBUS::peek(uInt16 address)
|
|||
// Update the music data fetchers (counter & flag)
|
||||
updateMusicModeDataFetchers();
|
||||
|
||||
if DIGITAL_AUDIO_ON
|
||||
if (DIGITAL_AUDIO_ON(myMode))
|
||||
{
|
||||
// retrieve packed sample (max size is 2K, or 4K of unpacked data)
|
||||
const uInt32 sampleaddress = getSample() + (myMusicCounters[0] >> 21);
|
||||
|
@ -327,7 +328,7 @@ uInt8 CartridgeBUS::peek(uInt16 address)
|
|||
}
|
||||
|
||||
// this might not work right for STY $84
|
||||
if (BUS_STUFF_ON && peekvalue == 0x84)
|
||||
if (BUS_STUFF_ON(myMode) && peekvalue == 0x84)
|
||||
mySTYZeroPageAddress = address + 1;
|
||||
|
||||
return peekvalue;
|
||||
|
|
|
@ -236,7 +236,7 @@ CartCreator::createFromMultiCart(const ByteBuffer& image, size_t& size,
|
|||
std::copy_n(image.get()+i*size, size, slice.get());
|
||||
|
||||
// We need a new md5 and name
|
||||
md5 = MD5::hash(slice, uInt32(size)); // FIXME
|
||||
md5 = MD5::hash(slice, size);
|
||||
ostringstream buf;
|
||||
buf << " [G" << (i+1) << "]";
|
||||
id = buf.str();
|
||||
|
|
|
@ -162,17 +162,3 @@ bool CartridgeWD::load(Serializer& in)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const std::array<CartridgeWD::BankOrg, 8> CartridgeWD::ourBankOrg = {{
|
||||
// 0 1 2 3 4 5 6 7
|
||||
{ 0, 0, 1, 3 }, // Bank 0, 8 2 1 - 1 - - - -
|
||||
{ 0, 1, 2, 3 }, // Bank 1, 9 1 1 1 1 - - - -
|
||||
{ 4, 5, 6, 7 }, // Bank 2, 10 - - - - 1 1 1 1
|
||||
{ 7, 4, 2, 3 }, // Bank 3, 11 - - 1 1 1 - - 1
|
||||
{ 0, 0, 6, 7 }, // Bank 4, 12 2 - - - - - 1 1
|
||||
{ 0, 1, 7, 6 }, // Bank 5, 13 1 1 - - - - 1 1
|
||||
{ 2, 3, 4, 5 }, // Bank 6, 14 - - 1 1 1 1 - -
|
||||
{ 6, 0, 5, 1 } // Bank 7, 15 1 1 - - - 1 1 -
|
||||
// count 7 4 3 4 3 3 4 4
|
||||
}};
|
||||
|
|
|
@ -176,7 +176,18 @@ class CartridgeWD : public CartridgeEnhanced
|
|||
struct BankOrg {
|
||||
uInt8 zero{0}, one{0}, two{0}, three{0};
|
||||
};
|
||||
static const std::array<BankOrg, 8> ourBankOrg;
|
||||
static constexpr std::array<BankOrg, 8> ourBankOrg = {{
|
||||
// 0 1 2 3 4 5 6 7
|
||||
{ 0, 0, 1, 3 }, // Bank 0, 8 2 1 - 1 - - - -
|
||||
{ 0, 1, 2, 3 }, // Bank 1, 9 1 1 1 1 - - - -
|
||||
{ 4, 5, 6, 7 }, // Bank 2, 10 - - - - 1 1 1 1
|
||||
{ 7, 4, 2, 3 }, // Bank 3, 11 - - 1 1 1 - - 1
|
||||
{ 0, 0, 6, 7 }, // Bank 4, 12 2 - - - - - 1 1
|
||||
{ 0, 1, 7, 6 }, // Bank 5, 13 1 1 - - - - 1 1
|
||||
{ 2, 3, 4, 5 }, // Bank 6, 14 - - 1 1 1 1 - -
|
||||
{ 6, 0, 5, 1 } // Bank 7, 15 1 1 - - - 1 1 -
|
||||
// count 7 4 3 4 3 3 4 4
|
||||
}};
|
||||
|
||||
private:
|
||||
// log(ROM bank segment size) / log(2)
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
static constexpr uInt32 DEF_PROPS_SIZE = 3533;
|
||||
|
||||
static const BSPF::array2D<const char*, DEF_PROPS_SIZE, 29> DefProps = {{
|
||||
static constexpr BSPF::array2D<const char*, DEF_PROPS_SIZE, 29> DefProps = {{
|
||||
{ "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "{\"score_addresses\":[\"0xd5\",\"0xd6\",\"0xd7\"],\"score_digits\":6,\"variations_count\":1}", "" },
|
||||
{ "0060a89b4c956b9c703a59b181cb3018", "CommaVid, Irwin Gaines - Ariola", "CM-008 - 712 008-720", "Cakewalk (1983) (CommaVid) (PAL)", "AKA Alarm in der Backstube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
{ "007d18dedc1f0565f09c42aa61a6f585", "CCE", "C-843", "Worm War I (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||
|
|
|
@ -25,9 +25,9 @@ Driving::Driving(Jack jack, const Event& event, const System& system, bool altma
|
|||
{
|
||||
if(!altmap)
|
||||
{
|
||||
myCCWEvent = Event::LeftDrivingCCW;
|
||||
myCWEvent = Event::LeftDrivingCW;
|
||||
myFireEvent = Event::LeftDrivingFire;
|
||||
myCCWEvent = Event::LeftDrivingCCW;
|
||||
myCWEvent = Event::LeftDrivingCW;
|
||||
myFireEvent = Event::LeftDrivingFire;
|
||||
myAnalogEvent = Event::LeftDrivingAnalog;
|
||||
}
|
||||
else
|
||||
|
@ -43,9 +43,9 @@ Driving::Driving(Jack jack, const Event& event, const System& system, bool altma
|
|||
{
|
||||
if(!altmap)
|
||||
{
|
||||
myCCWEvent = Event::RightDrivingCCW;
|
||||
myCWEvent = Event::RightDrivingCW;
|
||||
myFireEvent = Event::RightDrivingFire;
|
||||
myCCWEvent = Event::RightDrivingCCW;
|
||||
myCWEvent = Event::RightDrivingCW;
|
||||
myFireEvent = Event::RightDrivingFire;
|
||||
myAnalogEvent = Event::RightDrivingAnalog;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -22,9 +22,9 @@ Genesis::Genesis(Jack jack, const Event& event, const System& system)
|
|||
: Joystick(jack, event, system, Controller::Type::Genesis)
|
||||
{
|
||||
if(myJack == Jack::Left)
|
||||
myButtonCEvent = Event::LeftJoystickFire5;
|
||||
myButtonCEvent = Event::LeftJoystickFire5;
|
||||
else
|
||||
myButtonCEvent = Event::RightJoystickFire5;
|
||||
myButtonCEvent = Event::RightJoystickFire5;
|
||||
|
||||
setPin(AnalogPin::Five, AnalogReadout::connectToVcc());
|
||||
setPin(AnalogPin::Nine, AnalogReadout::connectToVcc());
|
||||
|
|
|
@ -153,7 +153,7 @@ class GlobalKeyHandler
|
|||
struct GroupData
|
||||
{
|
||||
Setting start{Setting::NONE};
|
||||
string name{EmptyString};
|
||||
string name;
|
||||
};
|
||||
|
||||
struct SettingData
|
||||
|
|
|
@ -32,38 +32,38 @@ Joystick::Joystick(Jack jack, const Event& event, const System& system,
|
|||
{
|
||||
if(!altmap)
|
||||
{
|
||||
myUpEvent = Event::LeftJoystickUp;
|
||||
myDownEvent = Event::LeftJoystickDown;
|
||||
myLeftEvent = Event::LeftJoystickLeft;
|
||||
myUpEvent = Event::LeftJoystickUp;
|
||||
myDownEvent = Event::LeftJoystickDown;
|
||||
myLeftEvent = Event::LeftJoystickLeft;
|
||||
myRightEvent = Event::LeftJoystickRight;
|
||||
myFireEvent = Event::LeftJoystickFire;
|
||||
myFireEvent = Event::LeftJoystickFire;
|
||||
}
|
||||
else
|
||||
{
|
||||
myUpEvent = Event::QTJoystickThreeUp;
|
||||
myDownEvent = Event::QTJoystickThreeDown;
|
||||
myLeftEvent = Event::QTJoystickThreeLeft;
|
||||
myUpEvent = Event::QTJoystickThreeUp;
|
||||
myDownEvent = Event::QTJoystickThreeDown;
|
||||
myLeftEvent = Event::QTJoystickThreeLeft;
|
||||
myRightEvent = Event::QTJoystickThreeRight;
|
||||
myFireEvent = Event::QTJoystickThreeFire;
|
||||
myFireEvent = Event::QTJoystickThreeFire;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!altmap)
|
||||
{
|
||||
myUpEvent = Event::RightJoystickUp;
|
||||
myDownEvent = Event::RightJoystickDown;
|
||||
myLeftEvent = Event::RightJoystickLeft;
|
||||
myUpEvent = Event::RightJoystickUp;
|
||||
myDownEvent = Event::RightJoystickDown;
|
||||
myLeftEvent = Event::RightJoystickLeft;
|
||||
myRightEvent = Event::RightJoystickRight;
|
||||
myFireEvent = Event::RightJoystickFire;
|
||||
myFireEvent = Event::RightJoystickFire;
|
||||
}
|
||||
else
|
||||
{
|
||||
myUpEvent = Event::QTJoystickFourUp;
|
||||
myDownEvent = Event::QTJoystickFourDown;
|
||||
myLeftEvent = Event::QTJoystickFourLeft;
|
||||
myUpEvent = Event::QTJoystickFourUp;
|
||||
myDownEvent = Event::QTJoystickFourDown;
|
||||
myLeftEvent = Event::QTJoystickFourLeft;
|
||||
myRightEvent = Event::QTJoystickFourRight;
|
||||
myFireEvent = Event::QTJoystickFourFire;
|
||||
myFireEvent = Event::QTJoystickFourFire;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,8 +54,9 @@ Keyboard::Keyboard(Jack jack, const Event& event, const System& system)
|
|||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
Keyboard::ColumnState Keyboard::processColumn(const Event::Type buttons[]) {
|
||||
constexpr DigitalPin signals[] =
|
||||
static constexpr DigitalPin signals[] =
|
||||
{DigitalPin::One, DigitalPin::Two, DigitalPin::Three, DigitalPin::Four};
|
||||
|
||||
for (uInt8 i = 0; i < 4; i++)
|
||||
|
@ -67,6 +68,7 @@ Keyboard::ColumnState Keyboard::processColumn(const Event::Type buttons[]) {
|
|||
return ColumnState::notConnected;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
AnalogReadout::Connection Keyboard::columnStateToAnalogSignal(ColumnState state) const {
|
||||
switch (state) {
|
||||
case ColumnState::gnd:
|
||||
|
@ -83,7 +85,6 @@ AnalogReadout::Connection Keyboard::columnStateToAnalogSignal(ColumnState state)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Keyboard::write(DigitalPin pin, bool value)
|
||||
{
|
||||
|
|
|
@ -50,8 +50,8 @@ Paddles::Paddles(Jack jack, const Event& event, const System& system,
|
|||
if(!altmap)
|
||||
{
|
||||
// First paddle is left A, second is left B
|
||||
myAAxisValue = Event::LeftPaddleAAnalog;
|
||||
myBAxisValue = Event::LeftPaddleBAnalog;
|
||||
myAAxisValue = Event::LeftPaddleAAnalog;
|
||||
myBAxisValue = Event::LeftPaddleBAnalog;
|
||||
myLeftAFireEvent = Event::LeftPaddleAFire;
|
||||
myLeftBFireEvent = Event::LeftPaddleBFire;
|
||||
|
||||
|
@ -77,8 +77,8 @@ Paddles::Paddles(Jack jack, const Event& event, const System& system,
|
|||
if(!altmap)
|
||||
{
|
||||
// First paddle is right A, second is right B
|
||||
myAAxisValue = Event::RightPaddleAAnalog;
|
||||
myBAxisValue = Event::RightPaddleBAnalog;
|
||||
myAAxisValue = Event::RightPaddleAAnalog;
|
||||
myBAxisValue = Event::RightPaddleBAnalog;
|
||||
myLeftAFireEvent = Event::RightPaddleAFire;
|
||||
myLeftBFireEvent = Event::RightPaddleBFire;
|
||||
|
||||
|
@ -159,6 +159,7 @@ void Paddles::update()
|
|||
updateB();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Paddles::updateA()
|
||||
{
|
||||
setPin(DigitalPin::Four, true);
|
||||
|
@ -274,7 +275,6 @@ bool Paddles::updateAnalogAxesA()
|
|||
return sa_changed;
|
||||
}
|
||||
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Paddles::updateMouseA(bool& firePressedA)
|
||||
{
|
||||
|
@ -342,6 +342,7 @@ void Paddles::updateDigitalAxesA()
|
|||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Paddles::updateB()
|
||||
{
|
||||
setPin(DigitalPin::Three, true);
|
||||
|
|
|
@ -27,7 +27,10 @@
|
|||
#include "repository/KeyValueRepositoryPropertyFile.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
PropertiesSet::PropertiesSet() : myRepository{make_shared<CompositeKeyValueRepositoryNoop>()} {}
|
||||
PropertiesSet::PropertiesSet()
|
||||
: myRepository{make_shared<CompositeKeyValueRepositoryNoop>()}
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PropertiesSet::setRepository(shared_ptr<CompositeKeyValueRepository> repository)
|
||||
|
|
|
@ -37,7 +37,7 @@ class Sound
|
|||
Create a new sound object. The open method must be invoked before
|
||||
using the object.
|
||||
*/
|
||||
Sound(OSystem& osystem) : myOSystem(osystem) { }
|
||||
Sound(OSystem& osystem) : myOSystem{osystem} { }
|
||||
virtual ~Sound() = default;
|
||||
|
||||
public:
|
||||
|
|
|
@ -166,24 +166,6 @@ bool AnalogReadout::load(Serializer& in)
|
|||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
AnalogReadout::Connection AnalogReadout::connectToGround(uInt32 resistance)
|
||||
{
|
||||
return Connection{ConnectionType::ground, resistance};
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
AnalogReadout::Connection AnalogReadout::connectToVcc(uInt32 resistance)
|
||||
{
|
||||
return Connection{ConnectionType::vcc, resistance};
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
AnalogReadout::Connection AnalogReadout::disconnect()
|
||||
{
|
||||
return Connection{ConnectionType::disconnected, 0};
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool AnalogReadout::Connection::save(Serializer& out) const
|
||||
{
|
||||
|
|
|
@ -31,8 +31,8 @@ class AnalogReadout : public Serializable
|
|||
};
|
||||
|
||||
struct Connection {
|
||||
ConnectionType type;
|
||||
uInt32 resistance;
|
||||
ConnectionType type{ConnectionType::ground};
|
||||
uInt32 resistance{0};
|
||||
|
||||
bool save(Serializer& out) const;
|
||||
bool load(const Serializer& in);
|
||||
|
@ -61,11 +61,17 @@ class AnalogReadout : public Serializable
|
|||
|
||||
public:
|
||||
|
||||
static Connection connectToGround(uInt32 resistance = 0);
|
||||
static constexpr Connection connectToGround(uInt32 resistance = 0) {
|
||||
return Connection{ConnectionType::ground, resistance};
|
||||
}
|
||||
|
||||
static Connection connectToVcc(uInt32 resistance = 0);
|
||||
static constexpr Connection connectToVcc(uInt32 resistance = 0) {
|
||||
return Connection{ConnectionType::vcc, resistance};
|
||||
}
|
||||
|
||||
static Connection disconnect();
|
||||
static constexpr Connection disconnect() {
|
||||
return Connection{ConnectionType::disconnected, 0};
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -79,12 +79,12 @@ void DelayQueue<length, capacity>::push(uInt8 address, uInt8 value, uInt8 delay)
|
|||
if (delay >= length)
|
||||
throw runtime_error("delay exceeds queue length");
|
||||
|
||||
uInt8 currentIndex = myIndices[address];
|
||||
const uInt8 currentIndex = myIndices[address];
|
||||
|
||||
if (currentIndex < length)
|
||||
myMembers[currentIndex].remove(address);
|
||||
|
||||
uInt8 index = smartmod<length>(myIndex + delay);
|
||||
const uInt8 index = smartmod<length>(myIndex + delay);
|
||||
myMembers[index].push(address, value);
|
||||
|
||||
myIndices[address] = index;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
class DelayQueueIterator
|
||||
{
|
||||
public:
|
||||
DelayQueueIterator() = default;
|
||||
virtual ~DelayQueueIterator() = default;
|
||||
|
||||
public:
|
||||
|
@ -35,6 +36,13 @@ class DelayQueueIterator
|
|||
virtual uInt8 value() const = 0;
|
||||
|
||||
virtual bool next() = 0;
|
||||
|
||||
private:
|
||||
// Following constructors and assignment operators not supported
|
||||
DelayQueueIterator(const DelayQueueIterator&) = delete;
|
||||
DelayQueueIterator(DelayQueueIterator&&) = delete;
|
||||
DelayQueueIterator& operator=(const DelayQueueIterator&) = delete;
|
||||
DelayQueueIterator& operator=(DelayQueueIterator&&) = delete;
|
||||
};
|
||||
|
||||
#endif // TIA_DELAY_QUEUE_ITERATOR
|
||||
|
|
|
@ -34,7 +34,7 @@ class FrameManager: public AbstractFrameManager {
|
|||
frameSizePAL = 312,
|
||||
baseHeightNTSC = 228, // 217..239
|
||||
baseHeightPAL = 274, // 260..288
|
||||
maxHeight = uInt32(baseHeightPAL * 1.05 + 0.5), // 288
|
||||
maxHeight = static_cast<uInt32>(baseHeightPAL * 1.05 + 0.5), // 288
|
||||
maxLinesVsync = 50,
|
||||
initialGarbageFrames = TIAConstants::initialGarbageFrames,
|
||||
ystartNTSC = 23,
|
||||
|
|
|
@ -463,7 +463,7 @@ void Dialog::addTabWidget(TabWidget* w)
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Dialog::setFocus(Widget* w)
|
||||
void Dialog::setFocus(const Widget* w)
|
||||
{
|
||||
// If the click occured inside a widget which is not the currently
|
||||
// focused one, change the focus to that widget.
|
||||
|
|
|
@ -84,7 +84,7 @@ class Dialog : public GuiObject
|
|||
void addExtraWidget(ButtonWidget* w) { _extraWidget = w; }
|
||||
void addOKWidget(ButtonWidget* w) { _okWidget = w; }
|
||||
void addCancelWidget(ButtonWidget* w) { _cancelWidget = w; }
|
||||
void setFocus(Widget* w);
|
||||
void setFocus(const Widget* w);
|
||||
|
||||
/** Returns the base surface associated with this dialog. */
|
||||
FBSurface& surface() const { return *_surface; }
|
||||
|
|
|
@ -25,7 +25,7 @@ using json = nlohmann::json;
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
FavoritesManager::FavoritesManager(Settings& settings)
|
||||
: mySettings(settings)
|
||||
: mySettings{settings}
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
FileListWidget::FileListWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, int w, int h)
|
||||
: StringListWidget(boss, font, x, y, w, h),
|
||||
_filter{[](const FilesystemNode& node) { return true; }}
|
||||
_filter{[](const FilesystemNode&) { return true; }}
|
||||
{
|
||||
// This widget is special, in that it catches signals and redirects them
|
||||
setTarget(this);
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
HighScoresMenu::HighScoresMenu(OSystem& osystem)
|
||||
: DialogContainer{osystem}
|
||||
: DialogContainer(osystem)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ QuadTariDialog::QuadTariDialog(GuiObject* boss, const GUI::Font& font, int max_w
|
|||
//VarList::push_back(ctrls, "MindLink", "MINDLINK");
|
||||
//VarList::push_back(ctrls, "QuadTari", "QUADTARI");
|
||||
|
||||
int pwidth = font.getStringWidth("Joystick12"); // a bit wider looks better overall
|
||||
const int pwidth = font.getStringWidth("Joystick12"); // a bit wider looks better overall
|
||||
|
||||
myLeftPortLabel = new StaticTextWidget(this, font, xpos, ypos + 1, "Left port");
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ SnapshotDialog::SnapshotDialog(OSystem& osystem, DialogContainer& parent,
|
|||
wid.push_back(mySnapInterval);
|
||||
|
||||
// Booleans for saving snapshots
|
||||
int fwidth = font.getStringWidth("When saving snapshots:");
|
||||
const int fwidth = font.getStringWidth("When saving snapshots:");
|
||||
xpos = HBORDER; ypos += lineHeight + VGAP * 3;
|
||||
new StaticTextWidget(this, font, xpos, ypos, fwidth, lineHeight,
|
||||
"When saving snapshots:", TextAlign::Left);
|
||||
|
|
|
@ -316,7 +316,7 @@ string Widget::getToolTip(const Common::Point& pos) const
|
|||
{
|
||||
// Merge hotkeys if they only differ by "+Shift"
|
||||
const string mod = "+Shift";
|
||||
size_t p = BSPF::findIgnoreCase(hotkey, mod);
|
||||
const size_t p = BSPF::findIgnoreCase(hotkey, mod);
|
||||
|
||||
if(p != string::npos)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue