diff --git a/board/recalbox/fsoverlay/etc/init.d/S12populateshare b/board/recalbox/fsoverlay/etc/init.d/S12populateshare index d9e7330e7eca37c4734575d6ad29646c03824ad4..00e828a384fe545970a44521fd6466f2e0b181fb 100755 --- a/board/recalbox/fsoverlay/etc/init.d/S12populateshare +++ b/board/recalbox/fsoverlay/etc/init.d/S12populateshare @@ -96,35 +96,6 @@ do test -e "$IN""/""$FILE" && test ! -e "$OUT""/""$FILE" && cp -r "$IN""/""$FILE" "$OUT""/""$FILE" done -# Since 7.2, rom folders are no longer copied to the SHARE partition -# Instead, just create the folder and copy text files -# -# ONLY NEW DIRECTORIES ARE UPDATED WHEN RECALBOX IS UPDATED -# -# the user can't delete any directory, otherwise, it will recreate it -recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5] - Copying roms .txt files" -for DIR in roms -do - [ ! -e "$OUT""/""$DIR" ] && mkdir "$OUT""/""$DIR" - recreatedFolders=$(find "$IN""/""$DIR" -mindepth 1 -maxdepth 1 -type d) - for SUBDIR in $recreatedFolders - do - # Create dir & copy *.txt - BNAME=$(echo ${SUBDIR##*/}) - TDIR="$OUT""/""$DIR""/""$BNAME" - if [ ! -e "$TDIR" ] ; then - mkdir -p "$TDIR" - find "$SUBDIR" -name "_*.txt" -exec cp {} "$TDIR" \; - fi - # Sync overlays with roms - if test $DIR = "roms" ; then - TDIR="$OUT""/overlays/""$BNAME" - if [ ! -e "$TDIR" ] ; then - mkdir -p "$TDIR" - fi - fi - done -done # Since 8.0, share is versioned # so that we can update some file automatically @@ -165,6 +136,47 @@ function addMpvNextVideo { } if [ "$RECALBOX_VERSION" != "$SHARE_VERSION" ] ; then + # Since 7.2, rom folders are no longer copied to the SHARE partition + # Instead, just create the folder and copy text files + # + # ONLY NEW DIRECTORIES ARE UPDATED WHEN RECALBOX IS UPDATED + # + # the user can't delete any directory, otherwise, it will recreate it + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5] - Copying roms .txt files" + for DIR in roms + do + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.0]" + + [ ! -e "$OUT""/""$DIR" ] && mkdir "$OUT""/""$DIR" + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.1]" + + recreatedFolders=$(find "$IN""/""$DIR" -mindepth 1 -maxdepth 1 -type d) + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.2]" + + for SUBDIR in $recreatedFolders + do + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.3] $SUBDIR" + # Create dir & copy *.txt + BNAME=$(echo ${SUBDIR##*/}) + TDIR="$OUT""/""$DIR""/""$BNAME" + if [ ! -e "$TDIR" ] ; then + mkdir -p "$TDIR" + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.4] $SUBDIR" + find "$SUBDIR" -name "_*.txt" -exec cp {} "$TDIR" \; + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.5] $SUBDIR" + fi + # Sync overlays with roms + if test $DIR = "roms" ; then + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.6]" + TDIR="$OUT""/overlays/""$BNAME" + if [ ! -e "$TDIR" ] ; then + mkdir -p "$TDIR" + fi + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[5.7]" + fi + done + done + recallog -s "${INIT_SCRIPT}" -t "POPULATE" "[7.0] - The system has been updated, copying share_init" # Starting the video source /recalbox/scripts/recalbox-utils.sh diff --git a/board/recalbox/fsoverlay/recalbox/system/resources/splash/introRecalboxElectron-1080-Normed-12dB.mp4 b/board/recalbox/fsoverlay/recalbox/system/resources/splash/introRecalboxElectron-1080-Normed-12dB.mp4 index 98eae27645fc54dad9a3d7111884646a4ea15199..4b416124bef45646eb2f7bb6e680a960c4596a48 100644 Binary files a/board/recalbox/fsoverlay/recalbox/system/resources/splash/introRecalboxElectron-1080-Normed-12dB.mp4 and b/board/recalbox/fsoverlay/recalbox/system/resources/splash/introRecalboxElectron-1080-Normed-12dB.mp4 differ diff --git a/package/retroarch/0001-remove-search-menu.patch b/package/retroarch/0001-remove-search-menu.patch index 6e037c50be25a13b6b207c678f1d718483dace1f..adf76090857fb7c9626893f4deb7fa46716802ce 100644 --- a/package/retroarch/0001-remove-search-menu.patch +++ b/package/retroarch/0001-remove-search-menu.patch @@ -1,7 +1,7 @@ From 8d8f4b94ff688fb48c9d0f2c81b051063d5ec7d8 Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:03:33 +0100 -Subject: [PATCH 01/20] remove search menu +Subject: [PATCH 01/24] remove search menu --- menu/menu_driver.c | 1 + diff --git a/package/retroarch/0002-fix-egl.patch b/package/retroarch/0002-fix-egl.patch index 18b87bdf3a55883dc49de3b730388a2a4be1e427..f6898ad87601549dafa0d5c0ee6b0d3dec6b866d 100644 --- a/package/retroarch/0002-fix-egl.patch +++ b/package/retroarch/0002-fix-egl.patch @@ -1,7 +1,7 @@ From 2de7810ca6864688363c677e5d88ad6067d3b39b Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:04:05 +0100 -Subject: [PATCH 02/20] fix egl +Subject: [PATCH 02/24] fix egl --- Makefile.common | 2 +- diff --git a/package/retroarch/0003-add-command-line-hash-option.patch b/package/retroarch/0003-add-command-line-hash-option.patch index ea71ed032d903e163f8ddc6d06d3028cf9275dc1..709cd01af9c698de1a84e33a23983d50f4f93713 100644 --- a/package/retroarch/0003-add-command-line-hash-option.patch +++ b/package/retroarch/0003-add-command-line-hash-option.patch @@ -1,7 +1,7 @@ From 32b2f2dfe2a0bc75781242468e09479cc478e68f Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:31:32 +0100 -Subject: [PATCH 03/20] add command line hash option +Subject: [PATCH 03/24] add command line hash option --- retroarch.c | 9 ++++++++- diff --git a/package/retroarch/0004-mark-frontend-with-recalbox.patch b/package/retroarch/0004-mark-frontend-with-recalbox.patch index cbecacf1100c795e2f292068f0560df10e683d64..37aa04ea9cc605bb18676c8cecfe657071706a97 100644 --- a/package/retroarch/0004-mark-frontend-with-recalbox.patch +++ b/package/retroarch/0004-mark-frontend-with-recalbox.patch @@ -1,7 +1,7 @@ From efab27554d03448ecb5ac9fcf7e7ddcd8831d63d Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:42:42 +0100 -Subject: [PATCH 04/20] mark frontend with @recalbox +Subject: [PATCH 04/24] mark frontend with @recalbox --- network/netplay/netplay_defines.h | 2 +- diff --git a/package/retroarch/0005-fix-egl-prototyping.patch b/package/retroarch/0005-fix-egl-prototyping.patch index d94475fbbe79cc930f1c36f92b6744ba73f846d2..762572cbc1ab8206d9b04a0198ecb527ec129a47 100644 --- a/package/retroarch/0005-fix-egl-prototyping.patch +++ b/package/retroarch/0005-fix-egl-prototyping.patch @@ -1,7 +1,7 @@ From a0c376cad4c098015194c6ddcb2a4e17caf6033f Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:43:37 +0100 -Subject: [PATCH 05/20] fix egl prototyping +Subject: [PATCH 05/24] fix egl prototyping --- gfx/drivers_context/vc_egl_ctx.c | 3 +++ diff --git a/package/retroarch/0006-use-passwords-in-configuration-file.patch b/package/retroarch/0006-use-passwords-in-configuration-file.patch index 7a395775fd413a1cd297943e0b713b9e134ca91e..1f71daf490fcc97e8f248bb88f3cc46ceb89e07b 100644 --- a/package/retroarch/0006-use-passwords-in-configuration-file.patch +++ b/package/retroarch/0006-use-passwords-in-configuration-file.patch @@ -1,7 +1,7 @@ From 6e902fea2a240d694aaf73ea2b66633e29da1819 Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 16:14:53 +0100 -Subject: [PATCH 06/20] use passwords in configuration file +Subject: [PATCH 06/24] use passwords in configuration file --- network/netplay/netplay_frontend.c | 18 ++++++++++++++---- diff --git a/package/retroarch/0007-fix-min-max-udev-mouse-lightgun.patch b/package/retroarch/0007-fix-min-max-udev-mouse-lightgun.patch index de8e73d6a2b77e049669191c00822cb864bef7dd..20938b2f9b518edd918c970693373a0160296ab5 100644 --- a/package/retroarch/0007-fix-min-max-udev-mouse-lightgun.patch +++ b/package/retroarch/0007-fix-min-max-udev-mouse-lightgun.patch @@ -1,7 +1,7 @@ From 80a7d9c667a396bba87db294d34961c316df5fcd Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:48:08 +0100 -Subject: [PATCH 07/20] fix min max udev mouse lightgun +Subject: [PATCH 07/24] fix min max udev mouse lightgun --- input/drivers/udev_input.c | 30 ++++++++++++++++++++++++++++++ diff --git a/package/retroarch/0008-oga-include-fix.patch b/package/retroarch/0008-oga-include-fix.patch index 87835ea0a0708686b0c0f4a55ab7b8bb5fba3838..34a21d8ae407876b0076a2448d31c9a0f95e2aed 100644 --- a/package/retroarch/0008-oga-include-fix.patch +++ b/package/retroarch/0008-oga-include-fix.patch @@ -1,7 +1,7 @@ From ea39b0a48342129abf1107f32a563cc82eb1c913 Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 09:49:27 +0100 -Subject: [PATCH 08/20] oga include fix +Subject: [PATCH 08/24] oga include fix --- gfx/drivers/oga_gfx.c | 2 +- diff --git a/package/retroarch/0009-enable-switchres-kms.patch b/package/retroarch/0009-enable-switchres-kms.patch index 4cb20580dfeb2967f7add490d093a46b6f4da3fe..1dc031ac6a99f9cc37a8b53081eff34d7ab7189a 100644 --- a/package/retroarch/0009-enable-switchres-kms.patch +++ b/package/retroarch/0009-enable-switchres-kms.patch @@ -1,7 +1,7 @@ From 24607e74b7efb634e1ca9791f6cd8385440d2af5 Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 10:02:49 +0100 -Subject: [PATCH 09/20] enable switchres kms +Subject: [PATCH 09/24] enable switchres kms --- Makefile.common | 4 ++++ diff --git a/package/retroarch/0010-use-core-refresh-rate-for-kms-mode-selection.patch b/package/retroarch/0010-use-core-refresh-rate-for-kms-mode-selection.patch index cea0698e560dd6289e35623658367bfca1d21c05..01c3bdbb59dbcebffac2df873bfbf5cb50fbb431 100644 --- a/package/retroarch/0010-use-core-refresh-rate-for-kms-mode-selection.patch +++ b/package/retroarch/0010-use-core-refresh-rate-for-kms-mode-selection.patch @@ -1,7 +1,7 @@ From 9a85cf0381aa21232e0a08495dfd4dab376accd9 Mon Sep 17 00:00:00 2001 From: Bkg2k Date: Wed, 23 Feb 2022 10:09:09 +0100 -Subject: [PATCH 10/20] use core refresh rate for kms mode selection +Subject: [PATCH 10/24] use core refresh rate for kms mode selection --- gfx/drivers_context/drm_ctx.c | 1 + diff --git a/package/retroarch/0011-activate-overlay-auto-rotation-when-video-rotate.patch b/package/retroarch/0011-activate-overlay-auto-rotation-when-video-rotate.patch index d0f90228fbba9154620978298b586216e811be6c..fd4200e1743378e04bbbb3ee663c61a973c19471 100644 --- a/package/retroarch/0011-activate-overlay-auto-rotation-when-video-rotate.patch +++ b/package/retroarch/0011-activate-overlay-auto-rotation-when-video-rotate.patch @@ -1,7 +1,7 @@ From 32b4e86aabfb7bdf5914a70c3b685b034db33146 Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Mon, 8 May 2023 21:22:41 +0200 -Subject: [PATCH 11/20] activate overlay auto rotation when video rotate +Subject: [PATCH 11/24] activate overlay auto rotation when video rotate --- input/input_driver.c | 18 ++++++++++++------ diff --git a/package/retroarch/0012-update-selected-slot.patch b/package/retroarch/0012-update-selected-slot.patch index 7b5660c4aa767f11878c9d9b24eff9507dd5c08d..237b57522fe6939411c2d55648425e61e35fe9d1 100644 --- a/package/retroarch/0012-update-selected-slot.patch +++ b/package/retroarch/0012-update-selected-slot.patch @@ -1,7 +1,7 @@ From 80c6056312ab3327c8adf34c68d23f4f70e1e820 Mon Sep 17 00:00:00 2001 From: gugueU Date: Wed, 7 Jun 2023 17:07:29 +0200 -Subject: [PATCH 12/20] update selected slot +Subject: [PATCH 12/24] update selected slot --- command.c | 7 +++++-- diff --git a/package/retroarch/0013-add-option-to-avoid-interlaced-modes-on-retroarch-sw.patch b/package/retroarch/0013-add-option-to-avoid-interlaced-modes-on-retroarch-sw.patch index 0956de7bdc1f557c4cebe142d9b4efec225de7a5..68ec3b017bc8c49e5384cc37933daf6fdb57084e 100644 --- a/package/retroarch/0013-add-option-to-avoid-interlaced-modes-on-retroarch-sw.patch +++ b/package/retroarch/0013-add-option-to-avoid-interlaced-modes-on-retroarch-sw.patch @@ -1,7 +1,7 @@ From c71aace38a543accf5eb9387db737ff54316bac3 Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Fri, 21 Jun 2024 15:12:30 +0200 -Subject: [PATCH 13/20] add option to avoid interlaced modes on retroarch +Subject: [PATCH 13/24] add option to avoid interlaced modes on retroarch switchres --- diff --git a/package/retroarch/0014-crt-add-support-for-several-resolution-for-switchres.patch b/package/retroarch/0014-crt-add-support-for-several-resolution-for-switchres.patch index 701d81942bec3c21036727c93e87d2829a8c390c..6a718ad21494598da849802df4bb9084216a2aa0 100644 --- a/package/retroarch/0014-crt-add-support-for-several-resolution-for-switchres.patch +++ b/package/retroarch/0014-crt-add-support-for-several-resolution-for-switchres.patch @@ -1,7 +1,7 @@ From 055acfb9d3bf27beb7955051e523e523c9d78ec6 Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Sat, 22 Jun 2024 22:21:44 +0200 -Subject: [PATCH 14/20] crt: add support for several resolution for switchres +Subject: [PATCH 14/24] crt: add support for several resolution for switchres --- gfx/video_crt_switch.c | 18 +++++++++++++++--- diff --git a/package/retroarch/0015-crt-change-range-for-arcade-vertical-sync.patch b/package/retroarch/0015-crt-change-range-for-arcade-vertical-sync.patch index a122b2e78b597df4a20340a1a1c0f34b16c4e6ad..26b03c2a2bd2c6ffc2fa4fc80c76964a1d139290 100644 --- a/package/retroarch/0015-crt-change-range-for-arcade-vertical-sync.patch +++ b/package/retroarch/0015-crt-change-range-for-arcade-vertical-sync.patch @@ -1,7 +1,7 @@ From c27b7a0868fa286464b21b5e6efa729fb3f58c99 Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Thu, 27 Jun 2024 13:23:11 +0200 -Subject: [PATCH 15/20] crt: change range for arcade vertical sync +Subject: [PATCH 15/24] crt: change range for arcade vertical sync --- deps/switchres/monitor.cpp | 14 ++++++++++---- diff --git a/package/retroarch/0016-crt-add-pal-ntsc-and-240p-forced-modes.patch b/package/retroarch/0016-crt-add-pal-ntsc-and-240p-forced-modes.patch index bea2406a41cdf36178d8461eba9ed46987c5d502..0a899f665a15cce12a947aefade448686296eac6 100644 --- a/package/retroarch/0016-crt-add-pal-ntsc-and-240p-forced-modes.patch +++ b/package/retroarch/0016-crt-add-pal-ntsc-and-240p-forced-modes.patch @@ -1,7 +1,7 @@ From bd6cff7c2f1fedd543d558c691240ce9e65fb4cf Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Thu, 5 Dec 2024 19:31:20 +0100 -Subject: [PATCH 16/20] crt: add pal, ntsc, and 240p forced modes +Subject: [PATCH 16/24] crt: add pal, ntsc, and 240p forced modes --- deps/switchres/monitor.cpp | 10 +++++++--- diff --git a/package/retroarch/0017-controls-add-common-remap.patch b/package/retroarch/0017-controls-add-common-remap.patch index bf3aa86106eadb9ee317f86c4e8fd597ec4d796a..6a63aab4c0e8301a6fc21abfb97b514c58c9383f 100644 --- a/package/retroarch/0017-controls-add-common-remap.patch +++ b/package/retroarch/0017-controls-add-common-remap.patch @@ -1,7 +1,7 @@ From 54c32b05cd05b0f77781d8ac410558d8edb8275c Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Tue, 8 Jul 2025 11:57:20 +0200 -Subject: [PATCH 17/20] controls: add common remap +Subject: [PATCH 17/24] controls: add common remap --- configuration.c | 22 ++++++++++++++++++++++ diff --git a/package/retroarch/0018-crt-add-retroarch-geometry-settings-from-alphanu1.patch b/package/retroarch/0018-crt-add-retroarch-geometry-settings-from-alphanu1.patch index 8621205941c087f7242bb76551bb35476d0c32c9..abf55a4660579edcfc384ffee0efab2d3c2d8faa 100644 --- a/package/retroarch/0018-crt-add-retroarch-geometry-settings-from-alphanu1.patch +++ b/package/retroarch/0018-crt-add-retroarch-geometry-settings-from-alphanu1.patch @@ -1,7 +1,7 @@ From 896b581eb5f1eaf36552657877f8aaaab3f5dfd8 Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Tue, 8 Jul 2025 12:11:07 +0200 -Subject: [PATCH 18/20] crt: add retroarch geometry settings from alphanu1 +Subject: [PATCH 18/24] crt: add retroarch geometry settings from alphanu1 --- config.def.h | 2 ++ diff --git a/package/retroarch/0019-crt-adjust-system-rates-before-reset-context-fix-dol.patch b/package/retroarch/0019-crt-adjust-system-rates-before-reset-context-fix-dol.patch index 06f49dc065030acbf2f489aec61a34d7ac7ad843..89f4a2ccef107506ce376c07d009474826ebfd0c 100644 --- a/package/retroarch/0019-crt-adjust-system-rates-before-reset-context-fix-dol.patch +++ b/package/retroarch/0019-crt-adjust-system-rates-before-reset-context-fix-dol.patch @@ -1,7 +1,7 @@ From edf7461fd33e4ed08fb89adb2cb225e4cb2ebedf Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Tue, 8 Jul 2025 12:17:26 +0200 -Subject: [PATCH 19/20] crt: adjust system rates before reset context fix +Subject: [PATCH 19/24] crt: adjust system rates before reset context fix dolphin on crt --- diff --git a/package/retroarch/0020-add-calibration-specific-menu-for-crt.patch b/package/retroarch/0020-add-calibration-specific-menu-for-crt.patch index f682cbedc3f56980f06b437359c1bdbfff876d35..0ccb3c5fa4401fc367d495b671d465fe943f79ee 100644 --- a/package/retroarch/0020-add-calibration-specific-menu-for-crt.patch +++ b/package/retroarch/0020-add-calibration-specific-menu-for-crt.patch @@ -1,7 +1,7 @@ From bd1fe4fbfcbf251e58e00d2c6d77f13273ad7f9e Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Fri, 12 Sep 2025 11:57:35 +0200 -Subject: [PATCH 20/20] add calibration-specific-menu-for-crt +Subject: [PATCH 20/24] add calibration-specific-menu-for-crt --- config.def.h | 1 + diff --git a/package/retroarch/0021-add-tv-modes-with-50hz-support-for-15-31-15-25-and-t.patch b/package/retroarch/0021-add-tv-modes-with-50hz-support-for-15-31-15-25-and-t.patch index 3332c6e73525f29d80a93426e51723a673fd920c..6673c1c7b1bc1a1ef995a919278e1eb626fc156e 100644 --- a/package/retroarch/0021-add-tv-modes-with-50hz-support-for-15-31-15-25-and-t.patch +++ b/package/retroarch/0021-add-tv-modes-with-50hz-support-for-15-31-15-25-and-t.patch @@ -1,7 +1,7 @@ From 637d2611bdb7b92569610d4aad4eb8de3632320f Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Fri, 12 Sep 2025 12:24:19 +0200 -Subject: [PATCH 21/21] add tv modes with 50hz support for 15/31 15/25 and +Subject: [PATCH 21/24] add tv modes with 50hz support for 15/31 15/25 and trifreq --- diff --git a/package/retroarch/0022-forced-384p-mode.patch b/package/retroarch/0022-forced-384p-mode.patch index 7fc142d458a6373882081a2130e62b7798833eee..bdfba6dbbb0b0997c1e2fc2e5fbee225f2a03f2a 100644 --- a/package/retroarch/0022-forced-384p-mode.patch +++ b/package/retroarch/0022-forced-384p-mode.patch @@ -1,7 +1,7 @@ From f9013ef11465cc37f5bb950111f913f01ec56c5e Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Fri, 12 Sep 2025 13:28:59 +0200 -Subject: [PATCH 22/22] forced 384p mode +Subject: [PATCH 22/24] forced 384p mode --- deps/switchres/monitor.cpp | 6 ++++++ diff --git a/package/retroarch/0023-crt-add-240p-forced-and-force-15khz-progressive.patch b/package/retroarch/0023-crt-add-240p-forced-and-force-15khz-progressive.patch index b6db18649705668f56fbd94037ec25d970a97b84..7c053e612f31e0469bbe3e9ece944562c0deab02 100644 --- a/package/retroarch/0023-crt-add-240p-forced-and-force-15khz-progressive.patch +++ b/package/retroarch/0023-crt-add-240p-forced-and-force-15khz-progressive.patch @@ -1,7 +1,7 @@ -From cd0011271c7f582afc83fea1413e9ade3642289f Mon Sep 17 00:00:00 2001 +From ca5d31836af432b682eafff17bd9da3fee429e62 Mon Sep 17 00:00:00 2001 From: digitalLumberjack Date: Tue, 23 Sep 2025 08:34:26 +0200 -Subject: [PATCH 23/23] crt: add 240p forced and force 15khz progressive +Subject: [PATCH 23/24] crt: add 240p forced and force 15khz progressive --- deps/switchres/monitor.cpp | 7 ++++++- @@ -9,7 +9,7 @@ Subject: [PATCH 23/23] crt: add 240p forced and force 15khz progressive 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/deps/switchres/monitor.cpp b/deps/switchres/monitor.cpp -index ff223fb4d0..e57aa1ab26 100644 +index ff223fb4d0..0305f9d279 100644 --- a/deps/switchres/monitor.cpp +++ b/deps/switchres/monitor.cpp @@ -155,7 +155,12 @@ int monitor_set_preset(const char *type, monitor_range *range) @@ -22,7 +22,7 @@ index ff223fb4d0..e57aa1ab26 100644 + } + else if (!strcmp(type, "forced_15_progressive")) + { -+ monitor_fill_range(&range[0], "15625-15750, 59.9-60.10, 2.000, 4.700, 8.000, 0.064, 0.192, 1.024, 0, 0, 192, 288, 0, 0"); ++ monitor_fill_range(&range[0], "15625-15750, 49.50-65.00, 2.000, 4.700, 8.000, 0.064, 0.192, 1.024, 0, 0, 192, 288, 0, 0"); return 1; } // Arcade 15.7-16.5 kHz - extended resolution diff --git a/package/retroarch/0024-do-not-take-lower-fps-modes-in-mode-selection-on-kms.patch b/package/retroarch/0024-do-not-take-lower-fps-modes-in-mode-selection-on-kms.patch new file mode 100644 index 0000000000000000000000000000000000000000..ef271bf2a18c3b302acfd3078c92ac5097fd27a9 --- /dev/null +++ b/package/retroarch/0024-do-not-take-lower-fps-modes-in-mode-selection-on-kms.patch @@ -0,0 +1,27 @@ +From d3a51baf56eed23f214fb1a876fac880d2bc2d56 Mon Sep 17 00:00:00 2001 +From: digitalLumberjack +Date: Sun, 16 Nov 2025 11:28:39 +0100 +Subject: [PATCH 24/24] do not take lower fps modes in mode selection on kms if + fps diff > 2fps + +- that fixes MK +--- + gfx/drivers_context/drm_ctx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gfx/drivers_context/drm_ctx.c b/gfx/drivers_context/drm_ctx.c +index 717dad8687..2cddae249b 100644 +--- a/gfx/drivers_context/drm_ctx.c ++++ b/gfx/drivers_context/drm_ctx.c +@@ -882,7 +882,7 @@ static bool gfx_ctx_drm_set_video_mode(void *data, + mode_vrefresh = drm_calc_refresh_rate(mode); + diff = fabsf(refresh_mod * mode_vrefresh - video_refresh_rate); + +- if (!g_drm_mode || diff < minimum_fps_diff) ++ if (!g_drm_mode || diff < minimum_fps_diff && (diff < 2 || refresh_mod * mode_vrefresh - video_refresh_rate > 0)) + { + g_drm_mode = mode; + minimum_fps_diff = diff; +-- +2.48.1 + diff --git a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py index c02aa20117c59a07c7526058541465d9b2adc1f1..ff85377a5a22fa8ffe8d5afd58679202fb40192f 100644 --- a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py +++ b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py @@ -130,6 +130,8 @@ class LibretroConfigCRTSwitchres: if system.CrtHandheldFormat == CRTHandheldFormat.Fullscreen: print("[CRTSwitchres]: handheld fullscreen") config["video_smooth"] = '"true"' + if system.Name == "gamegear": + system.Core = "gearsystem" else: print("[CRTSwitchres]: handheld original") config["video_scale_integer_axis"] = '"1"' diff --git a/projects/configgen/tests/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres_test.py b/projects/configgen/tests/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres_test.py index 95b32f54822ae5781e859909e0eb08f7e44727f0..b6cbe84fd48b9786eb12c2ba0e25ca6e787075aa 100644 --- a/projects/configgen/tests/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres_test.py +++ b/projects/configgen/tests/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres_test.py @@ -747,3 +747,15 @@ def test_given_non_15kHz_modes_and_gb_then_use_handheld_format(): assert config_lines["video_smooth"] == '"true"' assert config_lines["video_scale_integer_axis"] == '' assert config_lines["video_scale_integer"] == '' + +def test_given_15kHz_and_gamegear_then_use_forced_240p_and_force_fullscreen_handheld_format_and_force_core_gearsystem(): + emulator = configureForCrt( + Emulator(name='gamegear', videoMode='1920x1080', ratio='auto', emulator='libretro', core='genesisplusgx'), + crtresolutiontype="auto", crtscreentype="kHz15", crtadaptor="recalboxrgbdual2", crtsuperrez="0", crthandheldformat="fullscreen") + config_lines, core_config, pre, post = LibretroConfigCRTSwitchres().createConfigFor(emulator, "sml.zip") + + assert emulator.Core == "gearsystem" + assert config_lines["crt_switch_resolution"] == RetroarchScreenTypeIndex.kHz15Forced240p.value + assert config_lines["video_smooth"] == '"true"' + assert config_lines["video_scale_integer_axis"] == '' + assert config_lines["video_scale_integer"] == '' \ No newline at end of file diff --git a/projects/frontend/data/resources/menu.xml b/projects/frontend/data/resources/menu.xml index 1ec267e4c73aeb701af891aac2f6c3eda48eee76..045334351d770a003452e4a43119d42a01eb6c14 100644 --- a/projects/frontend/data/resources/menu.xml +++ b/projects/frontend/data/resources/menu.xml @@ -144,6 +144,7 @@ --> + diff --git a/projects/frontend/es-app/src/MainRunner.cpp b/projects/frontend/es-app/src/MainRunner.cpp index 02fe7b0d1454130684c23ee5db0e9e135d91b0af..b01784346f26f55794f7787380453da2059e396b 100644 --- a/projects/frontend/es-app/src/MainRunner.cpp +++ b/projects/frontend/es-app/src/MainRunner.cpp @@ -418,13 +418,16 @@ MainRunner::ExitState MainRunner::MainLoop(ApplicationWindow& window, SystemMana LOG(LogInfo) << "[MainRunner] Starting game " << mGameToRun; FileData *game = systemManager.LookupGameByFilePath(mGameToRun); mGameToRun = ""; - GameLinkedData data = GameLinkedData(); - // Start game in 240p@120Hz if the option has been set - if (Board::Instance().CrtBoard().Has120HzSupport() - && Board::Instance().CrtBoard().GetHorizontalFrequency() >= ICrtInterface::HorizontalFrequency::KHz31 - && CrtConf::Instance().GetSystemCRTRunDemoAndAutoIn240pOn31kHz()) + if (game) + { + GameLinkedData data = GameLinkedData(); + // Start game in 240p@120Hz if the option has been set + if (Board::Instance().CrtBoard().Has120HzSupport() + && Board::Instance().CrtBoard().GetHorizontalFrequency() >= ICrtInterface::HorizontalFrequency::KHz31 + && CrtConf::Instance().GetSystemCRTRunDemoAndAutoIn240pOn31kHz()) data.ConfigurableCrt().ConfigureForceResolution(CrtData::CrtMode::DoubleFreq); - gameRunner.RunGame(*game, EmulatorManager::GetGameEmulator(*game), data); + gameRunner.RunGame(*game, EmulatorManager::GetGameEmulator(*game), data); + } } int curTime = (int)SDL_GetTicks(); diff --git a/projects/frontend/es-app/src/guis/menus/MenuBuilder.cpp b/projects/frontend/es-app/src/guis/menus/MenuBuilder.cpp index bba8254d06cd76480b91fc3e54fd4757b9505e2d..83990ae70949200141d3d3114cdcbb0554d6d401 100644 --- a/projects/frontend/es-app/src/guis/menus/MenuBuilder.cpp +++ b/projects/frontend/es-app/src/guis/menus/MenuBuilder.cpp @@ -522,6 +522,7 @@ void MenuBuilder::AddItem(const InheritableContext& context, const ItemDefinitio { // Version & platform case MenuItemType::RecalboxVersion: { AddText(context, item, MenuProvider::GetVersionString()); break; } + case MenuItemType::RecalboxArch: { AddText(context, item, MenuProvider::GetArchString()); break; } case MenuItemType::UsedShare: { const StorageDevices::Device share = StorageDevices::Instance().GetShareDevices().front(); @@ -608,7 +609,7 @@ void MenuBuilder::AddItem(const InheritableContext& context, const ItemDefinitio case MenuItemType::NetplayRelay: { AddList(context, item, MenuDataProvider::GetMitmEntries(), mConf.GetNetplayRelay(), RecalboxConf::Relay::None, defaultGrayed); break; } case MenuItemType::HashRoms: { AddAction(context, item, true, defaultGrayed); break; } case MenuItemType::UpdateCheck: { AddSwitch(context, item, mConf.GetUpdatesEnabled(), defaultGrayed); break; } - case MenuItemType::UpdateAvailable: { AddText(context, item, Upgrade::Instance().PendingUpdate() ? _("YES").Append(" (").Append(Upgrade::Instance().NewVersion()).Append(')') : _("NO")); break; } + case MenuItemType::UpdateAvailable: { AddText(context, item, Upgrade::Instance().PendingUpdate() ? Upgrade::Instance().NewVersion() : _("NO")); break; } case MenuItemType::UpdateChangelog: case MenuItemType::UpdateStart: { AddAction(context, item, true, !Upgrade::Instance().PendingUpdate()); break; } case MenuItemType::UpdateType: { if (isBeta || PatronInfo::Instance().IsPatron()) AddList(context, item, MenuDataProvider::GetUpdateTypeEntries(), mConf.GetUpdateType(), RecalboxConf::UpdateType::Stable, defaultGrayed); break; } diff --git a/projects/frontend/es-app/src/guis/menus/MenuDataProvider.cpp b/projects/frontend/es-app/src/guis/menus/MenuDataProvider.cpp index 471f1d0badcb511675d5e8257dfc59d0e460692f..5580e8bc4e870eef74391e05c60e88a13651211a 100644 --- a/projects/frontend/es-app/src/guis/menus/MenuDataProvider.cpp +++ b/projects/frontend/es-app/src/guis/menus/MenuDataProvider.cpp @@ -653,40 +653,67 @@ SelectorEntry::List MenuDataProvider::GetHor { SelectorEntry::List frequencies; - if (Board::Instance().CrtBoard().GetHorizontalFrequency() == ICrtInterface::HorizontalFrequency::Auto) + if (Board::Instance().CrtBoard().MustForce31kHz()) { - if (Board::Instance().CrtBoard().MustForce31kHz()) + if (Board::Instance().CrtBoard().GetHorizontalFrequency() == ICrtInterface::HorizontalFrequency::KHz15) + { + frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz15), ICrtInterface::HorizontalFrequency::Auto ); + frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz31), ICrtInterface::HorizontalFrequency::KHz31 ); + } + else if (Board::Instance().CrtBoard().GetHorizontalFrequency() == ICrtInterface::HorizontalFrequency::KHz31) { frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz31), ICrtInterface::HorizontalFrequency::Auto ); frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz15), ICrtInterface::HorizontalFrequency::KHz15 ); } else { - frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz15), ICrtInterface::HorizontalFrequency::Auto ); + frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz15), ICrtInterface::HorizontalFrequency::KHz15 ); frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz31), ICrtInterface::HorizontalFrequency::KHz31 ); } } else { - frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz15), ICrtInterface::HorizontalFrequency::KHz15 ); + frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz15), ICrtInterface::HorizontalFrequency::Auto ); frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHz31), ICrtInterface::HorizontalFrequency::KHz31 ); } frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHzMulti1525), ICrtInterface::HorizontalFrequency::KHzMulti1525 ); frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHzMulti1531), ICrtInterface::HorizontalFrequency::KHzMulti1531 ); frequencies.emplace_back( ICrtInterface::HorizontalFrequencyToHumanReadable(ICrtInterface::HorizontalFrequency::KHzTriFreq), ICrtInterface::HorizontalFrequency::KHzTriFreq ); + return frequencies; } const SelectorEntry::List& MenuDataProvider::GetSuperRezEntries() { - static SelectorEntry::List list + if (Board::Instance().IsPi5Familly()) + { + static SelectorEntry::List listpi5 { - { "X6 (DEFAULT)", "1920" }, - { "X8", "2560" }, - { "DYNAMIC", "1" }, - { "NATIVE", "0" }, + {"DYNAMIC (DEFAULT)", "1"}, + {"NATIVE", "0"}, + {"X6", "1920"}, + {"X8", "2560"}, }; + return listpi5; + } + if (Board::Instance().IsPi4Familly()) + { + static SelectorEntry::List listpi4 + { + {"X8 (DEFAULT)", "2560"}, + {"X6", "1920"}, + {"DYNAMIC", "1"}, + {"NATIVE", "0"}, + }; + return listpi4; + } + static SelectorEntry::List list + { + {"X6 (DEFAULT)", "1920"}, + {"DYNAMIC", "1"}, + {"NATIVE", "0"}, + }; return list; } diff --git a/projects/frontend/es-app/src/guis/menus/MenuItemType.cpp b/projects/frontend/es-app/src/guis/menus/MenuItemType.cpp index c1c37a36ad70b232816c789e92b8796fd1363b97..2b24a383b82cec36885b02cfa45671162db12928 100644 --- a/projects/frontend/es-app/src/guis/menus/MenuItemType.cpp +++ b/projects/frontend/es-app/src/guis/menus/MenuItemType.cpp @@ -62,6 +62,7 @@ MenuContainerType MenuConverters::MenuFromString(const String& type) static const HashMap sStringToItemType { { "RecalboxVersion", MenuItemType::RecalboxVersion }, + { "RecalboxArch", MenuItemType::RecalboxArch }, { "UsedShare", MenuItemType::UsedShare }, { "DeviceList", MenuItemType::DeviceList }, { "ShareDevice", MenuItemType::ShareDevice }, diff --git a/projects/frontend/es-app/src/guis/menus/MenuItemType.h b/projects/frontend/es-app/src/guis/menus/MenuItemType.h index b1f1ef467fed62723710512ba8ffef146162c19e..fa14d4666e8c49d318b23a9bd3e5691d941989ff 100644 --- a/projects/frontend/es-app/src/guis/menus/MenuItemType.h +++ b/projects/frontend/es-app/src/guis/menus/MenuItemType.h @@ -62,6 +62,7 @@ enum class MenuItemType _Settings_, // Regular type RecalboxVersion, + RecalboxArch, UsedShare, ShareDevice, DeviceList, diff --git a/projects/frontend/es-app/src/guis/menus/MenuProvider.h b/projects/frontend/es-app/src/guis/menus/MenuProvider.h index ac69c2fd0a3834b403b738ca62663a7bead4a4d2..9f92944b1168eaa1752365595611db169939682c 100644 --- a/projects/frontend/es-app/src/guis/menus/MenuProvider.h +++ b/projects/frontend/es-app/src/guis/menus/MenuProvider.h @@ -130,7 +130,10 @@ class MenuProvider : public StaticLifeCycleControler */ //! Get version string - static String GetVersionString() { return Upgrade::Instance().CurrentVersion().Append(" (").Append(Board::Instance().GetBoardName()).Append(' ').Append(Board::Instance().GetDataBusSize()).Append("bits").Append(')'); } + static String GetVersionString() { return Upgrade::CurrentVersion(); } + //! Get version string + static String GetArchString() { return Board::GetBoardName().Append(' ').Append(Board::GetDataBusSize()).Append("bits"); } + //! Format system name with emulator/core String SystemNameWithEmulator(const SystemData* system); diff --git a/projects/frontend/es-core/src/CrtConf.h b/projects/frontend/es-core/src/CrtConf.h index 57aa03be48f87f90e6a83fc6090c7e7fc064c259..4826ccac10d2648d7a7890ce1b0565157d62c950 100644 --- a/projects/frontend/es-core/src/CrtConf.h +++ b/projects/frontend/es-core/src/CrtConf.h @@ -49,7 +49,7 @@ class CrtConf: public IniFile, public StaticLifeCycleControler DefineGetterSetterEnumGeneric(CrtConf, SystemCRTScanlines31kHz, CrtScanlines, sSystemCRTScanlines31kHz, CrtScanlines) DefineGetterSetterGeneric(CrtConf, SystemCRTExtended15KhzRange, bool, Bool, sSystemCRTExtended15KhzRange, false) DefineGetterSetterGeneric(CrtConf, SystemCRTWideScreen, bool, Bool, sSystemCRTWidescreen, false) - DefineGetterSetterGeneric(CrtConf, SystemCRTSuperrez, String, String, sSystemCRTSuperrez, Board::Instance().GetBoardType() == BoardType::Pi5 ? "1" : "2560") + DefineGetterSetterGeneric(CrtConf, SystemCRTSuperrez, String, String, sSystemCRTSuperrez, Board::Instance().IsPi5Familly() ? "1" : (Board::Instance().IsPi4Familly() ? "2560" : "1920")) DefineGetterSetterGeneric(CrtConf, SystemCRTUseV2, bool, Bool, sSystemCRTUseV2, false) DefineGetterSetterGeneric(CrtConf, SystemCRTForceJack, bool, Bool, sSystemCRTForceJack, false) DefineGetterSetterGeneric(CrtConf, SystemCRTForceHDMI, bool, Bool, sSystemCRTForceHDMI, true) @@ -73,6 +73,7 @@ class CrtConf: public IniFile, public StaticLifeCycleControler DefineGetterSetterGeneric(CrtConf, SystemCRTCompositeStandard, String, String, sSystemCRTCompositeStandard, "0") DefineGetterSetterGeneric(CrtConf, SystemCRTAvoidInterlaced, bool, Bool, sSystemCRTAvoidInterlaced, false) DefineGetterSetterGeneric(CrtConf, SystemCRTAvoidInterlacedOnTateOnYokoAndHandhelds, bool, Bool, sSystemCRTAvoidInterlacedOnTateOnYokoAndHandhelds, false) + DefineGetterSetterGeneric(CrtConf, SystemCRTAvoidFrontendSuperRez, bool, Bool, sSystemCRTAvoidFrontendSuperRez, false) DefineCrtModeOffsetDeclaration(VerticalOffset, int, Int, sVerticalOffset) @@ -88,6 +89,7 @@ class CrtConf: public IniFile, public StaticLifeCycleControler private: static constexpr const char* sSystemCRT = "adapter.type"; static constexpr const char* sSystemCRTResolution = "options.es.resolution"; + static constexpr const char* sSystemCRTAvoidFrontendSuperRez = "options.es.resolution.avoidsuperrez"; static constexpr const char* sSystemCRTGameRegionSelect = "options.regionselect"; static constexpr const char* sSystemCRTGameResolutionSelect = "options.resolutionselect"; static constexpr const char* sSystemCRTSignalSelect = "options.signalselect"; diff --git a/projects/frontend/es-core/src/ResolutionAdapter.cpp b/projects/frontend/es-core/src/ResolutionAdapter.cpp index 01a53ed4451e575a7e18519105d5bb6b81007ac3..c26ca920e4f091b587e517c268f9b2702b8a6791 100644 --- a/projects/frontend/es-core/src/ResolutionAdapter.cpp +++ b/projects/frontend/es-core/src/ResolutionAdapter.cpp @@ -449,6 +449,7 @@ bool ResolutionAdapter::GetCRTResolution(int& w, int& h) w = 1920; h = 384; } } + // 15kHz interlaced else if (CrtConf::Instance().GetSystemCRTResolution() == "480" && crt.HasInterlacedSupport()) { w = 640; h = 480; @@ -457,9 +458,17 @@ bool ResolutionAdapter::GetCRTResolution(int& w, int& h) w = 768; h = 576; } } + // 15kHz progressive else { - w = 1920; h = 240; + if (CrtConf::Instance().GetSystemCRTAvoidFrontendSuperRez()) + { + w = 320; h = 240; + } + else + { + w = 1920; h = 240; + } if (Board::Instance().CrtBoard().MustForce50Hz()) { w = 1920; h = 288; diff --git a/projects/frontend/es-core/src/hardware/Board.h b/projects/frontend/es-core/src/hardware/Board.h index b79add823651b8a6702d31a173d46761d802f124..b5b47ccdb26990d7c39ed1bcd8720bcfd6b2cd79 100644 --- a/projects/frontend/es-core/src/hardware/Board.h +++ b/projects/frontend/es-core/src/hardware/Board.h @@ -34,6 +34,9 @@ class Board: public StaticLifeCycleControler bool IsPC() { BoardType t = GetBoardType(); return t == BoardType::PCx86 || t == BoardType::PCx64; } bool IsPi() { BoardType t = GetBoardType(); return t >= BoardType::Pi0 && t <= BoardType::PiUnknown; } + bool IsPi5Familly() { BoardType t = GetBoardType(); return t == BoardType::Pi5 || t == BoardType::Pi500; } + bool IsPi4Familly() { BoardType t = GetBoardType(); return t == BoardType::Pi4 || t == BoardType::Pi400; } + bool IsOdroid() { BoardType t = GetBoardType(); return t >= BoardType::OdroidAdvanceGo && t <= BoardType::OdroidUnknown; } bool IsAnbernic() { BoardType t = GetBoardType(); return t >= BoardType::RG351V && t <= BoardType::AnbernicUnknown; } diff --git a/projects/frontend/es-core/src/hardware/boards/pis/PiPowerAndTempThread.cpp b/projects/frontend/es-core/src/hardware/boards/pis/PiPowerAndTempThread.cpp index a91de588fd37d5500cfd6d9d4659f3c7bf377c56..3106de801a99bc3265f9947475b267a2f1463fc0 100644 --- a/projects/frontend/es-core/src/hardware/boards/pis/PiPowerAndTempThread.cpp +++ b/projects/frontend/es-core/src/hardware/boards/pis/PiPowerAndTempThread.cpp @@ -34,29 +34,35 @@ void PiPowerAndTempThread::Run() { bool throttledSent = false; bool tempSent = false; + int loops = 0; while (this->IsRunning()) { - static String prefix = "=0x"; - std::pair res = RecalboxSystem::execute("vcgencmd get_throttled"); - if (res.second == 0 && res.first.Contains(prefix)) + // Sleep 100ms, 50 * 100ms = 5 sec + usleep(100'000); + if (loops++ > 50) { - String value = String(res.first.ToTrim(), res.first.Find(prefix) + 1); - int throtthled = 0; - if (value.TryAsInt(throtthled)) + loops = 0; + static String prefix = "=0x"; + std::pair res = RecalboxSystem::execute("vcgencmd get_throttled"); + if (res.second == 0 && res.first.Contains(prefix)) { - if ((throtthled & UnderVoltageSinceStart) && !throttledSent) + String value = String(res.first.ToTrim(), res.first.Find(prefix) + 1); + int throtthled = 0; + if (value.TryAsInt(throtthled)) { - messageSender.Send(boardType, MessageTypes::UnderVoltage); - throttledSent = true; - } - else if ((throtthled & SoftTempReachedSinceStart) && !tempSent) - { - messageSender.Send(boardType, MessageTypes::TemperatureLimit); - tempSent = true; + if ((throtthled & UnderVoltageSinceStart) && !throttledSent) + { + messageSender.Send(boardType, MessageTypes::UnderVoltage); + throttledSent = true; + } + else if ((throtthled & SoftTempReachedSinceStart) && !tempSent) + { + messageSender.Send(boardType, MessageTypes::TemperatureLimit); + tempSent = true; + } } } } - sleep(10); } } diff --git a/projects/frontend/es-core/src/hardware/crt/CrtRGBDual2.h b/projects/frontend/es-core/src/hardware/crt/CrtRGBDual2.h index a28f1b036acc5d77f0148061f34b211828303e11..422b9bcff6f2edff508a5d021d9cff9a5f576738 100644 --- a/projects/frontend/es-core/src/hardware/crt/CrtRGBDual2.h +++ b/projects/frontend/es-core/src/hardware/crt/CrtRGBDual2.h @@ -59,9 +59,9 @@ class CrtRGBDual2 : public ICrtInterface HorizontalFrequency configFreq = static_cast(CrtConf::Instance().GetSystemCRTScreenType()); if(GetRGBDualCompositeSwitchState()) return HorizontalFrequency::KHz15; - if(configFreq != ICrtInterface::HorizontalFrequency::Auto) + if(MustForce31kHz() && configFreq != ICrtInterface::HorizontalFrequency::Auto) return configFreq; - return GetRGBDual31khzSwitchState() ? HorizontalFrequency::KHz31 : HorizontalFrequency::KHz15; + return MustForce31kHz() ? HorizontalFrequency::KHz31 : HorizontalFrequency::KHz15; } //! This adapter has support of forced 50hz diff --git a/projects/recalbox-rgb-dual/recalboxrgbdual.c b/projects/recalbox-rgb-dual/recalboxrgbdual.c index d4a85b505a80ed4ab12de29636c5ad944a2d0f70..52daeb9af85156db50e1f33e763f5ac531b0663d 100644 --- a/projects/recalbox-rgb-dual/recalboxrgbdual.c +++ b/projects/recalbox-rgb-dual/recalboxrgbdual.c @@ -644,7 +644,10 @@ static void dpidac_apply_module_mode(struct drm_connector *connector, int modeId } static bool forced31kHzOnly(void){ - return config.screentype == KHz31 || (config.screentype == Auto && config.gpioIn31kHz.gpio_state == 0); + if(isRGBJAMMA()){ + return config.screentype == KHz31; + } + return (config.screentype == Auto || config.screentype == KHz31) && config.gpioIn31kHz.gpio_state == 0; } static bool forced50Hz(void){ @@ -729,7 +732,7 @@ static int dpidac_get_modes(struct drm_connector *connector) { } } if(default_res == 0){ - if(config.gpioIn31kHz.gpio_state == 0 || config.screentype == KHz31 || config.screentype == KHzMulti1531 || config.screentype == KHzTriFreq) + if(forced31kHzOnly() || config.screentype == KHz31 || config.screentype == KHzMulti1531 || config.screentype == KHzTriFreq) default_res = 480; else if(config.screentype == KHzMulti1525) default_res = 384;