Skip to content

VCFG v2.34

Choose a tag to compare

@Melnikoff07 Melnikoff07 released this 25 Oct 14:15
· 3 commits to main since this release

SHA256: VCFG_v2.34.pkg (6619136 B) ed42db8514e901667e7645c620b6a8a19fa63519276d4de64068dd949b817695


English (EN)

Classic Frame Generation Plugin (vcfg_classic.prx)

  1. CUSA10249 — Fixed missing in-game audio and locked volume slider (stuck at 0) in Frame Generation mode:
    • Since v2.28, the title's 6 MB (0x600000, type=0) audio allocation (Alloc 5) received synthetic FlexibleMemory instead of physical DirectMemory, preventing the audio subsystem from starting.
    • Added audio_fix = 1 (enabled by default for CUSA10249 only; configurable via audio_fix = 0/1/2 in config-CUSA10249.ini): pre-shaves Arena 2 (0x15800000 -> 0x15200000) by 6 MB and defers mapping the 0x600000 FlexibleMemory tail until the first sceVideoOutRegisterBuffers call (after the title's post-Arena-4 FlexibleMemory budget check), while lazily allocating g_pre_gpu (0x20000) and g_pre_work (0x190000) at frame 120 from the low sub-2 MB DirectMemory region. Verified on console (Alloc 5 receives real DirectMemory phys=0x136400000, FG + audio + volume slider work).
  2. CUSA13323 / CUSA11456 — Built-in verified FG profile, HDR10 format-switch support, and 2-crash native fallback:
    • Set default profile for the CUSA11456 family (CUSA13323, CUSA11456) to shave_mode = 2, reg_mode = 2, present_copy = 2, two_buffer = 0, pace_order = 3, fps_lock = 30, with automatic fallback to native (framegen = 0, early_crashes = 2) after two consecutive early crashes (flips < 720) instead of rolling back to shave_mode = 0.
    • Added support for runtime scanout format switching (including HDR10 fmt=0x88740000, dfmt=9) on sceVideoOutRegisterBuffers calls with startIndex > 0 by re-registering VCFG's buffer at g_mbase with the new VoAttr, fixed LATENCY trace lines to report FG off when FG is inactive/inert, and deduplicated alloc_pbuf_history skipped log lines. Verified on console (~50 fps FG from 25 fps base, including HDR10).
  3. CUSA08809, CUSA13323 — shave_mode = 2 (LATE (F120)) fixed-range DirectMemory release and early-crash auto-rollback:
    • Allowed releasing g_pre_mem under shave_mode = 2 when the game requests an exact fixed physical range ((e - s) < len + 0x800000), preventing CUSA08809 fixed-range starvation at f:0.
    • Extended crash_sig_handler rollback of shave_mode = 2 -> 0 (reg_mode = 0, shave2_failed = 1, adapt_ver = 234) to all early FG crashes (flips < 720) even when alloc_fail == 0.
    • Prevented adapt-<TITLE>.ini from raising shave_mode or reg_mode above manual settings (manual_mode = 1 in config-<TITLE>.ini), while allowing shave2_failed = 1 to safely roll back shave_mode = 2 -> 0.
  4. Memory Valve, FlexibleMemory Headroom, and VirtualQuery Fixes:
    • Removed partial FlexibleMemory tail mappings (PARTIAL-MAP with PROT_NONE holes), enforced flex_av >= need_tail before shave_game_alloc, and added min_flex_reserve (8 MB / 3.75 MB) in alloc_pbuf_history (CUSA13323, CUSA11456, CUSA00341, CUSA10249, CUSA24705).
    • Restored extended prefer_half (50% RGB565 g_pbuf history when flex_av < 24 MB or flex_av < full_sz + 16 MB) for 1080p/1440p and 4K titles (CUSA10249, CUSA03041, CUSA08519, CUSA09175), and added on-demand release_pbuf reclamation inside shave_game_alloc (CUSA13323, CUSA11456).
    • Replaced the overestimated WORK_SZ_8 + 4 MB check in safe_try_activate with the exact WORK_SZ_8 (0x190000) DirectMemory requirement so safe mode activates at f:120 when 0x1d0000 is available (CUSA13323, CUSA11456).
    • Added partial sceKernelMunmap and va_end / arena_va_end trimming in unmap_shave_flex_vmaps on partial ReleaseDirectMemory of a shaved tail, and restricted sceKernelVirtualQuery_hook override to q_va < ave, fixing SIGILL crashes on CUSA12605 and CUSA10213.
    • Enforced a cumulative max_total_shave cap (36 MB base / up to 64 MB with FlexibleMemory headroom) instead of already_shaved + 36 MB.
  5. VideoOut Buffer Registration & Present-Copy (pcopy) Safety:
    • Bounded IS_MID(b) and on_our_buf by g_mbuf_state == 1 and b < g_nbuf, reset g_mbase = 16 / g_nmid = 0 / 2-buffer state when a title re-registers startIndex == 0 natively without extra buffers (CUSA10249), and preserved g_nbuf when a secondary buffer group (startIndex > 0) is registered (CUSA07410).
    • Required g_pcopy_k >= 2 (nm >= 4: at least 2 mid + 2 copy buffers) for scanout present-copy, falling back to g_pbuf history when nm < 4 (g_pcopy_k == 1) to eliminate the frame 122 WaitFlipDone GPU self-deadlock on 2-buffer titles (CUSA03468, CUSA08809).
  6. Third-Party .prx Crash Attribution:
    • Detected crashes inside external .prx plugins (THIRD_PARTY_PRX_FAULT) in crash_sig_handler and skipped SELF-ADAPT so third-party plugin faults do not corrupt adapt-<TITLE>.ini (CUSA00419, CUSA07408, CUSA16579).
    • Synchronized game-internal .prx exclusions (Il2CppUserAssemblies.prx, MonoAssembliesPS4.prx, PS4Util.prx, fullgame.prx, gnmscale_plugin.prx, gs_resident_plugin.prx, steamnetworkingsockets.prx, Party.prx, logiWheel.prx, EOSSDK*, libfmod*, libAk*) between vcfg_classic.prx and the launcher so crashes inside a title's own modules (CUSA18824 / CUSA05088 family) still trigger SELF-ADAPT.
  7. Motion Estimation & Contour Filter Shaders:
    • Added texture-normalized cost (3_no_dc_tex) to me1 and mf8 in mode 8 to reduce foreground contour haloing (CUSA08519, CUSA05571).

VCFG Launcher (VCFG_v2.34.pkg) & Build System

  1. Global "VCFG IS TURNED OFF" Banner & Config Write Protection:
    • Added a red "VCFG IS TURNED OFF - PRESS CROSS ON 04 PLUGIN TO ENABLE" banner across all launcher tabs, "VCFG TURNED OFF" status on game cards, and "TURNED OFF" status on 04 PLUGIN while /data/bb_probe/vcfg_off is present, and blocked config writes while VCFG is turned off.
  2. Complete VCFG Uninstall / Clean While Preserving Logs & Foreign Plugins:
    • Square (REMOVE) and R2×2 (CLEAN) now remove all VCFG binaries, plugins.ini sections/backups, config*.ini, adapt-*.ini, safe-*, and profiles/* without recreating configs on exit (Options), while preserving all logs in /data/bb_probe/ and third-party plugins.
  3. Advisor Fixes:
    • Never recommend or restore shave_mode = 2 (LATE (F120)) after shave2_failed = 1 or a crash under shave_mode = 2 (CUSA06548, CUSA39420, CUSA25651).
    • Match real "arena shave #" and shave > 0 log lines in has_shave_log (CUSA18000, CUSA07408).
    • Always delete stale adapt-<TITLE>.ini when applying Advisor recommendations via R2, including when manual_mode = 1.
    • Prioritize INERT: log diagnostics before safe_state > 0 and handle SAFE NO WORK/DISPLAY MEM (CUSA13323, CUSA03694).
    • Prevent false 2-buffer detection (is_2b_log) on 3-buffer titles that register 2 splash buffers at startup (CUSA00341, CUSA00918, CUSA10249).
    • Display "EARLIEST" and "ALL BUFFERS" labels when rec_shave_mode == 0 or rec_reg_mode == 0.
    • Detect third-party .prx faults in crash logs regardless of alloc_fail, while ignoring the "LOADED MODULES" section and game-internal .prx libraries (CUSA18534, CUSA00419, CUSA07408).
  4. Reproducible Build & Version Upgrade:
    • Bumped VERSION from 2.33 to 2.34 and passed relative ELF paths to create-fself so .prx and .pkg SHA256 hashes are worktree-independent.
    • Expanded automated test coverage to 106 real CUSAxxxxx boot traces and added a native host test suite for Launcher Advisor, INI handling, and uninstall.

Русский (RU)

Классический плагин генерации кадров (vcfg_classic.prx)

  1. CUSA10249 — Исправлен звук и заблокированный на 0 ползунок громкости в режиме Frame Generation:
    • Начиная с v2.28, при включённом FG буферу звукового движка игры (Alloc 5, len=0x600000, type=0) доставалась синтетическая FlexibleMemory вместо физической DirectMemory, из-за чего звуковой движок не стартовал, а громкость в настройках игры была заблокирована на 0.
    • Добавлен фикс audio_fix = 1 (включён по умолчанию только для CUSA10249; переключается через audio_fix = 0/1/2 в config-CUSA10249.ini): Арена 2 (0x15800000 -> 0x15200000) подрезается на 6 МБ, а маппинг хвоста 0x600000 из FlexibleMemory откладывается до первого вызова sceVideoOutRegisterBuffers (после проверки бюджета FlexibleMemory игрой за 4-й ареной); выделение g_pre_gpu (0x20000) и g_pre_work (0x190000) перенесено на кадр f:120 из нижнего суб-2 МБ окна DirectMemory. Проверено на консоли (Alloc 5 получает настоящую DirectMemory phys=0x136400000, FG, звук и ползунок громкости работают).
  2. CUSA13323 / CUSA11456 — Встроенный рабочий профиль FG, поддержка переключения в HDR10 и авто-откат в натив после 2 крашей:
    • Для семейства CUSA11456 (CUSA13323, CUSA11456) задан встроенный профиль shave_mode = 2, reg_mode = 2, present_copy = 2, two_buffer = 0, pace_order = 3, fps_lock = 30 и автоматический переход в нативный режим (framegen = 0, early_crashes = 2) после 2 ранних крашей подряд (flips < 720) вместо отката в заведомо падающий shave_mode = 0.
    • Добавлена поддержка смены scanout-формата (включая HDR10 fmt=0x88740000, dfmt=9) при вызове sceVideoOutRegisterBuffers с startIndex > 0 через перерегистрацию буфера плагина на g_mbase с новым VoAttr, исправлен статус FG off в строках LATENCY при неактивном FG и убран повторный спам alloc_pbuf_history skipped в boot-<TITLE>.txt. Проверено на консоли (~50 fps FG при 25 fps игре, включая HDR10).
  3. CUSA08809, CUSA13323 — Освобождение g_pre_mem для фиксированных диапазонов при shave_mode = 2 и авто-откат на ранних крашах:
    • Разрешена отдача g_pre_mem при shave_mode = 2, когда игра запрашивает узкий фиксированный физический диапазон ((e - s) < len + 0x800000), что устраняет цикл падений CUSA08809 на f:0.
    • Условие отката shave_mode = 2 -> 0 (reg_mode = 0, shave2_failed = 1, adapt_ver = 234) в crash_sig_handler расширено на все ранние краши FG (flips < 720), даже если alloc_fail == 0.
    • При manual_mode = 1 в config-<TITLE>.ini файл adapt-<TITLE>.ini больше никогда не повышает shave_mode или reg_mode поверх ручных настроек, но при shave2_failed = 1 безопасно откатывает shave_mode = 2 -> 0.
  4. Клапан памяти, резерв FlexibleMemory и VirtualQuery:
    • Удалён частичный маппинг хвоста PARTIAL-MAP с дырой PROT_NONE, добавлена проверка flex_av >= need_tail перед shave_game_alloc и резерв min_flex_reserve (8 МБ / 3.75 МБ) в alloc_pbuf_history (CUSA13323, CUSA11456, CUSA00341, CUSA10249, CUSA24705).
    • Восстановлено расширенное условие prefer_half (50% RGB565 g_pbuf при flex_av < 24 МБ или flex_av < full_sz + 16 МБ) для 1080p/1440p и 4K-режимов (CUSA10249, CUSA03041, CUSA08519, CUSA09175), а также возврат g_pbuf через release_pbuf внутри shave_game_alloc при нехватке FlexibleMemory (CUSA13323, CUSA11456).
    • В safe_try_activate завышенная проверка WORK_SZ_8 + 4 МБ заменена на точное требование WORK_SZ_8 (0x190000), что позволяет активировать safe mode на f:120 при наличии 0x1d0000 DirectMemory (CUSA13323, CUSA11456).
    • В unmap_shave_flex_vmaps добавлен частичный sceKernelMunmap и подрезка va_end / arena_va_end при частичном ReleaseDirectMemory внутри shave-хвоста, а в sceKernelVirtualQuery_hook оставлено строгое условие q_va < ave, что устраняет SIGILL в CUSA12605 и CUSA10213.
    • Введён кумулятивный потолок max_total_shave (36 МБ базово / до 64 МБ при запасе FlexibleMemory) вместо already_shaved + 36 МБ.
  5. Безопасность регистрации буферов VideoOut и present-copy (pcopy):
    • Макрос IS_MID(b) и on_our_buf ограничены условиями g_mbuf_state == 1 и b < g_nbuf, добавлен сброс g_mbase = 16 / g_nmid = 0 и 2-буферного состояния при нативной перерегистрации startIndex == 0 без дополнительных буферов (CUSA10249), а также сохранение g_nbuf при регистрации второй группы startIndex > 0 (CUSA07410).
    • Для scanout present-copy теперь требуется g_pcopy_k >= 2 (nm >= 4: минимум 2 mid + 2 copy буфера); при nm < 4 (g_pcopy_k == 1) используется история через g_pbuf, что устраняет 100% GPU self-deadlock на WaitFlipDone на кадре f:122 в 2-буферных играх (CUSA03468, CUSA08809).
  6. Атрибуция падений в сторонних .prx плагинах:
    • В crash_sig_handler добавлено определение крашей внутри сторонних .prx модулей (THIRD_PARTY_PRX_FAULT) с пропуском SELF-ADAPT, чтобы падения внешних плагинов не портили adapt-<TITLE>.ini (CUSA00419, CUSA07408, CUSA16579).
    • Список собственных игровых .prx модулей (Il2CppUserAssemblies.prx, MonoAssembliesPS4.prx, PS4Util.prx, fullgame.prx, gnmscale_plugin.prx, gs_resident_plugin.prx, steamnetworkingsockets.prx, Party.prx, logiWheel.prx, EOSSDK*, libfmod*, libAk*) синхронизирован между vcfg_classic.prx и лаунчером, чтобы краши во внутренних модулях игры (CUSA18824 / семейство CUSA05088) штатно обрабатывались SELF-ADAPT.
  7. Шейдеры оценки движения и контурного фильтра:
    • В шейдеры me1 и mf8 для mode 8 добавлена текстурно-нормированная оценка (3_no_dc_tex), ослабляющая ореолы на контурах переднего плана (CUSA08519, CUSA05571).

Лаунчер VCFG (VCFG_v2.34.pkg) и система сборки

  1. Глобальный баннер "VCFG IS TURNED OFF" и защита конфигов в выключенном состоянии:
    • Пока активен маркер /data/bb_probe/vcfg_off, во всех вкладках лаунчера отображается красный баннер "VCFG IS TURNED OFF - PRESS CROSS ON 04 PLUGIN TO ENABLE", на карточках игр — "VCFG TURNED OFF", на вкладке 04 PLUGIN — статус "TURNED OFF", а перезапись конфигов заблокирована до включения плагина по Cross (X).
  2. Полное удаление файлов VCFG по Square / R2×2 с сохранением логов и сторонних плагинов:
    • Действия Square (REMOVE) и R2×2 (CLEAN) полностью удаляют бинарники vcfg*.prx, секции и бэкапы VCFG в plugins.ini, config*.ini, adapt-*.ini, safe-* и profiles/* без повторного создания конфигов при выходе по Options, сохраняя все логи в /data/bb_probe/ и сторонние плагины.
  3. Исправления Advisor в лаунчере:
    • Запрещена рекомендация и восстановление shave_mode = 2 (LATE (F120)) при shave2_failed = 1 или после краша на shave_mode = 2 (CUSA06548, CUSA39420, CUSA25651).
    • В has_shave_log добавлено распознавание реальных строк "arena shave #" и shave > 0 (CUSA18000, CUSA07408).
    • При применении рекомендаций Advisor по R2 (do_apply_advice) устаревший adapt-<TITLE>.ini удаляется безусловно, в том числе при manual_mode = 1.
    • Проверка INERT: логов выполняется приоритетнее safe_state > 0, добавлена обработка SAFE NO WORK/DISPLAY MEM (CUSA13323, CUSA03694).
    • Устранено ложное срабатывание is_2b_log = 1 на 3-буферных играх со стартовым сплэш-экраном num=2 (CUSA00341, CUSA00918, CUSA10249).
    • Для нулевых rec_shave_mode == 0 и rec_reg_mode == 0 в карточке Advisor выводятся корректные подписи "EARLIEST" и "ALL BUFFERS".
    • Сторонние .prx модули в crash-логах определяются независимо от alloc_fail, при этом секция "LOADED MODULES" и собственные игровые библиотеки игнорируются (CUSA18534, CUSA00419, CUSA07408).
  4. Воспроизводимая сборка и обновление версии:
    • Версия в VERSION обновлена с 2.33 до 2.34, а в create-fself передаются относительные пути ELF для независимости SHA256 от пути worktree.
    • Набор регрессионных бут-трасс расширен до 106 реальных CUSAxxxxx трасс, добавлен нативный тестовый харнесс для Advisor, INI и деинсталляции лаунчера.