diff --git a/platforms/config.sh b/platforms/config.sh index af2b1ec..d2995c7 100755 --- a/platforms/config.sh +++ b/platforms/config.sh @@ -3,7 +3,7 @@ set -e LIBZEDMD_SHA=cb969273720234df2f11f2fd7c81fe375f83cfe2 -LIBSERUM_SHA=188f45d375e47b0f21c8df3c4ff1a24cf8ec9c3b +LIBSERUM_SHA=2da4ca73fb4f30f99b998345ff42cf426180fd57 LIBPUPDMD_SHA=124f45e5ddd59ceb339591de88fcca72f8c54612 if [ -z "${BUILD_TYPE}" ]; then diff --git a/src/DMD.cpp b/src/DMD.cpp index ce5358d..eb8956a 100644 --- a/src/DMD.cpp +++ b/src/DMD.cpp @@ -1026,11 +1026,12 @@ void DMD::SerumThread() if (m_altColorPath[0] == '\0') strcpy(m_altColorPath, Config::GetInstance()->GetAltColorPath()); flags = 0; + // At the moment, ZeDMD HD and RGB24DMD are the only devices supporting 64P frames. Not requesting 64P // saves memory. if (m_pZeDMD) { - if (m_pZeDMD->GetWidth() == 256) + if (m_pZeDMD->GetHeight() == 64) flags |= FLAG_REQUEST_64P_FRAMES; else flags |= FLAG_REQUEST_32P_FRAMES; @@ -1040,7 +1041,18 @@ void DMD::SerumThread() { for (RGB24DMD* pRGB24DMD : m_rgb24DMDs) { - if (pRGB24DMD->GetWidth() == 256) + if (pRGB24DMD->GetHeight() == 64) + flags |= FLAG_REQUEST_64P_FRAMES; + else + flags |= FLAG_REQUEST_32P_FRAMES; + } + } + + if (m_levelDMDs.size() > 0) + { + for (LevelDMD* pLevelDMD : m_levelDMDs) + { + if (pLevelDMD->GetHeight() == 64) flags |= FLAG_REQUEST_64P_FRAMES; else flags |= FLAG_REQUEST_32P_FRAMES; @@ -1053,6 +1065,8 @@ void DMD::SerumThread() if (m_pPixelcadeDMD) flags |= FLAG_REQUEST_32P_FRAMES; #endif + if (!flags) flags |= FLAG_REQUEST_32P_FRAMES; + m_pSerum = (name[0] != '\0') ? Serum_Load(m_altColorPath, m_romName, flags) : nullptr; if (m_pSerum) {