diff --git a/Src/BlockFile.cpp b/Src/BlockFile.cpp index 44c01a4..3ccc0dd 100644 --- a/Src/BlockFile.cpp +++ b/Src/BlockFile.cpp @@ -45,7 +45,7 @@ void CBlockFile::ReadString(std::string *str, uint32_t length) str->clear(); //TODO: use fstream to get rid of this ugly hack bool keep_loading = true; - for (size_t i = 0; i < length; i++) + for (uint32_t i = 0; i < length; i++) { char c; fread(&c, sizeof(char), 1, fp); diff --git a/Src/CPU/68K/Musashi/m68kdasm.c b/Src/CPU/68K/Musashi/m68kdasm.c index c396726..295057a 100644 --- a/Src/CPU/68K/Musashi/m68kdasm.c +++ b/Src/CPU/68K/Musashi/m68kdasm.c @@ -251,8 +251,8 @@ static const char* g_cpcc[64] = {/* 000 001 010 011 100 101 110 111 */ "f", "eq", "ogt", "oge", "olt", "ole", "ogl", "or", /* 000 */ "un", "ueq", "ugt", "uge", "ult", "ule", "ne", "t", /* 001 */ - "sf", "seq", "gt", "ge", "lt", "le", "gl" "gle", /* 010 */ - "ngle", "ngl", "nle", "nlt", "nge", "ngt", "sne", "st", /* 011 */ + "sf", "seq", "gt", "ge", "lt", "le", "gl", "gle", /* 010 */ + "ngle", "ngl", "nle", "nlt", "nge", "ngt", "sne","st", /* 011 */ "?", "?", "?", "?", "?", "?", "?", "?", /* 100 */ "?", "?", "?", "?", "?", "?", "?", "?", /* 101 */ "?", "?", "?", "?", "?", "?", "?", "?", /* 110 */ diff --git a/Src/Debugger/Debugger.h b/Src/Debugger/Debugger.h index 39045ac..b869057 100644 --- a/Src/Debugger/Debugger.h +++ b/Src/Debugger/Debugger.h @@ -60,7 +60,7 @@ #ifndef stricmp #ifdef _MSC_VER // MS VisualC++ #define stricmp _stricmp -#else // Assume GC +#elif defined(__GNUC__) #define stricmp strcasecmp #endif // _MSC_VER #endif // stricmp diff --git a/Src/GameLoader.cpp b/Src/GameLoader.cpp index 5db434e..e078203 100644 --- a/Src/GameLoader.cpp +++ b/Src/GameLoader.cpp @@ -20,7 +20,7 @@ bool GameLoader::LoadZipArchive(ZipArchive *zip, const std::string &zipfilename) zip->zfs.push_back(zf); // Identify all files in zip archive - int err = UNZ_OK; + int err; for (err = unzGoToFirstFile(zf); err == UNZ_OK; err = unzGoToNextFile(zf)) { unz_file_info file_info; @@ -135,7 +135,7 @@ bool GameLoader::MissingAttrib(const GameLoader &loader, const Util::Config::Nod GameLoader::File::ptr_t GameLoader::File::Create(const GameLoader &loader, const Util::Config::Node &file_node) { - if (GameLoader::MissingAttrib(loader, file_node, "name") | GameLoader::MissingAttrib(loader, file_node, "offset")) + if (GameLoader::MissingAttrib(loader, file_node, "name") | GameLoader::MissingAttrib(loader, file_node, "offset")) // no || to easier detect errors return ptr_t(); ptr_t file = std::make_shared(); file->offset = file_node["offset"].ValueAs(); @@ -159,7 +159,7 @@ bool GameLoader::File::operator==(const File &rhs) const GameLoader::Region::ptr_t GameLoader::Region::Create(const GameLoader &loader, const Util::Config::Node ®ion_node) { - if (GameLoader::MissingAttrib(loader, region_node, "name") | MissingAttrib(loader, region_node, "stride") | GameLoader::MissingAttrib(loader, region_node, "chunk_size")) + if (GameLoader::MissingAttrib(loader, region_node, "name") | MissingAttrib(loader, region_node, "stride") | GameLoader::MissingAttrib(loader, region_node, "chunk_size")) // no || to easier detect errors return ptr_t(); ptr_t region = std::make_shared(); region->region_name = region_node["name"].Value(); @@ -191,7 +191,7 @@ bool GameLoader::Region::FindFileIndexByOffset(size_t *idx, uint32_t offset) con static void PopulateGameInfo(Game *game, const Util::Config::Node &game_node) { game->name = game_node["name"].ValueAs(); - game->parent = game_node["parent"].ValueAsDefault(std::string()); + game->parent = game_node["parent"].ValueAsDefault(""); game->title = game_node["identity/title"].ValueAsDefault("Unknown"); game->version = game_node["identity/version"].ValueAsDefault(""); game->manufacturer = game_node["identity/manufacturer"].ValueAsDefault("Unknown"); @@ -210,7 +210,7 @@ static void PopulateGameInfo(Game *game, const Util::Config::Node &game_node) { "QuadRearFrontReversed", Game::QUAD_1_RRL_2_FRL }, { "QuadMix", Game::QUAD_1_LR_2_FR_MIX} }; - std::string audio_type = game_node["hardware/audio"].ValueAsDefault(std::string()); + std::string audio_type = game_node["hardware/audio"].ValueAsDefault(""); game->audio = audio_types[audio_type]; game->pci_bridge = game_node["hardware/pci_bridge"].ValueAsDefault(""); game->real3d_pci_id = game_node["hardware/real3d_pci_id"].ValueAsDefault(0); @@ -849,7 +849,7 @@ std::string StripFilename(const std::string &filepath) // If none found, there is directory component here if (last_slash == std::string::npos) - return ""; + return std::string(); // Otherwise, strip everything after the slash return std::string(filepath, 0, last_slash + 1); diff --git a/Src/Graphics/New3D/GLSLShader.cpp b/Src/Graphics/New3D/GLSLShader.cpp index 0f2a358..4b27e1f 100644 --- a/Src/Graphics/New3D/GLSLShader.cpp +++ b/Src/Graphics/New3D/GLSLShader.cpp @@ -1,5 +1,5 @@ #include "GLSLShader.h" -#include +#include GLSLShader::GLSLShader() { @@ -107,6 +107,3 @@ int GLSLShader::GetAttributeLocation(const char *str) { return glGetAttribLocation(m_program, str); } - - - diff --git a/Src/Graphics/New3D/Model.h b/Src/Graphics/New3D/Model.h index 5c0e0b5..a081d29 100644 --- a/Src/Graphics/New3D/Model.h +++ b/Src/Graphics/New3D/Model.h @@ -3,9 +3,8 @@ #include #include -#include #include -#include +#include #include "Texture.h" #include "Mat4.h" @@ -32,24 +31,19 @@ struct Vertex // half vertex static bool Equal(const Vertex& p1, const Vertex& p2) { - if (p1.pos[0] == p2.pos[0] && + return (p1.pos[0] == p2.pos[0] && p1.pos[1] == p2.pos[1] && - p1.pos[2] == p2.pos[2]) - { - return true; - } - - return false; + p1.pos[2] == p2.pos[2]); } static void Average(const Vertex& p1, const Vertex& p2, Vertex& p3) { p3.pos[3] = 1.0f; //always 1 - p3.fixedShade = (p1.fixedShade + p2.fixedShade) / 2.0f; + p3.fixedShade = (p1.fixedShade + p2.fixedShade) * 0.5f; - for (int i = 0; i < 3; i++) { p3.pos[i] = (p1.pos[i] + p2.pos[i]) / 2.0f; } - for (int i = 0; i < 3; i++) { p3.normal[i] = (p1.normal[i] + p2.normal[i]) / 2.0f; } - for (int i = 0; i < 2; i++) { p3.texcoords[i] = (p1.texcoords[i] + p2.texcoords[i]) / 2.0f; } + for (int i = 0; i < 3; i++) { p3.pos[i] = (p1.pos[i] + p2.pos[i]) * 0.5f; } + for (int i = 0; i < 3; i++) { p3.normal[i] = (p1.normal[i] + p2.normal[i]) * 0.5f; } + for (int i = 0; i < 2; i++) { p3.texcoords[i] = (p1.texcoords[i] + p2.texcoords[i]) * 0.5f; } } }; @@ -265,4 +259,4 @@ struct Node } // New3D -#endif \ No newline at end of file +#endif diff --git a/Src/Graphics/New3D/PolyHeader.cpp b/Src/Graphics/New3D/PolyHeader.cpp index f8322d7..eb6f230 100644 --- a/Src/Graphics/New3D/PolyHeader.cpp +++ b/Src/Graphics/New3D/PolyHeader.cpp @@ -117,7 +117,7 @@ int PolyHeader::NumVerts() int PolyHeader::NumSharedVerts() { - int sharedVerts[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; + static const int sharedVerts[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; return sharedVerts[header[0] & 0xf]; } @@ -135,9 +135,9 @@ bool PolyHeader::SharedVertex(int vertex) void PolyHeader::FaceNormal(float n[3]) { - n[0] = (float)(((INT32)header[1]) >> 8) * (1.0f / 4194304.0f); - n[1] = (float)(((INT32)header[2]) >> 8) * (1.0f / 4194304.0f); - n[2] = (float)(((INT32)header[3]) >> 8) * (1.0f / 4194304.0f); + n[0] = (float)(((INT32)header[1]) >> 8) * (float)(1.0 / 4194304.0); + n[1] = (float)(((INT32)header[2]) >> 8) * (float)(1.0 / 4194304.0); + n[2] = (float)(((INT32)header[3]) >> 8) * (float)(1.0 / 4194304.0); } float PolyHeader::UVScale() diff --git a/Src/Graphics/New3D/R3DScrollFog.cpp b/Src/Graphics/New3D/R3DScrollFog.cpp index 262ebda..aa57f4a 100644 --- a/Src/Graphics/New3D/R3DScrollFog.cpp +++ b/Src/Graphics/New3D/R3DScrollFog.cpp @@ -43,7 +43,7 @@ void main() position = spotEllipse.xy; size = spotEllipse.zw; ellipse = length((gl_FragCoord.xy - position) / size); - ellipse = pow(ellipse, 2.0); // decay rate = square of distance from center + ellipse = ellipse * ellipse; // decay rate = square of distance from center ellipse = 1.0 - ellipse; // invert ellipse = max(0.0, ellipse); // clamp @@ -149,4 +149,4 @@ void R3DScrollFog::DeallocResources() m_vbo.Destroy(); } -} \ No newline at end of file +} diff --git a/Src/Graphics/New3D/R3DShader.cpp b/Src/Graphics/New3D/R3DShader.cpp index 6797650..1356be8 100644 --- a/Src/Graphics/New3D/R3DShader.cpp +++ b/Src/Graphics/New3D/R3DShader.cpp @@ -134,6 +134,7 @@ GLint R3DShader::GetVertexAttribPos(const std::string& attrib) if (m_vertexLocCache.count(attrib)==0) { auto pos = glGetAttribLocation(m_shaderProgram, attrib.c_str()); m_vertexLocCache[attrib] = pos; + return pos; } return m_vertexLocCache[attrib]; diff --git a/Src/Graphics/New3D/R3DShader.h b/Src/Graphics/New3D/R3DShader.h index e152722..226dddf 100644 --- a/Src/Graphics/New3D/R3DShader.h +++ b/Src/Graphics/New3D/R3DShader.h @@ -4,7 +4,7 @@ #include #include "Util/NewConfig.h" #include "Model.h" -#include +#include #include namespace New3D { @@ -109,11 +109,11 @@ private: GLint m_locDiscardAlpha; // vertex attribute position cache - std::map m_vertexLocCache; + std::unordered_map m_vertexLocCache; }; } // New3D -#endif \ No newline at end of file +#endif diff --git a/Src/Graphics/New3D/TextureSheet.cpp b/Src/Graphics/New3D/TextureSheet.cpp index 979147d..1bb206c 100644 --- a/Src/Graphics/New3D/TextureSheet.cpp +++ b/Src/Graphics/New3D/TextureSheet.cpp @@ -4,7 +4,7 @@ namespace New3D { TextureSheet::TextureSheet() { - m_temp.resize(1024 * 1024 * 4); // temporay buffer for textures + m_temp.resize(1024 * 1024 * 4); // temporary buffer for textures } int TextureSheet::ToIndex(int x, int y) diff --git a/Src/Graphics/New3D/Vec.cpp b/Src/Graphics/New3D/Vec.cpp index ee63676..b7803f1 100644 --- a/Src/Graphics/New3D/Vec.cpp +++ b/Src/Graphics/New3D/Vec.cpp @@ -1,33 +1,9 @@ #include "Vec.h" #include +#include namespace New3D { -static float fastSqrt(float number) { - long i; - float x, y; - const float f = 1.5F; - - x = number * 0.5F; - y = number; - i = * ( long * ) &y; - i = 0x5f375a86 - ( i >> 1 ); - y = * ( float * ) &i; - y = y * ( f - ( x * y * y ) ); - y = y * ( f - ( x * y * y ) ); - return number * y; -} - -static float fastInvSqrt(float x) -{ - float xhalf = 0.5f*x; - int i = *(int*)&x; // get bits for floating value - i = 0x5f375a86- (i>>1); // gives initial guess y0 - x = *(float*)&i; // convert bits back to float - x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy - return x; -} - void V3::subtract(const Vec3 a, const Vec3 b, Vec3 out) { out[0] = a[0] - b[0]; @@ -58,7 +34,7 @@ void V3::add(Vec3 a, const Vec3 b) { void V3::divide(Vec3 a, float number) { - multiply(a,1/number); + multiply(a,1.f/number); } void V3::multiply(Vec3 a, float number) { @@ -123,13 +99,13 @@ float V3::length(const Vec3 v) { void V3::normalise(Vec3 v) { //======== - float len; + float inv_len; //======== - len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; - len = fastInvSqrt(len); + inv_len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; + inv_len = 1.f/std::sqrt(inv_len); - multiply(v,len); + multiply(v,inv_len); } void V3::multiplyAdd(const Vec3 a, float scale, const Vec3 b, Vec3 out) { @@ -141,9 +117,9 @@ void V3::multiplyAdd(const Vec3 a, float scale, const Vec3 b, Vec3 out) { void V3::reset(Vec3 v) { - v[0] = 0; - v[1] = 0; - v[2] = 0; + v[0] = 0.f; + v[1] = 0.f; + v[2] = 0.f; } void V3::set(Vec3 v, float value) { @@ -171,7 +147,7 @@ void V3::reflect(const Vec3 a, const Vec3 b, Vec3 out) { V3::copy(a,v); - temp = V3::dotProduct(a,b) * 2; + temp = V3::dotProduct(a,b) * 2.f; V3::multiply(v,temp); V3::subtract(b,v,out); @@ -191,16 +167,16 @@ void V3::createNormal(const Vec3 a, const Vec3 b, const Vec3 c, Vec3 outNormal) void V3::_max(Vec3 a, const Vec3 compare) { - if(a[0] < compare[0]) a[0] = compare[0]; - if(a[1] < compare[1]) a[1] = compare[1]; - if(a[2] < compare[2]) a[2] = compare[2]; + a[0] = std::max(compare[0], a[0]); + a[1] = std::max(compare[1], a[1]); + a[2] = std::max(compare[2], a[2]); } void V3::_min(Vec3 a, const Vec3 compare) { - if(a[0] > compare[0]) a[0] = compare[0]; - if(a[1] > compare[1]) a[1] = compare[1]; - if(a[2] > compare[2]) a[2] = compare[2]; + a[0] = std::min(compare[0], a[0]); + a[1] = std::min(compare[1], a[1]); + a[2] = std::min(compare[2], a[2]); } bool V3::cmp(const Vec3 a, float b) { @@ -223,14 +199,9 @@ bool V3::cmp(const Vec3 a, const Vec3 b) { void V3::clamp(Vec3 a, float _min, float _max) { - if(a[0] < _min) a[0] = _min; - if(a[0] > _max) a[0] = _max; - - if(a[1] < _min) a[1] = _min; - if(a[1] > _max) a[1] = _max; - - if(a[2] < _min) a[2] = _min; - if(a[2] > _max) a[2] = _max; + a[0] = std::min(std::max(_min, a[0]), _max); + a[1] = std::min(std::max(_min, a[1]), _max); + a[2] = std::min(std::max(_min, a[2]), _max); } } // New3D diff --git a/Src/Graphics/Render2D.cpp b/Src/Graphics/Render2D.cpp index 4278350..06294eb 100644 --- a/Src/Graphics/Render2D.cpp +++ b/Src/Graphics/Render2D.cpp @@ -333,23 +333,13 @@ static inline void DrawTileLine(uint32_t *line, int pixelOffset, uint16_t tile, uint32_t pattern = vram[patternOffset + patternLine]; for (int p = 7; p >= 0; p--) { - if (!clip || (clip && pixelOffset >= 0 && pixelOffset < 496)) + if (!clip || (/*pixelOffset >= 0 &&*/ (unsigned int)pixelOffset < 496u)) // the >= 0 check is accounted for, as the cast to uint makes them appear as very large unsigned values { uint16_t maskTest = 1 << (15-((pixelOffset+0)/32)); bool visible = (mask & maskTest) != 0; - uint32_t pixel = palette[((pattern >> (p*4)) & 0xF) | colorHi]; - if (alphaTest) - { - if (visible && (pixel >> 24) != 0) // only draw opaque pixels + uint32_t pixel = visible ? palette[((pattern >> (p*4)) & 0xF) | colorHi] : 0; + if (!alphaTest || (visible && (pixel >> 24) != 0)) // only draw opaque pixels line[pixelOffset] = pixel; - } - else - { - if (visible) - line[pixelOffset] = pixel; - else - line[pixelOffset] = 0; - } } ++pixelOffset; } @@ -361,23 +351,13 @@ static inline void DrawTileLine(uint32_t *line, int pixelOffset, uint16_t tile, uint32_t pattern = vram[patternOffset + patternLine + i]; for (int p = 3; p >= 0; p--) { - if (!clip || (clip && pixelOffset >= 0 && pixelOffset < 496)) + if (!clip || (/*pixelOffset >= 0 &&*/ (unsigned int)pixelOffset < 496u)) // the >= 0 check is accounted for, as the cast to uint makes them appear as very large unsigned values { uint16_t maskTest = 1 << (15-((pixelOffset+0)/32)); bool visible = (mask & maskTest) != 0; - uint32_t pixel = palette[((pattern >> (p*8)) & 0xFF) | colorHi]; - if (alphaTest) - { - if (visible && (pixel >> 24) != 0) + uint32_t pixel = visible ? palette[((pattern >> (p*8)) & 0xFF) | colorHi] : 0; + if (!alphaTest || (visible && (pixel >> 24) != 0)) line[pixelOffset] = pixel; - } - else - { - if (visible) - line[pixelOffset] = pixel; - else - line[pixelOffset] = 0; // transparent - } } ++pixelOffset; } @@ -417,12 +397,11 @@ static void DrawLayer(uint32_t *pixels, int layerNum, const uint32_t *vram, cons int extraTile = (hFine != 0) ? 1 : 0; // h-scrolling requires part of 63rd tile // First tile may be clipped - int tx = 0; DrawTileLine(line, pixelOffset, nameTable[(hTile ^ 1) & 63], vFine, vram, palette, mask); ++hTile; pixelOffset += 8; // Middle tiles will not be clipped - for (tx = 1; tx < (62 - 1 + extraTile); tx++) + for (int tx = 1; tx < (62 - 1 + extraTile); tx++) { DrawTileLine(line, pixelOffset, nameTable[(hTile ^ 1) & 63], vFine, vram, palette, mask); ++hTile; diff --git a/Src/Graphics/Shader.cpp b/Src/Graphics/Shader.cpp index 3379498..aec7114 100644 --- a/Src/Graphics/Shader.cpp +++ b/Src/Graphics/Shader.cpp @@ -82,7 +82,7 @@ static char *LoadShaderSource(const char *file) return buf; } -bool LoadShaderProgram(GLuint *shaderProgramPtr, GLuint *vertexShaderPtr, GLuint *fragmentShaderPtr, std::string vsFile, std::string fsFile, const char *vsString, const char *fsString) +bool LoadShaderProgram(GLuint *shaderProgramPtr, GLuint *vertexShaderPtr, GLuint *fragmentShaderPtr, const std::string& vsFile, const std::string& fsFile, const char *vsString, const char *fsString) { char infoLog[2048]; const char *vsSource, *fsSource; // source code diff --git a/Src/Graphics/Shader.h b/Src/Graphics/Shader.h index fd7f4ca..ea52711 100644 --- a/Src/Graphics/Shader.h +++ b/Src/Graphics/Shader.h @@ -53,8 +53,8 @@ * OKAY is successfully loaded, otherwise FAIL. Prints own error messages. */ extern bool LoadShaderProgram(GLuint *shaderProgramPtr, GLuint *vertexShaderPtr, - GLuint *fragmentShaderPtr, std::string vsFile, - std::string fsFile, const char *vsString, + GLuint *fragmentShaderPtr, const std::string& vsFile, + const std::string& fsFile, const char *vsString, const char *fsString); /* diff --git a/Src/Inputs/InputSystem.cpp b/Src/Inputs/InputSystem.cpp index c740ff2..2eb6910 100644 --- a/Src/Inputs/InputSystem.cpp +++ b/Src/Inputs/InputSystem.cpp @@ -724,7 +724,7 @@ void CInputSystem::CheckKeySources(int kbdNum, bool fullAxisOnly, vector> num).fail(); @@ -813,9 +813,9 @@ string CInputSystem::IntToString(int num) return ss.str(); } -bool CInputSystem::EqualsIgnoreCase(string str1, const char *str2) +bool CInputSystem::EqualsIgnoreCase(const string& str1, const char *str2) { - for (string::const_iterator ci = str1.begin(); ci < str1.end(); ci++) + for (string::const_iterator ci = str1.begin(); ci < str1.end(); ++ci) { if (*str2 == '\0' || tolower(*ci) != tolower(*str2)) return false; @@ -824,9 +824,9 @@ bool CInputSystem::EqualsIgnoreCase(string str1, const char *str2) return *str2 == '\0'; } -bool CInputSystem::StartsWithIgnoreCase(string str1, const char *str2) +bool CInputSystem::StartsWithIgnoreCase(const string& str1, const char *str2) { - for (string::const_iterator ci = str1.begin(); ci < str1.end(); ci++) + for (string::const_iterator ci = str1.begin(); ci < str1.end(); ++ci) { if (*str2 == '\0') return true; @@ -837,7 +837,7 @@ bool CInputSystem::StartsWithIgnoreCase(string str1, const char *str2) return *str2 == '\0'; } -bool CInputSystem::IsValidKeyName(string str) +bool CInputSystem::IsValidKeyName(const string& str) { for (size_t i = 0; i < NUM_VALID_KEYS; i++) { @@ -847,7 +847,7 @@ bool CInputSystem::IsValidKeyName(string str) return false; } -EMousePart CInputSystem::LookupMousePart(string str) +EMousePart CInputSystem::LookupMousePart(const string& str) { for (int i = 0; s_mseParts[i].id != NULL; i++) { @@ -867,7 +867,7 @@ const char *CInputSystem::LookupName(EMousePart msePart) return NULL; } -EJoyPart CInputSystem::LookupJoyPart(string str) +EJoyPart CInputSystem::LookupJoyPart(const string& str) { for (int i = 0; s_joyParts[i].id != NULL; i++) { @@ -887,7 +887,7 @@ const char *CInputSystem::LookupName(EJoyPart joyPart) return NULL; } -size_t CInputSystem::ParseDevMapping(string str, const char *devType, int &devNum) +size_t CInputSystem::ParseDevMapping(const string& str, const char *devType, int &devNum) { if (!StartsWithIgnoreCase(str, devType)) return -1; @@ -913,7 +913,7 @@ size_t CInputSystem::ParseDevMapping(string str, const char *devType, int &devNu return -1; } -CInputSource* CInputSystem::ParseMultiSource(string str, bool fullAxisOnly, bool isOr) +CInputSource* CInputSystem::ParseMultiSource(const string& str, bool fullAxisOnly, bool isOr) { // Check for empty or NONE mapping size_t size = str.size(); @@ -1023,7 +1023,7 @@ CInputSource *CInputSystem::ParseSingleSource(string str) if (rightSource != NULL) sources.push_back(rightSource); } - if (sources.size() > 0) + if (!sources.empty()) return new CMultiInputSource(true, sources); } return m_emptySource; @@ -1265,7 +1265,7 @@ void CInputSystem::StoreJoySettings(Util::Config::Node *config, JoySettings *set KeySettings *CInputSystem::GetKeySettings(int kbdNum, bool useDefault) { KeySettings *common = NULL; - for (vector::iterator it = m_keySettings.begin(); it != m_keySettings.end(); it++) + for (vector::iterator it = m_keySettings.begin(); it != m_keySettings.end(); ++it) { if ((*it)->kbdNum == kbdNum) return *it; @@ -1280,7 +1280,7 @@ KeySettings *CInputSystem::GetKeySettings(int kbdNum, bool useDefault) MouseSettings *CInputSystem::GetMouseSettings(int mseNum, bool useDefault) { MouseSettings *common = NULL; - for (vector::iterator it = m_mseSettings.begin(); it != m_mseSettings.end(); it++) + for (vector::iterator it = m_mseSettings.begin(); it != m_mseSettings.end(); ++it) { if ((*it)->mseNum == mseNum) return *it; @@ -1295,7 +1295,7 @@ MouseSettings *CInputSystem::GetMouseSettings(int mseNum, bool useDefault) JoySettings *CInputSystem::GetJoySettings(int joyNum, bool useDefault) { JoySettings *common = NULL; - for (vector::iterator it = m_joySettings.begin(); it != m_joySettings.end(); it++) + for (vector::iterator it = m_joySettings.begin(); it != m_joySettings.end(); ++it) { if ((*it)->joyNum == joyNum) return *it; @@ -1340,7 +1340,7 @@ int CInputSystem::GetButtonNumber(EMousePart msePart) EMousePart CInputSystem::GetMouseAxis(int axisNum, int axisDir) { - if (axisNum > 0 || axisNum >= NUM_MOUSE_AXES || axisDir < 0 || axisDir > 3) + if (axisNum < 0 || axisNum >= NUM_MOUSE_AXES || axisDir < 0 || axisDir > 3) return MouseUnknown; return (EMousePart)(MouseXAxis + 4 * axisNum + axisDir); } @@ -1587,17 +1587,17 @@ CInputSource* CInputSystem::ParseSource(const char *mapping, bool fullAxisOnly) void CInputSystem::ClearSettings() { // Delete all key settings - for (vector::iterator it = m_keySettings.begin(); it != m_keySettings.end(); it++) + for (vector::iterator it = m_keySettings.begin(); it != m_keySettings.end(); ++it) delete *it; m_keySettings.clear(); // Delete all mouse settings - for (vector::iterator it = m_mseSettings.begin(); it != m_mseSettings.end(); it++) + for (vector::iterator it = m_mseSettings.begin(); it != m_mseSettings.end(); ++it) delete *it; m_mseSettings.clear(); // Delete all joystick settings - for (vector::iterator it = m_joySettings.begin(); it != m_joySettings.end(); it++) + for (vector::iterator it = m_joySettings.begin(); it != m_joySettings.end(); ++it) delete *it; m_joySettings.clear(); } @@ -1715,15 +1715,15 @@ void CInputSystem::LoadFromConfig(const Util::Config::Node &config) void CInputSystem::StoreToConfig(Util::Config::Node *config) { // Write all key settings - for (vector::iterator it = m_keySettings.begin(); it != m_keySettings.end(); it++) + for (vector::iterator it = m_keySettings.begin(); it != m_keySettings.end(); ++it) StoreKeySettings(config, *it); // Write all mouse settings - for (vector::iterator it = m_mseSettings.begin(); it != m_mseSettings.end(); it++) + for (vector::iterator it = m_mseSettings.begin(); it != m_mseSettings.end(); ++it) StoreMouseSettings(config, *it); // Write all joystick settings - for (vector::iterator it = m_joySettings.begin(); it != m_joySettings.end(); it++) + for (vector::iterator it = m_joySettings.begin(); it != m_joySettings.end(); ++it) StoreJoySettings(config, *it); } @@ -1772,11 +1772,11 @@ bool CInputSystem::ReadMapping(char *buffer, unsigned bufSize, bool fullAxisOnly CheckAllSources(readFlags, fullAxisOnly, mseCentered, sources, mapping, badSources); // When some inputs have been activated, keep looping until they have all been released again. - if (sources.size() > 0) + if (!sources.empty()) { // Check each source is no longer active bool active = false; - for (vector::iterator it = sources.begin(); it != sources.end(); it++) + for (vector::iterator it = sources.begin(); it != sources.end(); ++it) { if ((*it)->IsActive()) { diff --git a/Src/Inputs/InputSystem.h b/Src/Inputs/InputSystem.h index b71b12d..6cc47fd 100644 --- a/Src/Inputs/InputSystem.h +++ b/Src/Inputs/InputSystem.h @@ -420,23 +420,23 @@ private: */ void CheckJoySources(int joyNum, bool fullAxisOnly, std::vector &sources, std::string &mapping, std::vector &badSources); - bool ParseInt(std::string str, int &num); + bool ParseInt(const std::string& str, int &num); std::string IntToString(int num); - bool EqualsIgnoreCase(std::string str1, const char *str2); + bool EqualsIgnoreCase(const std::string& str1, const char *str2); - bool StartsWithIgnoreCase(std::string str1, const char *str2); + bool StartsWithIgnoreCase(const std::string& str1, const char *str2); /* * Returns true if the given string represents a valid key name. */ - bool IsValidKeyName(std::string str); + bool IsValidKeyName(const std::string& str); /* * Returns the EMousePart with the given mapping name or MouseUnknown if not found. */ - EMousePart LookupMousePart(std::string str); + EMousePart LookupMousePart(const std::string& str); /* * Returns the mapping name for the given EMousePart. @@ -446,21 +446,21 @@ private: /* * Returns the EJoyPart with the given mapping name or JoyUnknown if not found. */ - EJoyPart LookupJoyPart(std::string str); + EJoyPart LookupJoyPart(const std::string& str); /* * Returns the mapping name for the given EJoyPart. */ const char *LookupName(EJoyPart joyPart); - size_t ParseDevMapping(std::string str, const char *devType, int &devNum); + size_t ParseDevMapping(const std::string& str, const char *devType, int &devNum); /* * Parses the given mapping string, possibly representing more than one mapping, and returns an input source for it or NULL if the * mapping is invalid. * If fullAxisOnly is true, then only mappings that represent a full axis range (eg MouseXAxis) are parsed. */ - CInputSource* ParseMultiSource(std::string str, bool fullAxisOnly, bool isOr); + CInputSource* ParseMultiSource(const std::string& str, bool fullAxisOnly, bool isOr); /* * Parses the given single mapping string and returns an input source for it, or NULL if non exists. diff --git a/Src/Inputs/Inputs.cpp b/Src/Inputs/Inputs.cpp index e944891..d3235bc 100644 --- a/Src/Inputs/Inputs.cpp +++ b/Src/Inputs/Inputs.cpp @@ -278,7 +278,7 @@ CInputs::CInputs(CInputSystem *system) CInputs::~CInputs() { - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) delete *it; m_inputs.clear(); } @@ -383,7 +383,7 @@ CInput *CInputs::operator[](const unsigned index) CInput *CInputs::operator[](const char *idOrLabel) { - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) { if (stricmp((*it)->id, idOrLabel) == 0 || stricmp((*it)->label, idOrLabel) == 0) return *it; @@ -403,7 +403,7 @@ bool CInputs::Initialize() return false; // Initialize all the inputs - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) (*it)->Initialize(m_system); return true; @@ -413,7 +413,7 @@ void CInputs::LoadFromConfig(const Util::Config::Node &config) { m_system->LoadFromConfig(config); - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) (*it)->LoadFromConfig(config); } @@ -421,7 +421,7 @@ void CInputs::StoreToConfig(Util::Config::Node *config) { m_system->StoreToConfig(config); - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) (*it)->StoreToConfig(config); } @@ -446,7 +446,7 @@ bool CInputs::ConfigureInputs(const Game &game) // Get all inputs to be configured vector toConfigure; vector::iterator it; - for (it = m_inputs.begin(); it != m_inputs.end(); it++) + for (it = m_inputs.begin(); it != m_inputs.end(); ++it) { if ((*it)->IsConfigurable() && ((*it)->gameFlags & gameFlags)) toConfigure.push_back(*it); @@ -455,7 +455,7 @@ bool CInputs::ConfigureInputs(const Game &game) // Remember current mappings for each input in case changes need to be undone later vector oldMappings(toConfigure.size()); size_t index = 0; - for (it = toConfigure.begin(); it != toConfigure.end(); it++) + for (it = toConfigure.begin(); it != toConfigure.end(); ++it) oldMappings[index++] = (*it)->GetMapping(); const char *groupLabel = NULL; @@ -495,7 +495,7 @@ Redisplay: { // If user pressed aborted input, then undo all changes and finish configuration index = 0; - for (it = toConfigure.begin(); it != toConfigure.end(); it++) + for (it = toConfigure.begin(); it != toConfigure.end(); ++it) { (*it)->SetMapping(oldMappings[index].c_str()); index++; @@ -697,7 +697,7 @@ void CInputs::CalibrateJoystick(int joyNum) puts(""); if (m_system->CalibrateJoystickAxis(joyNum, axisNum)) { - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) (*it)->InputSystemChanged(); } return; @@ -720,7 +720,7 @@ void CInputs::PrintInputs(const Game *game) } const char *groupLabel = NULL; - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) { if (!(*it)->IsConfigurable() || !((*it)->gameFlags & gameFlags)) continue; @@ -749,7 +749,7 @@ bool CInputs::Poll(const Game *game, unsigned dispX, unsigned dispY, unsigned di // Poll all UI inputs and all the inputs used by the current game, or all inputs if game is NULL uint32_t gameFlags = game ? game->inputs : Game::INPUT_ALL; - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) { if ((*it)->IsUIInput() || ((*it)->gameFlags & gameFlags)) (*it)->Poll(); @@ -773,7 +773,7 @@ void CInputs::DumpState(const Game *game) } // Loop through the inputs used by the current game, or all inputs if game is NULL, and dump their values to stdout - for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); it++) + for (vector::iterator it = m_inputs.begin(); it != m_inputs.end(); ++it) { if (!(*it)->IsUIInput() && !((*it)->gameFlags & gameFlags)) continue; diff --git a/Src/Inputs/MultiInputSource.cpp b/Src/Inputs/MultiInputSource.cpp index e456a3d..a2f4d34 100644 --- a/Src/Inputs/MultiInputSource.cpp +++ b/Src/Inputs/MultiInputSource.cpp @@ -36,13 +36,13 @@ using namespace std; ESourceType CMultiInputSource::GetCombinedType(vector &sources) { // Check if vector is empty - if (sources.size() == 0) + if (sources.empty()) return SourceEmpty; // Otherwise, see whether all sources are switches, or if have a full- or half-axis present bool allSwitches = true; bool hasFullAxis = false; bool hasHalfAxis = false; - for (vector::iterator it = sources.begin(); it != sources.end(); it++) + for (vector::iterator it = sources.begin(); it != sources.end(); ++it) { if ((*it)->type == SourceInvalid) return SourceInvalid; // An invalid source makes the whole lot invalid diff --git a/Src/Model3/53C810Disasm.cpp b/Src/Model3/53C810Disasm.cpp index b52a6a4..056280e 100644 --- a/Src/Model3/53C810Disasm.cpp +++ b/Src/Model3/53C810Disasm.cpp @@ -29,10 +29,10 @@ * be decoded incorrectly. */ -#include -#include +#include +#include #ifdef STANDALONE -#include +#include #endif #include "Types.h" diff --git a/Src/Model3/93C46.cpp b/Src/Model3/93C46.cpp index 160af3c..004fbf4 100644 --- a/Src/Model3/93C46.cpp +++ b/Src/Model3/93C46.cpp @@ -33,7 +33,7 @@ #include "93C46.h" -#include +#include #include "Supermodel.h" diff --git a/Src/Model3/DSB.cpp b/Src/Model3/DSB.cpp index ff64da0..07ba077 100644 --- a/Src/Model3/DSB.cpp +++ b/Src/Model3/DSB.cpp @@ -143,7 +143,7 @@ int CDSBResampler::UpSampleAndMix(INT16 *outL, INT16 *outR, INT16 *inL, INT16 *i int outIdx = 0; int inIdx = 0; INT32 leftSample, rightSample, leftSoundSample, rightSoundSample; - INT32 v[2], musicVol, soundVol; + INT32 v[2], musicVol; // Obtain program volume settings and convert to 24.8 fixed point (0-200 -> 0x00-0x200) musicVol = m_config["MusicVolume"].ValueAs(); diff --git a/Src/Model3/Model3.cpp b/Src/Model3/Model3.cpp index 5250c32..ca2e7ce 100644 --- a/Src/Model3/Model3.cpp +++ b/Src/Model3/Model3.cpp @@ -686,7 +686,7 @@ void CModel3::WriteInputs(unsigned reg, UINT8 data) case 0x87: // Read light gun register serialFIFO1 = 0; // clear serial FIFO 1 serialFIFO2 = 0; - if ((m_game.inputs & Game::INPUT_GUN1||m_game.inputs & Game::INPUT_GUN2)) + if ((m_game.inputs & Game::INPUT_GUN1)||(m_game.inputs & Game::INPUT_GUN2)) { switch (gunReg) { @@ -1144,7 +1144,7 @@ UINT16 CModel3::Read16(UINT32 addr) #ifdef NET_BOARD case 0xc0: // spikeout call this - // interresting : poking @4 master to same value as slave (0x100) or simply !=0 -> connected and go in game, but freeze (prints comm error) as soon as players appear after the gate + // interesting : poking @4 master to same value as slave (0x100) or simply !=0 -> connected and go in game, but freeze (prints comm error) as soon as players appear after the gate // sort of sync ack ? who writes this 16b value ? { UINT16 result; @@ -1906,7 +1906,7 @@ void CModel3::LoadState(CBlockFile *SaveState) SaveState->Read(securityRAM, 0x20000); SaveState->Read(&midiCtrlPort, sizeof(midiCtrlPort)); int32_t securityFirstRead; - SaveState->Write(&securityFirstRead, sizeof(securityFirstRead)); + SaveState->Read(&securityFirstRead, sizeof(securityFirstRead)); m_securityFirstRead = securityFirstRead != 0; // All devices... diff --git a/Src/Model3/RTC72421.cpp b/Src/Model3/RTC72421.cpp index 7cc2c27..d5490ef 100644 --- a/Src/Model3/RTC72421.cpp +++ b/Src/Model3/RTC72421.cpp @@ -33,7 +33,7 @@ #include "RTC72421.h" -#include +#include #include "Supermodel.h" @@ -43,11 +43,16 @@ UINT8 CRTC72421::ReadRegister(unsigned reg) { - time_t currentTime; - struct tm *Time; + static time_t oldTime{0}; + time_t currentTime; + static struct tm *Time; time(¤tTime); - Time = localtime(¤tTime); + if (currentTime != oldTime) + { + Time = localtime(¤tTime); + oldTime = currentTime; + } switch (reg&0xF) { diff --git a/Src/Model3/Real3D.cpp b/Src/Model3/Real3D.cpp index 30bdb37..492f8c5 100644 --- a/Src/Model3/Real3D.cpp +++ b/Src/Model3/Real3D.cpp @@ -809,7 +809,7 @@ uint32_t CReal3D::ReadRegister(unsigned reg) int index = (reg - 20) / 4; float val = Render3D->GetLosValue(index); - if (val) { + if (val != 0.f) { //val = 1.0f / val; // test program indicate z values are 1 over return 0xffffffff; // infinity } @@ -922,7 +922,6 @@ uint32_t CReal3D::GetASICIDCode(ASIC asic) const } void CReal3D::SetStepping(int stepping, uint32_t pciIDValue) - { step = stepping; if ((step!=0x10) && (step!=0x15) && (step!=0x20) && (step!=0x21)) @@ -979,7 +978,7 @@ void CReal3D::SetStepping(int stepping, uint32_t pciIDValue) bool CReal3D::Init(const uint8_t *vromPtr, IBus *BusObjectPtr, CIRQ *IRQObjectPtr, unsigned dmaIRQBit) { - uint32_t memSize = (m_config["GPUMultiThreaded"].ValueAs() ? MEMORY_POOL_SIZE : MEM_POOL_SIZE_RW); + uint32_t memSize = (m_gpuMultiThreaded ? MEMORY_POOL_SIZE : MEM_POOL_SIZE_RW); float memSizeMB = (float)memSize/(float)0x100000; // IRQ and bus objects diff --git a/Src/Model3/Real3D.h b/Src/Model3/Real3D.h index 598345c..3013924 100644 --- a/Src/Model3/Real3D.h +++ b/Src/Model3/Real3D.h @@ -36,7 +36,7 @@ #include "Util/NewConfig.h" #include -#include +#include /* * QueuedUploadTextures: @@ -505,7 +505,7 @@ private: bool m_evenFrame = false; // Internal ASIC state - std::map m_asicID; + std::unordered_map m_asicID; uint64_t m_internalRenderConfig[2]; }; diff --git a/Src/Network/INetBoard.h b/Src/Network/INetBoard.h index cba9e3b..2a3a1fa 100644 --- a/Src/Network/INetBoard.h +++ b/Src/Network/INetBoard.h @@ -41,7 +41,7 @@ public: virtual bool Init(UINT8* netRAMPtr, UINT8* netBufferPtr) = 0; - virtual void GetGame(Game) = 0; + virtual void GetGame(const Game&) = 0; virtual UINT8 ReadCommRAM8(unsigned addr) = 0; virtual UINT16 ReadCommRAM16(unsigned addr) = 0; diff --git a/Src/Network/NetBoard.cpp b/Src/Network/NetBoard.cpp index df3cd58..0e7e4b0 100644 --- a/Src/Network/NetBoard.cpp +++ b/Src/Network/NetBoard.cpp @@ -1309,7 +1309,7 @@ bool CNetBoard::IsRunning(void) return m_attached && (ioreg[0xc0] != 0); } -void CNetBoard::GetGame(Game gameinfo) +void CNetBoard::GetGame(const Game& gameinfo) { Gameinfo = gameinfo; } diff --git a/Src/Network/NetBoard.h b/Src/Network/NetBoard.h index 1b573f2..0768986 100644 --- a/Src/Network/NetBoard.h +++ b/Src/Network/NetBoard.h @@ -60,7 +60,7 @@ public: bool Init(UINT8 *netRAMPtr, UINT8 *netBufferPtr); - void GetGame(Game); + void GetGame(const Game&); UINT8 ReadCommRAM8(unsigned addr); UINT16 ReadCommRAM16(unsigned addr); @@ -104,7 +104,7 @@ private: // netsock UINT16 port_in = 0; UINT16 port_out = 0; - std::string addr_out = ""; + std::string addr_out; std::unique_ptr nets; std::unique_ptr netr; diff --git a/Src/Network/SimNetBoard.cpp b/Src/Network/SimNetBoard.cpp index 88c471a..1ef9da3 100644 --- a/Src/Network/SimNetBoard.cpp +++ b/Src/Network/SimNetBoard.cpp @@ -520,7 +520,7 @@ bool CSimNetBoard::IsRunning(void) return m_attached && m_running; } -void CSimNetBoard::GetGame(Game gameInfo) +void CSimNetBoard::GetGame(const Game& gameInfo) { m_gameInfo = gameInfo; } diff --git a/Src/Network/SimNetBoard.h b/Src/Network/SimNetBoard.h index 2e466e1..ff2513f 100644 --- a/Src/Network/SimNetBoard.h +++ b/Src/Network/SimNetBoard.h @@ -60,7 +60,7 @@ public: bool IsAttached(void); bool IsRunning(void); - void GetGame(Game gameInfo); + void GetGame(const Game& gameInfo); uint8_t ReadCommRAM8(unsigned addr); uint16_t ReadCommRAM16(unsigned addr); @@ -85,7 +85,7 @@ private: // netsock uint16_t port_in = 0; uint16_t port_out = 0; - std::string addr_out = ""; + std::string addr_out; std::thread m_connectThread; std::atomic_bool m_quit = false; std::atomic_bool m_connected = false; diff --git a/Src/Network/TCPSend.cpp b/Src/Network/TCPSend.cpp index d67486b..8254b7b 100644 --- a/Src/Network/TCPSend.cpp +++ b/Src/Network/TCPSend.cpp @@ -60,9 +60,7 @@ bool TCPSend::Send(const void * data, int length) DPRINTF("Sending %i bytes\n", length); - int sent = 0; - - sent = SDLNet_TCP_Send(m_socket, &length, sizeof(int)); // pack the length at the start of transmission. + int sent = SDLNet_TCP_Send(m_socket, &length, sizeof(int)); // pack the length at the start of transmission. if (!length) return true; // 0 sized packet will blow our connex diff --git a/Src/OSD/Logger.cpp b/Src/OSD/Logger.cpp index 26e8ace..ad7aa48 100644 --- a/Src/OSD/Logger.cpp +++ b/Src/OSD/Logger.cpp @@ -112,7 +112,7 @@ std::shared_ptr CreateLogger(const Util::Config::Node &config) loggers.push_back(std::make_shared()); // Parse other log outputs - std::string logOutputs = config["LogOutput"].ValueAsDefault(""); + std::string logOutputs = config["LogOutput"].ValueAsDefault(std::string()); std::vector outputs = Util::Format(logOutputs).Split(','); std::set supportedDestinations { "stdout", "stderr", "syslog" }; diff --git a/Src/OSD/SDL/Main.cpp b/Src/OSD/SDL/Main.cpp index 948e81b..def1ff0 100644 --- a/Src/OSD/SDL/Main.cpp +++ b/Src/OSD/SDL/Main.cpp @@ -326,13 +326,14 @@ static void PrintGLInfo(bool createScreen, bool infoLog, bool printExtensions) strcpy(strLocal, (char *) str); if (infoLog) InfoLog(" Supported Extensions : %s", (strLocal = strtok(strLocal, " \t\n"))); else printf(" Supported Extensions : %s\n", (strLocal = strtok(strLocal, " \t\n"))); - while ((strLocal = strtok(NULL, " \t\n")) != NULL) + char* strLocalTmp = strLocal; + while ((strLocalTmp = strtok(NULL, " \t\n")) != NULL) { - if (infoLog) InfoLog(" %s", strLocal); - else printf(" %s\n", strLocal); + if (infoLog) InfoLog(" %s", strLocalTmp); + else printf(" %s\n", strLocalTmp); } } - free(strLocal); + free(strLocal); } if (infoLog) InfoLog(""); else printf("\n"); @@ -1735,7 +1736,7 @@ static ParsedCommandLine ParseCommandLine(int argc, char **argv) else { unsigned x, y; - if (2 == sscanf(&argv[i][4],"=%d,%d", &x, &y)) + if (2 == sscanf(&argv[i][4],"=%u,%u", &x, &y)) { std::string xres = Util::Format() << x; std::string yres = Util::Format() << y; diff --git a/Src/OSD/Windows/DirectInputSystem.cpp b/Src/OSD/Windows/DirectInputSystem.cpp index 208cb79..473edec 100644 --- a/Src/OSD/Windows/DirectInputSystem.cpp +++ b/Src/OSD/Windows/DirectInputSystem.cpp @@ -781,7 +781,7 @@ void CDirectInputSystem::PollKeyboardsAndMice() if (m_useRawInput) { // For RawInput, only thing to do is update wheelDir from wheelData for each mouse state. Everything else is updated via WM events. - for (std::vector::iterator it = m_rawMseStates.begin(); it != m_rawMseStates.end(); it++) + for (std::vector::iterator it = m_rawMseStates.begin(); it != m_rawMseStates.end(); ++it) { if (it->wheelDelta != 0) { @@ -875,7 +875,7 @@ void CDirectInputSystem::CloseKeyboardsAndMice() } // Delete storage for keyboards - for (std::vector::iterator it = m_rawKeyStates.begin(); it != m_rawKeyStates.end(); it++) + for (std::vector::iterator it = m_rawKeyStates.begin(); it != m_rawKeyStates.end(); ++it) delete[] *it; m_keyDetails.clear(); m_rawKeyboards.clear(); @@ -915,7 +915,7 @@ void CDirectInputSystem::ResetMice() m_combRawMseState.x = p.x; m_combRawMseState.y = p.y; m_combRawMseState.z = 0; - for (std::vector::iterator it = m_rawMseStates.begin(); it != m_rawMseStates.end(); it++) + for (std::vector::iterator it = m_rawMseStates.begin(); it != m_rawMseStates.end(); ++it) { it->x = p.x; it->y = p.y; @@ -1057,7 +1057,7 @@ void CDirectInputSystem::ProcessRawInput(HRAWINPUT hInput) } m_combRawMseState.buttons = 0; - for (std::vector::iterator it = m_rawMseStates.begin(); it != m_rawMseStates.end(); it++) + for (std::vector::iterator it = m_rawMseStates.begin(); it != m_rawMseStates.end(); ++it) m_combRawMseState.buttons |= it->buttons; } } @@ -1080,7 +1080,7 @@ void CDirectInputSystem::OpenJoysticks() // Loop through those found int joyNum = 0; int xNum = 0; - for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); it++) + for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); ++it) { joyNum++; @@ -1145,7 +1145,7 @@ void CDirectInputSystem::OpenJoysticks() } // Gather joystick details (name, num POVs & buttons, which axes are available and whether force feedback is available) - DIPROPSTRING didps; + DIPROPSTRING didps{}; didps.diph.dwSize = sizeof(DIPROPSTRING); didps.diph.dwHeaderSize = sizeof(DIPROPHEADER); didps.diph.dwHow = DIPH_DEVICE; @@ -1293,7 +1293,7 @@ void CDirectInputSystem::ActivateJoysticks() { // Set DirectInput cooperative level of joysticks unsigned joyNum = 0; - for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); it++) + for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); ++it) { if (!it->isXInput) { @@ -1313,7 +1313,7 @@ void CDirectInputSystem::PollJoysticks() { // Get current joystick states from XInput and DirectInput int i = 0; - for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); it++) + for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); ++it) { LPDIJOYSTATE2 pJoyState = &m_diJoyStates[i++]; @@ -1394,7 +1394,7 @@ void CDirectInputSystem::PollJoysticks() void CDirectInputSystem::CloseJoysticks() { // Release any DirectInput force feedback effects that were created - for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); it++) + for (std::vector::iterator it = m_diJoyInfos.begin(); it != m_diJoyInfos.end(); ++it) { for (unsigned axisNum = 0; axisNum < NUM_JOY_AXES; axisNum++) { @@ -1410,7 +1410,7 @@ void CDirectInputSystem::CloseJoysticks() } // Release each DirectInput joystick - for (std::vector::iterator it = m_di8Joysticks.begin(); it != m_di8Joysticks.end(); it++) + for (std::vector::iterator it = m_di8Joysticks.begin(); it != m_di8Joysticks.end(); ++it) { (*it)->Unacquire(); (*it)->Release(); @@ -1444,7 +1444,7 @@ HRESULT CDirectInputSystem::CreateJoystickEffect(LPDIRECTINPUTDEVICE8 joystick, DICONSTANTFORCE dicf; DICONDITION dic; DIPERIODIC dip; - DIENVELOPE die; + //DIENVELOPE die; GUID guid; // Set common effects parameters @@ -1865,7 +1865,7 @@ bool CDirectInputSystem::ProcessForceFeedbackCmd(int joyNum, int axisNum, ForceF else { LPDIRECTINPUTDEVICE8 joystick = m_di8Joysticks[pInfo->dInputNum]; - + // See if command is to stop all force feedback, if so send appropriate command if (ffCmd.id == FFStop) return SUCCEEDED(hr = joystick->SendForceFeedbackCommand(DISFFC_STOPALL)); @@ -1878,13 +1878,13 @@ bool CDirectInputSystem::ProcessForceFeedbackCmd(int joyNum, int axisNum, ForceF if (FAILED(hr = CreateJoystickEffect(joystick, axisNum, ffCmd, pEffect))) return false; } - + LONG lDirection = 0; DICONSTANTFORCE dicf; DICONDITION dic; DIPERIODIC dip; - DIENVELOPE die; - + //DIENVELOPE die; + // Set common parameters DIEFFECT eff; memset(&eff, 0, sizeof(eff)); @@ -1894,7 +1894,7 @@ bool CDirectInputSystem::ProcessForceFeedbackCmd(int joyNum, int axisNum, ForceF eff.rglDirection = &lDirection; eff.dwStartDelay = 0; eff.lpEnvelope = NULL; - + // Set command specific parameters LONG lFFMag; DWORD dFFMag; diff --git a/Src/OSD/Windows/WinOutputs.cpp b/Src/OSD/Windows/WinOutputs.cpp index 63a619a..e7e2adf 100755 --- a/Src/OSD/Windows/WinOutputs.cpp +++ b/Src/OSD/Windows/WinOutputs.cpp @@ -111,7 +111,7 @@ void CWinOutputs::SendOutput(EOutputs output, UINT8 prevValue, UINT8 value) // Loop through all registered clients and send them new output value LPARAM param = (LPARAM)output + 1; - for (vector::iterator it = m_clients.begin(), end = m_clients.end(); it != end; it++) + for (vector::iterator it = m_clients.begin(), end = m_clients.end(); it != end; ++it) PostMessage(it->hwnd, m_updateState, param, value); } @@ -178,7 +178,7 @@ LRESULT CWinOutputs::OutputWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT CWinOutputs::RegisterClient(HWND hwnd, LPARAM id) { // Check that given client is not already registered - for (vector::iterator it = m_clients.begin(), end = m_clients.end(); it != end; it++) + for (vector::iterator it = m_clients.begin(), end = m_clients.end(); it != end; ++it) { if (it->id == id) { @@ -224,7 +224,7 @@ LRESULT CWinOutputs::UnregisterClient(HWND hwnd, LPARAM id) found = true; } else - it++; + ++it; } // Return error if no matches found diff --git a/Src/Sound/SCSP.cpp b/Src/Sound/SCSP.cpp index eb0ee29..54b5968 100644 --- a/Src/Sound/SCSP.cpp +++ b/Src/Sound/SCSP.cpp @@ -772,7 +772,7 @@ bool SCSP_Init(const Util::Config::Node &config, int n) buffertmpfr=(signed int*) malloc(44100*sizeof(signed int)); if (NULL == buffertmpfr) { - free(buffertmpfr); + free(buffertmpfl); return ErrorLog("Insufficient memory for internal SCSP buffers."); } @@ -781,8 +781,10 @@ bool SCSP_Init(const Util::Config::Node &config, int n) return ErrorLog("Insufficient memory for internal SCSP buffers."); buffertmprr=(signed int*)malloc(44100*sizeof(signed int)); if (NULL == buffertmprr) + { + free(buffertmprl); return ErrorLog("Insufficient memory for internal SCSP buffers."); - + } memset(buffertmpfl, 0, 44100*sizeof(signed int)); memset(buffertmpfr, 0, 44100*sizeof(signed int)); diff --git a/Src/Supermodel.h b/Src/Supermodel.h index 4355e52..8d6bb87 100644 --- a/Src/Supermodel.h +++ b/Src/Supermodel.h @@ -54,14 +54,14 @@ // stricmp() is non-standard, apparently... #ifdef _MSC_VER // MS VisualC++ #define stricmp _stricmp -#else // assume GCC +#elif defined(__GNUC__) #define stricmp strcasecmp #endif // 32-bit rotate left #ifdef _MSC_VER // MS VisualC++ - use VS intrinsic function _rotl #define rotl(val, shift) val = _rotl(val, shift) -#else // Otherwise assume GCC which should optimise following to asm +#elif defined(__GNUC__) // GCC should optimise following to asm #define rotl(val, shift) val = (val>>shift)|(val<<(32-shift)) #endif diff --git a/Src/Util/BitRegister.cpp b/Src/Util/BitRegister.cpp index f108035..4e758a4 100644 --- a/Src/Util/BitRegister.cpp +++ b/Src/Util/BitRegister.cpp @@ -276,7 +276,7 @@ namespace Util std::string BitRegister::ToBinaryString() const { if (Empty()) - return std::string(""); + return std::string(); std::string out(Size(), '0'); for (size_t i = 0; i < Size(); i++) { @@ -287,9 +287,9 @@ namespace Util std::string BitRegister::ToHexString() const { - const char digits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + static const char digits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; if (Empty()) - return std::string(""); + return std::string(); size_t partial = Size() & 3; size_t num_digits = Size() / 4 + (partial != 0 ? 1 : 0); std::string out(num_digits + 2, '0'); diff --git a/Src/Util/ByteSwap.cpp b/Src/Util/ByteSwap.cpp index e79db50..1804755 100644 --- a/Src/Util/ByteSwap.cpp +++ b/Src/Util/ByteSwap.cpp @@ -1,19 +1,41 @@ #include "Util/ByteSwap.h" +#ifdef _MSC_VER +#include +#endif namespace Util { - void FlipEndian16(uint8_t *buffer, size_t size) + void FlipEndian16(uint8_t * const buffer, const size_t size) { +#ifdef _MSC_VER + uint16_t * const buffer16 = (uint16_t*)buffer; + for (size_t i = 0; i < size/2; i++) + buffer16[i] = _byteswap_ushort(buffer16[i]); +#elif defined(__GNUC__) + uint16_t * const buffer16 = (uint16_t*)buffer; + for (size_t i = 0; i < size/2; i++) + buffer16[i] = __builtin_bswap16(buffer16[i]); +#else for (size_t i = 0; i < (size & ~1); i += 2) { uint8_t tmp = buffer[i + 0]; buffer[i + 0] = buffer[i + 1]; buffer[i + 1] = tmp; } +#endif } - - void FlipEndian32(uint8_t *buffer, size_t size) + + void FlipEndian32(uint8_t * const buffer, const size_t size) { +#ifdef _MSC_VER + uint32_t * const buffer32 = (uint32_t*)buffer; + for (size_t i = 0; i < size/4; i++) + buffer32[i] = _byteswap_ulong(buffer32[i]); +#elif defined(__GNUC__) + uint32_t * const buffer32 = (uint32_t*)buffer; + for (size_t i = 0; i < size/4; i++) + buffer32[i] = __builtin_bswap32(buffer32[i]); +#else for (size_t i = 0; i < (size & ~3); i += 4) { uint8_t tmp1 = buffer[i+0]; @@ -23,5 +45,6 @@ namespace Util buffer[i+2] = tmp2; buffer[i+3] = tmp1; } +#endif } } // Util diff --git a/Src/Util/NewConfig.cpp b/Src/Util/NewConfig.cpp index aff5aa4..015414a 100644 --- a/Src/Util/NewConfig.cpp +++ b/Src/Util/NewConfig.cpp @@ -156,7 +156,7 @@ namespace Util { if (m_missing) throw std::range_error(Util::Format() << "Node \"" << m_key << "\" does not exist"); - if (Empty() && !m_missing) + if (Empty()) throw std::logic_error(Util::Format() << "Node \"" << m_key << "\" has no value" ); }