Skip to content

STORM SWITCH 13.1.1

Choose a tag to compare

@ReiKatari ReiKatari released this 23 Oct 00:02
· 19 commits to main since this release

💡 Релиз 13.1.1 (Срочное обновление) — Оперативное исправление запуска и разворачивания окна из системного трея (Global\STORM_SWITCH_RestoreEvent и устранение 0xC0000374 STATUS_HEAP_CORRUPTION при проверке DPI/одиночного экземпляра), полноценная интеграция мгновенных быстрых сохранений и загрузок SESS v2 в Меню «Файл» (с подменю Слотов 1–5, отображением размера и времени сохранения) и в настройки «Горячие клавиши» (Hotkeys) (F5 / F7 + назначение любых клавиш клавиатуры и кнопок геймпада без конфликта QShortcut), а также все нововведения ветки 13.1.x.


🚨 Срочные исправления и улучшения в 13.1.1

  • 🛠️ [Исправление запуска и разворачивания окна из системного трея (main.cpp, main_window.cpp)]:

    1. Мгновенное пробуждение скрытого в трей окна (Global\STORM_SWITCH_RestoreEvent): исправлена ситуация, когда после закрытия окна крестиком [✕] (сворачивания в системный трей по стандарту Close-to-Tray) повторный запуск STORM_SWITCH.exe не разворачивал главное окно, так как Win32 ShowWindow(SW_RESTORE) не пробуждает виджеты Qt6, скрытые через QWidget::hide(). Теперь повторный запуск мгновенно сигнализирует именованное событие Global\STORM_SWITCH_RestoreEvent, и работающий экземпляр автоматически вызывает showNormal(), raise() и activateWindow().
    2. Устранение сбоя кучи 0xC0000374 (STATUS_HEAP_CORRUPTION) при старте: из GetHighDpiRoundingPolicy() удалено создание и разрушение временного объекта QApplication с nullptr аргументами до инициализации основного QApplication (заменено на прямой опрос метрик экрана Win32 GetSystemMetrics), а фоновая загрузка TitleDatabase::EnsureLoaded() перенесена строго после проверок дочернего процесса Vulkan и мьютекса одиночного запуска.
    3. Безопасное завершение игры при сворачивании в трей: при нажатии [✕] во время активной игры эмулятор теперь корректно запрашивает подтверждение и останавливает 3D-рендеринг перед скрытием окна в трей, не оставляя игру нагружать GPU/CPU в фоновом режиме.
  • 💾 [Управление быстрыми сохранениями и загрузками SESS v2 в меню «Файл» и «Горячие клавиши» (main_window.cpp, uisettings.cpp)]:

    1. Новые пункты в меню «Файл» (Файл -> Быстрое сохранение / Быстрая загрузка):
      • «Быстрое сохранение (Слот 1)» (F5) и «Быстрая загрузка (Слот 1)» (F7).
      • Подменю «Сохранить состояние в слот» (Слоты 1–5) и «Загрузить состояние из слота» (Слоты 1–5) с автоматическим отображением размера файла в мегабайтах и точной даты/времени каждого сохранения ([MB — ДД.ММ.ГГГГ ЧЧ:ММ:СС]).
    2. Полная настройка в «Горячих клавишах» (Эмуляция -> Параметры -> Общие -> Горячие клавиши):
      • Действия Quick Save («Быстрое сохранение (Слот 1)») и Quick Load («Быстрая загрузка (Слот 1)») зарегистрированы в глобальном реестре HotkeyRegistry (UISettings::default_hotkeys) с поддержкой переназначения на любую клавишу клавиатуры и комбинацию кнопок геймпада (Controller Shortcut).
      • Устранён конфликт дублирующихся QShortcut (F5 / F7), блокировавший срабатывание хоткеев.

🚀 Ключевые нововведения ветки 13.1.x

  • ⚡ [Мгновенные быстрые сохранения и загрузки SESS v2 (save_state.h/.cpp)]:

    1. Ультра-быстрый RAM-кэш (< 20 мс) и асинхронная запись на диск: быстрые сохранения (Quick Save) и загрузки (Quick Load) сначала фиксируются в оперативном LRU-кэше снимков памяти и мгновенно возвращают управление игре, а сжатие ZSTD и атомарная запись .ses выполняются в фоновом потоке с гарантированным сбросом FlushPendingSaveStates() при выходе.
    2. Минимальный размер файлов (4 КБ битовая маска нулевых страниц + фильтрация KPageTable): сериализуются только реально изменяемые регионы памяти процесса (EnumerateWritableRegions), пропуская неизменяемые сегменты .text / .rodata и невыделенную кучу, а пустые 4 КБ страницы кодируются одним битом без хранения нулей.
    3. Дифференциальное восстановление WriteChanged и защита спящих потоков ядра (IsParkedInKernel): при быстрой загрузке перезаписываются и инвалидируются в GPU-кэше только изменившиеся 4 КБ страницы, а стеки хост-файберов спящих потоков защищены от повреждения. Сохранена 100% обратная совместимость с файлами сохранений формата v1.
  • 🎙️ [Студийный экранный переводчик и ролевая многоголосая озвучка (game_translator.h/.cpp)]:

    1. Пространственный сборщик реплик (DialogueSentenceAssembler) и детектор плашки говорящего (Speaker Nameplate): строки OCR сортируются по экранным координатам (Y, X), верхняя левая именная плашка автоматически отделяется от тела реплики и оформляется как Имя: «Текст», а многострочные диалоги склеиваются без разрывов предложений.
    2. 24 голосовых архетипа (CharacterPersona), ростер героев Nintendo Switch и каст-лист (voice_cast_<title_id>.json): автоматическое определение пола и тембра персонажа (Линк, Зельда, Ганондорф, Марио, Пич, Боузер, Самус, Байонетта, Ноа, Мио, Джокер и др.) с сохранением индивидуального голоса и высоты тона SAPI5 XML (<pitch middle='...'/>) за каждым героем на протяжении всей игры.
    3. Нормализатор русской речи (NormalizeForRussianTts), последовательная очередь реплик и режим SMART_BACKGROUND_MATCH: автоматическая расшифровка игровых аббревиатур (HP, MP, EXP, LV, NPC) и римских цифр для чистого произношения, чтение диалогов нескольких собеседников по ролям без обрыва фраз, адаптивный сэмплинг цвета подложки игры под текстом и мгновенное переключение/скрытие оверлея по F9 или клику без всплытия окна настроек поверх игры.
  • 💎 [Прокачка 5 ключевых модулей экосистемы (Amiibo, Читы, GameBanana, STORM GAMES WORLD, STORM SAVE SYNC)]:

    1. Кабинет Amiibo (amiibo_browser_dialog.cpp): быстрые фильтры «⭐ Избранное» и «🕒 Недавние», кнопка добавления фигурок в избранное и загрузка двойным кликом.
    2. Менеджер читов (cheats_dialog.cpp, configure_per_game_cheats.cpp): фильтр «⚡ Только включённые» и переключение читов двойным кликом.
    3. Моды GameBanana (configure_gamebanana_mods.cpp): живой поиск по установленным модам и пакетные кнопки «✅ Вкл. все» / «⚪ Выкл. все».
    4. STORM GAMES WORLD (storm_games_world_dialog.cpp): быстрые фильтр-кнопки («Все», «🇷🇺 RUS», «📦 DLC», «⚡ MOD»).
    5. STORM SAVE SYNC (storm_save_sync_dialog.cpp): фильтрация таблицы по статусу синхронизации и кнопка «📂 Папка сохранений».
  • 🛠️ [Оптимизация железа и исправление открытых обращений GitHub Issues (#22, #21, #19, #18, #13, #8)]:

    1. Issue #22: удержание частот GPU на ROG Ally (AMD RDNA3) и защита CPU от перегрева 90°C+ на Snapdragon 8 Gen 3 (vk_turbo_mode.cpp).
    2. Issue #21: устранение вылета генерации кадров LSFG на GPU Mali (lsfg_gamma.cpp, lsfg_delta.cpp) и исправление переключателя стационарного/портативного режима на Android (native_config.cpp, SettingsItem.kt).
    3. Issue #19 и #13: очистка компактного индикатора FPS (EmulationFragment.kt) и исправление мультитача экранного стика и кнопок на Android (InputOverlayDrawableJoystick.kt, InputOverlay.kt).
🌐 English Changelog (click to expand)
  • 🚨 [Urgent Fixes in 13.1.1 (main.cpp, main_window.cpp, uisettings.cpp)]:
    1. Tray Wakeup & Single-Instance Restore Fix (Global\STORM_SWITCH_RestoreEvent): Fixed an issue where launching STORM_SWITCH.exe while the emulator was hidden to the system tray did not restore the Qt6 window.
    2. Startup Heap Corruption Fix (0xC0000374): Removed the temporary QApplication in GetHighDpiRoundingPolicy() and moved TitleDatabase::EnsureLoaded() after child-process and single-instance checks.
    3. Quick Save / Quick Load in File Menu & Hotkeys Settings: Added Quick Save (Slot 1) (F5), Quick Load (Slot 1) (F7), and Save/Load State Slot 1–5 submenus (with live size and timestamp preview) to the File menu, and registered Quick Save and Quick Load in Emulation -> Configure -> General -> Hotkeys for custom keyboard and controller bindings.
  • 🔸 [Instant & Ultra-Compact Quick Save / Quick Load SESS v2 (save_state.h/.cpp)]:
    1. In-RAM LRU snapshot cache (< 20 ms pause) with background asynchronous ZSTD disk compression, KPageTable writable region filtering, 4 KB zero-page bitmask skipping, differential WriteChanged page restoration, and kernel sleeping thread fiber stack protection.
  • 🔸 [Studio Screen Translator & Multi-Character Voiceover (game_translator.h/.cpp)]:
    1. Spatial OCR line sorting, top-left speaker nameplate separation, DialogueSentenceAssembler, 24 character voice archetypes with persistent per-game casting (voice_cast_<title_id>.json), Russian gaming abbreviation/Roman numeral TTS normalization, sequential multi-turn speech queue, SMART_BACKGROUND_MATCH HUD backdrop sampling, and instant F9 / click-to-dismiss overlay toggling.
📦 Файлы и вложения к релизу (нажмите, чтобы развернуть)
  • 📁 Прикреплённые файлы: Исполняемые файлы, APK и портативные архивы для Windows 10 и Windows 11 доступны в секции Assets ниже.
  • 🛡️ Контроль целостности: Все бинарные файлы собраны из официального исходного кода, подписаны единым сертификатом STORM и проверены перед публикацией.
  • 💻 Установка: Скачайте соответствующий архив или APK из списка Assets и следуйте стандартным инструкциям.