Рубрика: nintendo

  • Проверки SD-карт на объем, скорость и надежность

    Вот несколько программ для проверки SD-карт на объем, скорость и надежность:

    1. Проверка объема и подлинности

    Так уж случилось, что многие китайские продавцы поступают не очень честно и продают флешки на 500гб (!!!) за 500руб. Отличная покупка, если бы не тот факт, что эта флешка только отображается как 500гб, а в реальности объем может быть 2, 4, 8, или, если очень повезет- 16 гб. 

    Эти программы помогут определить, соответствует ли реальный объем заявленному и нет ли фейковой памяти:

    • H2testw (Windows) – записывает и считывает данные, выявляет мошеннические SD-карты.
    • FakeFlashTest (Windows) – быстро проверяет подлинность объема.
    • F3 (Fight Flash Fraud) (Linux, macOS) – аналог H2testw для Unix-систем.

    2. Стресс-тест и долговечность

    Эти программы проверяют, насколько надежна карта памяти при длительных нагрузках:

    • CrystalDiskMark (Windows) – тест скорости в разных режимах.
    • ATTO Disk Benchmark (Windows) – детальный анализ скорости.
    • F3write/F3read (Linux, macOS) – нагрузочное тестирование.

    3. Диагностика ошибок и восстановление

    Если карта работает нестабильно, попробуйте:

    • SD Card Formatter (Windows, macOS) – правильное форматирование SD-карт.
    • [chkdsk (Windows)] – встроенная утилита проверки ошибок (chkdsk X: /f).
    • [fsck (Linux, macOS)] – аналог chkdsk в Unix-системах.

  • NO SD PicoFLY Пчелка

    Если вы видите подобное изображение это значит – ВСЕ ХОРОШО. Чип отработал как надо, теперь осталось подготовить SD с прошивкой и вставить в консоль.

  • Failed to open payload.bin!

    Вы установили SD карту без прошивки или же криво загрузили ее на флешку.

    Решение: Повторите инструкцию по установке выбранной вами прошивки.

    • SD-card не формата FAT32
    • SD-card не форматирована и имеет какие лишние файлы
    • SD-card не имеет заявленный обьем
      • H2TestW – проверка реального объема SD-card
    • SD-card является подделкой
    • Неправильно загружена прошивка на SD-card
    • Битые файлы прошивки на SD-card
    • Версия официальной прошивки выше чем кастомной
      • Обновитесь или ждите выхода обновления

    В этой ошибке всегда причина или плохая SD-card или криво загруженная прошивка

  • Конденсатор SP1 SP2 около ЦП

    Во время установки PicoFLY отвалился конденсатор.

    Что делать? Без конденсатора на удивление консоль может работать и даже чип PicoFLY будет работать. Важно только припаяться к тем местам где был конденсатора.

    Я все равно хочу восстановить этот конденсатор

    Оригинальный – 81-grm033r61a105me5j

    это многослойный керамический конденсатор (MLCC) производства Murata. Его основные характеристики:

    • Серия: GRM
    • Емкость: 1 μF (микрофарад)
    • Напряжение: 10 В
    • Тип диэлектрика: X5R
    • Размер: 0201 (0.6 мм × 0.3 мм)
    • Допуск: ±20%
    • Температурный диапазон: -55°C до +85°C

    Аналоги, как подобрать?

    На что обратить внимание:

    1. Размер корпуса (0201) — это критически важно для размещения на плате.
    2. Тип диэлектрика (X5R) — этот тип обеспечивает стабильность емкости.
    3. Рабочее напряжение (10 В) — замена должна выдерживать такое же или большее напряжение.
    4. Температурный коэффициент — X5R (-55°C до +85°C) подходит для большинства применений.
    5. Производитель — если допускается использование эквивалентов, убедитесь в их надежности.

    В крайнем случае можно использовать любой формата 0201 на емкость 100nf (1 μF (микрофарад))

  • Что делает файл install.bat при установке Kefira

    Код файла install.bat kefir758

    @echo off
    chcp 866 >nul 2>&1
    
    COLOR 0F
    
    set wd=%temp%\sdfiles
    set clear=0
    set cfw=ATMO
    set cfwname=Atmosphere
    set theme_flag=0
    set theme=0
    set syscon=1
    set missioncontrol=1
    set bootdat=1
    set payloadbin=1
    set pegascape=1
    set oc=0
    set emu=1
    
    set sd=%1
    if not defined %sd% (GOTO main)
    
    :newcard
    COLOR 0F
    cls
    echo Choose mounted SD card letter
    
    
    @echo off
    
    for /f "tokens=3-6 delims=: " %%a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size^,filesystem^,description ^| FINDSTR /I "Removable" ^| findstr /i "exfat fat32"') do (
        @echo wsh.echo "Disk letter: %%c;" ^& " free: " ^& FormatNumber^(cdbl^(%%b^)/1024/1024/1024, 2^)^& " GB;" ^& " size: " ^& FormatNumber^(cdbl^(%%d^)/1024/1024/1024, 2^)^& " GB;" ^& " FS: %%a" > %temp%\tmp.vbs
        @if not "%%c"=="" (
            @echo(
            @cscript //nologo %temp%\tmp.vbs
            del %temp%\tmp.vbs
        )
    )
    
    echo.
    set /P sd="Enter SD card letter: "
    if "%sd%"=="" goto :eof
    
    
    
    if not exist "%sd%:\" (
    	set word=        There is no SD card in %sd%-drive         
    	goto WRONGSD
    ) else (
    	if not exist "%sd%:\*" (goto WRONGSD)
    )
    
    :main
    
    if not exist "%sd%:\pegascape" (if exist "%sd%:\atmosphere" (set pegascape=0))
    if not exist "%sd%:\boot.dat" (if exist "%sd%:\atmosphere" (set bootdat=0))
    if not exist "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag" (set syscon=0)
    if not exist "%sd%:\atmosphere\contents\010000000000bd00\flags\boot2.flag" (set missioncontrol=0)
    if exist "%sd%:\switch\DBI\dbi.config" (rename %sd%:\switch\DBI\dbi.config dbi.config_)
    if not exist "%sd%:\switch\tinfoil\locations.bkp" (
    	if exist "%sd%:\switch\tinfoil\locations.conf" (rename %sd%:\switch\tinfoil\locations.conf locations.bkp)
    )
    if exist "%sd%:\bootloader\loader.kip" (set oc=1)
    
    rem Set mission control status
    @REM set missioncontrol=0
    @REM set syscon=0
    
    
    echo ------------------------------------------------------------------------
    echo.
    echo                          Remove old pack files                          
    echo.
    echo ------------------------------------------------------------------------
    echo.
    
    
    if exist "%sd%:\atmosphere\exefs_patches" (RD /s /q "%sd%:\atmosphere\exefs_patches")
    if exist "%sd%:\atmosphere\kip_patches" (RD /s /q "%sd%:\atmosphere\kip_patches")
    if exist "%sd%:\atmosphere\hekate_kips" (RD /s /q "%sd%:\atmosphere\hekate_kips")
    if exist "%sd%:\bootloader\debug" (RD /s /q "%sd%:\bootloader\debug")
    if exist "%sd%:\modules" (RD /s /q "%sd%:\modules")
    if exist "%sd%:\atmo" (RD /s /q "%sd%:\atmo")
    
    if exist "%sd%:\atmosphere\titles" (rename %sd%:\atmosphere\titles contents)
    if exist "%sd%:\atmosphere\title" (rename %sd%:\atmosphere\title contents)
    if exist "%sd%:\atmosphere\content" (rename %sd%:\atmosphere\content contents)
    
    if exist "%sd%:\atmosphere\contents\0100000000000032" (RD /s /q "%sd%:\atmosphere\contents\0100000000000032")
    if exist "%sd%:\atmosphere\contents\010000000000003C" (RD /s /q "%sd%:\atmosphere\contents\010000000000003C")
    if exist "%sd%:\atmosphere\contents\0100000000000034" (RD /s /q "%sd%:\atmosphere\contents\0100000000000034")
    if exist "%sd%:\atmosphere\contents\0100000000000037" (RD /s /q "%sd%:\atmosphere\contents\0100000000000037")
    if exist "%sd%:\atmosphere\contents\0100000000000036" (RD /s /q "%sd%:\atmosphere\contents\0100000000000042")
    if exist "%sd%:\atmosphere\contents\0100000000000042" (RD /s /q "%sd%:\atmosphere\contents\0100000000000042")
    if exist "%sd%:\atmosphere\contents\010000000000002b" (RD /s /q "%sd%:\atmosphere\contents\010000000000002b")
    if exist "%sd%:\atmosphere\contents\010000000000000D" (RD /s /q "%sd%:\atmosphere\contents\010000000000000D")
    if exist "%sd%:\atmosphere\contents\010000000000100D" (RD /s /q "%sd%:\atmosphere\contents\010000000000100D")
    if exist "%sd%:\atmosphere\contents\4200000000000010" (RD /s /q "%sd%:\atmosphere\contents\4200000000000010")
    if exist "%sd%:\atmosphere\contents\0100000000000008" (RD /s /q "%sd%:\atmosphere\contents\0100000000000008")
    if exist "%sd%:\atmosphere\contents\690000000000000D" (RD /s /q "%sd%:\atmosphere\contents\690000000000000D")
    if exist "%sd%:\atmosphere\contents\420000000000000E" (RD /s /q "%sd%:\atmosphere\contents\420000000000000E")
    if exist "%sd%:\atmosphere\contents\010000000000100B" (RD /s /q "%sd%:\atmosphere\contents\010000000000100B")
    if exist "%sd%:\atmosphere\contents\01FF415446660000" (RD /s /q "%sd%:\atmosphere\contents\01FF415446660000")
    if exist "%sd%:\atmosphere\contents\0100000000000352" (RD /s /q "%sd%:\atmosphere\contents\0100000000000352")
    if exist "%sd%:\atmosphere\contents\00FF747765616BFF" (RD /s /q "%sd%:\atmosphere\contents\00FF747765616BFF")
    if exist "%sd%:\atmosphere\contents\00FF0012656180FF" (RD /s /q "%sd%:\atmosphere\contents\00FF0012656180FF")
    if exist "%sd%:\atmosphere\contents\0100000000001013" (RD /s /q "%sd%:\atmosphere\contents\0100000000001013")
    if exist "%sd%:\atmosphere\contents\010000000007E51A" (RD /s /q "%sd%:\atmosphere\contents\010000000007E51A")
    if exist "%sd%:\atmosphere\contents\420000000007E51A" (RD /s /q "%sd%:\atmosphere\contents\420000000007E51A")
    if exist "%sd%:\atmosphere\contents\0100000000001000" (RD /s /q "%sd%:\atmosphere\contents\0100000000001000")
    if exist "%sd%:\atmosphere\contents\010000000000100C" (RD /s /q "%sd%:\atmosphere\contents\010000000000100C")
    if exist "%sd%:\atmosphere\contents\0000000000534C56" (RD /s /q "%sd%:\atmosphere\contents\0000000000534C56")
    if exist "%sd%:\atmosphere\contents\0100000000000081" (RD /s /q "%sd%:\atmosphere\contents\0100000000000081")
    if exist "%sd%:\atmosphere\contents\010000000000bd00" (RD /s /q "%sd%:\atmosphere\contents\010000000000bd00")
    if exist "%sd%:\atmosphere\contents\420000000000000B" (RD /s /q "%sd%:\atmosphere\contents\420000000000000B")
    if exist "%sd%:\config\uberhand\packages\ovrlck" (RD /s /q "%sd%:\config\uberhand\packages\ovrlck")
    if exist "%sd%:\config\uberhand\romfs\lyt" (RD /s /q "%sd%:\config\uberhand\romfs\lyt")
    
    if exist "%sd%:\atmosphere\erpt_reports" (RD /s /q "%sd%:\atmosphere\erpt_reports")
    if exist "%sd%:\atmosphere\fatal_reports" (RD /s /q "%sd%:\atmosphere\fatal_reports")
    if exist "%sd%:\atmosphere\fatal_errors" (RD /s /q "%sd%:\atmosphere\fatal_errors")
    if exist "%sd%:\atmosphere\crash_reports" (RD /s /q "%sd%:\atmosphere\crash_reports")
    if exist "%sd%:\atmosphere\stratosphere.romfs" (del "%sd%:\atmosphere\stratosphere.romfs")
    
    if exist "%sd%:\atmosphere\fusee-secondary_atmo.bin" (del "%sd%:\atmosphere\fusee-secondary_atmo.bin")
    if exist "%sd%:\atmosphere\hbl_atmo.nsp" (del "%sd%:\atmosphere\hbl_atmo.nsp")
    if exist "%sd%:\atmosphere\fusee-secondary.bin.sig" (del "%sd%:\atmosphere\fusee-secondary.bin.sig")
    if exist "%sd%:\atmosphere\hbl.nsp.sig" (del "%sd%:\atmosphere\hbl.nsp.sig")
    if exist "%sd%:\atmosphere\hbl.json" (del "%sd%:\atmosphere\hbl.json")
    if exist "%sd%:\atmosphere\BCT.ini" (del "%sd%:\atmosphere\BCT.ini")
    if exist "%sd%:\atmosphere\config\BCT.ini" (del "%sd%:\atmosphere\config\BCT.ini")
    if exist "%sd%:\atmosphere\package3" (del "%sd%:\atmosphere\package3")
    if exist "%sd%:\atmosphere\system_settings.ini" (del "%sd%:\atmosphere\system_settings.ini")
    if exist "%sd%:\atmosphere\loader.ini" (del "%sd%:\atmosphere\system_settings.ini")
    if exist "%sd%:\atmosphere\kips\loader.kip" (RD /s /q  "%sd%:\atmosphere\kips\loader.kip")
    if exist "%sd%:\atmosphere\kips\fs_mitm.kip" (RD /s /q  "%sd%:\atmosphere\kips\fs_mitm.kip")
    if exist "%sd%:\atmosphere\kips\ldn_mitm.kip" (RD /s /q  "%sd%:\atmosphere\kips\ldn_mitm.kip")
    if exist "%sd%:\atmosphere\kips\pm.kip" (RD /s /q  "%sd%:\atmosphere\kips\pm.kip")
    if exist "%sd%:\atmosphere\kips\sm.kip" (RD /s /q  "%sd%:\atmosphere\kips\sm.kip")
    if exist "%sd%:\atmosphere\kips\ams_mitm.kip" (RD /s /q  "%sd%:\atmosphere\kips\ams_mitm.kip")
    if exist "%sd%:\atmosphere\erpt_reports" (RD /s /q  "%sd%:\atmosphere\erpt_reports")
    if exist "%sd%:\atmosphere\flags\hbl_cal_read.flag" (del "%sd%:\atmosphere\flags\hbl_cal_read.flag")
    if exist "%sd%:\atmosphere\exosphere.bin" (del "%sd%:\atmosphere\exosphere.bin")
    if exist "%sd%:\atmosphere\hbl.nsp" (del "%sd%:\atmosphere\hbl.nsp")
    if exist "%sd%:\atmosphere\loader.ini" (del "%sd%:\atmosphere\loader.ini")
    if exist "%sd%:\atmosphere\reboot_payload.bin" (del "%sd%:\atmosphere\reboot_payload.bin")
    if exist "%sd%:\atmosphere\BCT.ini" (del "%sd%:\atmosphere\BCT.ini")
    if exist "%sd%:\sxos\bootloader" (RD /s /q  "%sd%:\sxos\bootloader")
    if exist "%sd%:\sxos\switch" (RD /s /q  "%sd%:\sxos\switch")
    if exist "%sd%:\sxos\exefs_patches" (RD /s /q  "%sd%:\sxos\exefs_patches")
    if exist "%sd%:\sept" (RD /s /q  "%sd%:\sept")
    if exist "%sd%:\sxos\boot.dat" (del "%sd%:\sxos\boot.dat")
    if exist "%sd%:\games\tinfoil*.*" (del "%sd%:\games\tinfoil*.*")
    if exist "%sd%:\sxos\sxos" (
    	xcopy %sd%:\sxos\sxos\* %sd%:\sxos\ /Y /S /E /H /R /D
    )
    if exist "%sd%:\atmosphere\fusee-secondary.bin" (del "%sd%:\atmosphere\fusee-secondary.bin")
    if exist "%sd%:\bootloader\payloads\fusee-primary-payload.bin" (del "%sd%:\bootloader\payloads\fusee-primary-payload.bin")
    if exist "%sd%:\bootloader\payloads\Incognito_RCM.bin" (del "%sd%:\bootloader\payloads\Incognito_RCM.bin")
    if exist "%sd%:\bootloader\payloads\Lockpick_RCM.bin" (del "%sd%:\bootloader\payloads\Lockpick_RCM.bin")
    if exist "%sd%:\bootloader\payloads\kefir-helper.bin" (del "%sd%:\bootloader\payloads\kefir-helper.bin")
    if exist "%sd%:\bootloader\payloads\biskeydump.bin" (del "%sd%:\bootloader\payloads\biskeydump.bin")
    if exist "%sd%:\bootloader\payloads\fusee-payload.bin" (del "%sd%:\bootloader\payloads\fusee-payload.bin")
    if exist "%sd%:\bootloader\payloads\fusee-primary.bin" (del "%sd%:\bootloader\payloads\fusee-primary.bin")
    if exist "%sd%:\bootloader\payloads\fusee.bin" (del "%sd%:\bootloader\payloads\fusee.bin")
    if exist "%sd%:\bootloader\payloads\sxos.bin" (del "%sd%:\bootloader\payloads\sxos.bin")
    if exist "%sd%:\bootloader\payloads\rajnx_ipl.bin" (del "%sd%:\bootloader\payloads\rajnx_ipl.bin")
    if exist "%sd%:\fusee-secondary.bin" (del "%sd%:\fusee-secondary.bin")
    if exist "%sd%:\atmosphere\fusee-secondary.bin" (del "%sd%:\atmosphere\fusee-secondary.bin")
    if exist "%sd%:\bootloader\ini\Atmosphere.ini" (del "%sd%:\bootloader\ini\Atmosphere.ini")
    if exist "%sd%:\bootloader\ini\atmosphere.ini" (del "%sd%:\bootloader\ini\atmosphere.ini")
    if exist "%sd%:\bootloader\ini\sxos.ini" (del "%sd%:\bootloader\ini\sxos.ini")
    if exist "%sd%:\bootloader\ini\hekate_keys.ini" (del "%sd%:\bootloader\ini\hekate_keys.ini")
    if exist "%sd%:\bootloader\hekate_keys.ini" (del "%sd%:\bootloader\hekate_keys.ini")
    if exist "%sd%:\bootloader\kefir.ini" (del "%sd%:\bootloader\kefir.ini")
    if exist "%sd%:\bootloader\ini\RajNX.ini" (del "%sd%:\bootloader\ini\RajNX.ini")
    if exist "%sd%:\bootloader\updating.bmp" (del "%sd%:\bootloader\updating.bmp")
    
    if exist "%sd%:\license-request.dat" (del "%sd%:\license-request.dat")
    if exist "%sd%:\boot.dat" (del "%sd%:\boot.dat")
    if exist "%sd%:\hekate*.bin" (del "%sd%:\hekate*.bin")
    if exist "%sd%:\hbmenu.nro" (del "%sd%:\hbmenu.nro")
    if exist "%sd%:\keys.dat" (del "%sd%:\keys.dat")
    if exist "%sd%:\BCT.ini" (del "%sd%:\BCT.ini")
    if exist "%sd%:\startup.te" (del "%sd%:\startup.te")
    if exist "%sd%:\hekate_ipl.ini" (del "%sd%:\hekate_ipl.ini")
    
    if exist "%sd%:\bootloader\hekate_ipl.ini" (del "%sd%:\bootloader\hekate_ipl.ini")
    if exist "%sd%:\bootloader\ini\fullstock.ini" (del "%sd%:\bootloader\ini\fullstock.ini")
    if exist "%sd%:\bootloader\update.bin" (del "%sd%:\bootloader\update.bin")
    if exist "%sd%:\bootloader\update.bin.sig" (del "%sd%:\bootloader\update.bin.sig")
    if exist "%sd%:\bootloader\patches_template.ini" (del "%sd%:\bootloader\patches_template.ini")
    if exist "%sd%:\bootloader\patches.ini" (del "%sd%:\bootloader\patches.ini")
    if exist "%sd%:\bootloader\bootlogo.bmp" (del "%sd%:\bootloader\bootlogo.bmp")
    if exist "%sd%:\bootloader\res\icon_payload.bmp" (del "%sd%:\bootloader\res\icon_payload.bmp")
    if exist "%sd%:\bootloader\res\icon_switch.bmp" (del "%sd%:\bootloader\res\icon_switch.bmp")
    if exist "%sd%:\bootloader\payloads\rajnx_ipl.bin" (del "%sd%:\bootloader\payloads\rajnx_ipl.bin")
    if exist "%sd%:\switch\games\hbmenu*.nsp" (del "%sd%:\switch\games\hbmenu*.nsp")
    if exist "%sd%:\switch\lithium" (RD /s /q "%sd%:\switch\lithium")
    if exist "%sd%:\switch\LinkUser" (RD /s /q "%sd%:\switch\LinkUser")
    if exist "%sd%:\switch\KosmosToolbox" (RD /s /q "%sd%:\switch\KosmosToolbox")
    if exist "%sd%:\switch\KosmosUpdater" (RD /s /q "%sd%:\switch\KosmosUpdater")
    if exist "%sd%:\switch\mercury" (RD /s /q "%sd%:\switch\mercury")
    if exist "%sd%:\switch\nxmtp" (RD /s /q "%sd%:\switch\nxmtp")
    if exist "%sd%:\switch\tinfoil\tinfoil.nro" (del "%sd%:\switch\tinfoil\tinfoil.nro")
    if exist "%sd%:\switch\tinfoil\keys.txt" (del "%sd%:\switch\tinfoil\keys.txt")
    if exist "%sd%:\switch\nxmtp.nro" (del "%sd%:\switch\nxmtp.nro")
    if exist "%sd%:\switch\pplay.nro" (del "%sd%:\switch\pplay.nro")
    if exist "%sd%:\switch\NX-SHELL.nro" (del "%sd%:\switch\NX-SHELL.nro")
    if exist "%sd%:\switch\NX-Shell\NX-Shell.nro" (del "%sd%:\switch\NX-Shell\NX-Shell.nro")
    if exist "%sd%:\switch\reboot_to_payload.nro" (del "%sd%:\switch\reboot_to_payload.nro")
    if exist "%sd%:\switch\NxThemesInstaller.nro" (del "%sd%:\switch\NxThemesInstaller.nro")
    if exist "%sd%:\switch\NxThemesInstaller\NxThemesInstaller.nro" (del "%sd%:\switch\NxThemesInstaller\NxThemesInstaller.nro")
    if exist "%sd%:\switch\SXSM.nro" (del "%sd%:\switch\SXSM.nro")
    if exist "%sd%:\switch\sx.nro" (del "%sd%:\switch\sx.nro")
    if exist "%sd%:\switch\n1dus.nro" (del "%sd%:\switch\n1dus.nro")
    if exist "%sd%:\switch\ChoiDujourNX.nro" (del "%sd%:\switch\ChoiDujourNX.nro")
    if exist "%sd%:\switch\ChoiDujourNX\ChoiDujourNX.nro" (del "%sd%:\switch\ChoiDujourNX\ChoiDujourNX.nro")
    if exist "%sd%:\switch\kefirupdater\kefirupdater.nro" (del "%sd%:\switch\kefirupdater\kefirupdater.nro")
    if exist "%sd%:\switch\kefirupdater\kefir-updater.nro" (del "%sd%:\switch\kefirupdater\kefir-updater.nro")
    if exist "%sd%:\switch\kefirupdater.nro" (del "%sd%:\switch\kefirupdater\kefirupdater.nro")
    if exist "%sd%:\switch\kefir-updater.nro" (del "%sd%:\switch\kefirupdater\kefir-updater.nro")
    if exist "%sd%:\switch\daybreak.nro" (del "%sd%:\switch\daybreak.nro")
    if exist "%sd%:\switch\daybreak\daybreak.nro" (del "%sd%:\switch\daybreak\daybreak.nro")
    if exist "%sd%:\switch\kefirupdater\cheats.zip" (del "%sd%:\switch\kefirupdater\cheats.zip")
    if exist "%sd%:\switch\kefirupdater\kefir.zip" (del "%sd%:\switch\kefirupdater\kefir.zip")
    if exist "%sd%:\switch\kefirupdater\firmware.zip" (del "%sd%:\switch\kefirupdater\firmware.zip")
    
    if exist "%sd%:\switch\LinkUser" (RD /s /q "%sd%:\switch\LinkUser\")
    if exist "%sd%:\switch\nxmp" (RD /s /q "%sd%:\switch\nxmp\")
    if exist "%sd%:\switch\dbi.nro" (del "%sd%:\switch\dbi.nro")
    if exist "%sd%:\switch\btpair.nro" (del "%sd%:\switch\btpair.nro")
    if exist "%sd%:\switch\btpair\btpair.nro" (del "%sd%:\switch\btpair\btpair.nro")
    if exist "%sd%:\switch\.DBI.nro.star" (del "%sd%:\switch\.DBI.nro.star")
    if exist "%sd%:\switch\dbi\dbi.nro" (del "%sd%:\switch\dbi\dbi.nro")
    if exist "%sd%:\switch\Lockpick\Lockpick.nro" (del "%sd%:\switch\Lockpick\Lockpick.nro")
    if exist "%sd%:\switch\Lockpick.nro" (del "%sd%:\switch\Lockpick.nro")
    if exist "%sd%:\switch\nxmtp.nro" (del "%sd%:\switch\nxmtp.nro")
    if exist "%sd%:\switch\nxmtp" (RD /s /q "%sd%:\switch\nxmtp\")
    if exist "%sd%:\switch\NX-Activity-Log.nro" (del "%sd%:\switch\NX-Activity-Log.nro")
    if exist "%sd%:\switch\switch-cheats-updater" (RD /s /q "%sd%:\switch\switch-cheats-updater\")
    if exist "%sd%:\switch\FreshHay" (RD /s /q "%sd%:\switch\FreshHay\")
    if exist "%sd%:\switch\nx-ntpc" (RD /s /q "%sd%:\switch\nx-ntpc\")
    if exist "%sd%:\switch\sx" (RD /s /q "%sd%:\switch\sx")
    if exist "%sd%:\switch\incognito.nro" (del "%sd%:\switch\incognito.nro")
    if exist "%sd%:\switch\incognito" (RD /s /q "%sd%:\switch\incognito")
    if exist "%sd%:\switch\ultimate_updater.nro" (del "%sd%:\switch\ultimate_updater.nro")
    if exist "%sd%:\switch\zerotwoxci.nro" (del "%sd%:\switch\zerotwoxci.nro")
    if exist "%sd%:\switch\dOPUS.nro" (del "%sd%:\switch\dOPUS.nro")
    if exist "%sd%:\switch\tinfoil.nro" (del "%sd%:\switch\tinfoil.nro")
    if exist "%sd%:\switch\tinfoil_batch.nro" (del "%sd%:\switch\tinfoil_batch.nro")
    if exist "%sd%:\switch\tinfoil_duckbill.nro" (del "%sd%:\switch\tinfoil_duckbill.nro")
    if exist "%sd%:\switch\tinfoil_usb-fix.nro" (del "%sd%:\switch\tinfoil_usb-fix.nro")
    if exist "%sd%:\switch\ldnmitm_config.nro" (del "%sd%:\switch\ldnmitm_config.nro")
    if exist "%sd%:\switch\ldnmitm_config" (RD /s /q "%sd%:\switch\ldnmitm_config")
    if exist "%sd%:\pegascape" (RD /s /q "%sd%:\pegascape")
    if exist "%sd%:\switch\fakenews-injector.nro" (del "%sd%:\switch\fakenews-injector.nro")
    if exist "%sd%:\switch\gag-order.nro" (del "%sd%:\switch\gag-order.nro")
    if exist "%sd%:\games\hbgShop*.nsp" (del "%sd%:\games\hbgShop_forwarder_classic.nsp")
    if exist "%sd%:\games\Tinfoil*.nsp" (del "%sd%:\games\hbgShop_forwarder_dark_v3.nsp")
    if exist "%sd%:\switch\fakenews-injector" (RD /s /q "%sd%:\switch\fakenews-injector")
    if exist "%sd%:\sxos\sx" (RD /s /q "%sd%:\sxos\sx")
    if exist "%sd%:\switch\.packages\Semi-stock" (RD /s /q "%sd%:\switch\.packages\Semi-stock")
    if exist "%sd%:\config\uberhand\packages\oc_bkp\oc.ini" (RD /s /q "%sd%:\config\uberhand\packages\oc_bkp\oc.ini")
    if exist "%sd%:\config\uberhand\packages\oc" (RD /s /q "%sd%:\config\uberhand\packages\oc")
    
    if exist "%sd%:\firmware" (RD /s /q "%sd%:\firmware")
    if exist "%sd%:\config\kefir-updater\firmware.zip" (del "%sd%:\config\kefir-updater\firmware.zip")
    if exist "%sd%:\config\kefir-updater\atmo.zip" (del "%sd%:\config\kefir-updater\atmo.zip")
    if exist "%sd%:\config\kefir-updater\*.zip" (del "%sd%:\config\kefir-updater\*.zip")
    if exist "%sd%:\config\uberhand\packages\settings\8gb.txt" (del "%sd%:\config\uberhand\packages\settings\8gb.txt") 
    
    if exist "%sd%:\bootloader\nyx.ini" (
    	copy "%sd%:\bootloader\nyx.ini" "%sd%:\bootloader\nyx.bkp"
    	)
    
    @REM if exist "%sd%:\config\uberhand\packages\settings\stock" (set emu=0) 
    
    if exist "%sd%:\config\uberhand\packages\settings\stock" (del "%sd%:\config\uberhand\packages\settings\stock")
    if exist "%sd%:\atmosphere\config\system_settings_emu.ini" (del "%sd%:\atmosphere\config\system_settings_emu.ini")
    if exist "%sd%:\emummc\emummc.ini_bkp" (
    	copy "%sd%:\emummc\emummc.ini_bkp" "%sd%:\emummc\emummc.ini"
    	del "%sd%:\emummc\emummc.ini_bkp"
    )
    
    
    echo ------------------------------------------------------------------------
    echo.
    echo                             Installing                   
    echo.
    echo ------------------------------------------------------------------------
    
    xcopy "%~dp0*" "%sd%:\" /H /Y /C /R /S /E
    
    if %oc%==1 (
        xcopy "%sd%:\config\uberhand\packages\oc\*" "%sd%:\" /H /Y /C /R /S /E /I /F
    ) else (
        if exist "%sd%:\atmosphere\contents\00FF0000636C6BFF\" (RD /s /q "%sd%:\atmosphere\contents\00FF0000636C6BFF\")
        if exist "%sd%:\atmosphere\kips\kefir.kip" (del "%sd%:\atmosphere\kips\kefir.kip")
        if exist "%sd%:\atmosphere\kips\loader.kip" (del "%sd%:\atmosphere\kips\loader.kip")
        if exist "%sd%:\switch\.overlays\sys-clk-overlay.ovl" (del "%sd%:\switch\.overlays\sys-clk-overlay.ovl")
    )
    
    RD /s /q "%sd%:\oc"
    
    if exist "%sd%:\hekate_ctcaer_*.bin" (del "%sd%:\hekate_ctcaer_*.bin")
    
    if exist "Y:\Switch\\addons\themes" (xcopy "Y:\Switch\\addons\themes\*" "%sd%:\themes" /H /Y /C /R /S /E /I)
    if exist "Y:\Switch\\addons\atmosphere" (xcopy "Y:\Switch\\addons\atmosphere\*" "%sd%:\atmosphere" /H /Y /C /R /S /E /I)
    
    if exist "%sd%:\.git" (RD /s /q "%sd%:\.git")
    
    if exist "%sd%:\bootloader\nyx.bkp" (
    	copy "%sd%:\bootloader\nyx.bkp" "%sd%:\bootloader\nyx.ini"
    	del "%sd%:\bootloader\nyx.bkp"
    	)
    
    if %pegascape%==0 (
    	if exist "%sd%:\pegascape" (RD /s /q "%sd%:\pegascape")
    	)
    
    if %bootdat%==0 (
    	if exist "%sd%:\boot.dat" (del "%sd%:\boot.dat")
    	if exist "%sd%:\boot.ini" (del "%sd%:\boot.ini")
    	)
    
    if exist "%sd%:\switch\DBI\dbi.config_" (
        del "%sd%:\switch\DBI\dbi.config"
        rename %sd%:\switch\DBI\dbi.config_ dbi.config
        )
    
    @REM if exist "%sd%:\switch\tinfoil\locations.bkp" (
    @REM     del "%sd%:\switch\tinfoil\locations.conf"
    @REM     rename %sd%:\switch\tinfoil\locations.bkp locations.conf
    @REM     )
    
    echo ------------------------------------------------------------------------
    echo.
    echo                              Fix atributes                              
    echo.
    echo ------------------------------------------------------------------------
    echo.
    
    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstor\11ECA7E0 /v MaximumTransferLength /t REG_DWORD /d 00100000 /f>nul 2>&1
    if exist "%sd%:\TinGen" (RD /s /q "%sd%:\TinGen")
    
    if exist "%sd%:\kefir" (RD /s /q "%sd%:\kefir")
    if exist "%sd%:\switch\kefir-updater\startup.te" (del "%sd%:\switch\kefir-updater\startup.te")
    if exist "%sd%:\switch\kefir-updater\update.te" (del "%sd%:\switch\kefir-updater\update.te")
    
    if exist "%sd%:\startup.te" (del "%sd%:\startup.te")
    
    if exist "%sd%:\bootloader\hekate_ipl.ini" (del "%sd%:\bootloader\hekate_ipl.ini")
    if exist "%sd%:\bootloader\hekate_ipl_.ini" (copy %sd%:\bootloader\hekate_ipl_.ini %sd%:\bootloader\hekate_ipl.ini /Y)>nul 2>&1
    
    if exist "%sd%:\bootloader\hekate_ipl_.ini" (del "%sd%:\bootloader\hekate_ipl_.ini")
    if exist "%sd%:\bootloader\ini\*kefir_updater.ini" (del "%sd%:\bootloader\ini\*kefir_updater.ini")
    if exist "%sd%:\bootloader\res\ku.bmp" (del "%sd%:\bootloader\res\ku.bmp")
    if exist "%sd%:\switch\kefirupdater\kefir-updater.bin" (del "%sd%:\switch\kefirupdater\kefir-updater.bin")
    if exist "%sd%:\switch\kefirupdater\startup.te" (del "%sd%:\switch\kefirupdater\startup.te")
    if exist "%sd%:\install.bat" (del "%sd%:\install.bat")
    if exist "%sd%:\bootloader\nyx.ini_" (del "%sd%:\bootloader\nyx.ini_")
    if exist "%sd%:\switch\kefirupdater" (RD /s /q "%sd%:\switch\kefirupdater")
    
    if %syscon%==0 (
    	del "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag"
    	)
    
    if %missioncontrol%==0 (
    	del "%sd%:\atmosphere\contents\010000000000bd00\flags\boot2.flag"
    	)
    
    if exist "%sd%:\atmosphere\contents\0100000000000352\flags\boot2.flag" (del "%sd%:\atmosphere\contents\0100000000000352\flags\boot2.flag")
    
    if exist "%sd%:\atmosphere" (
    	attrib -A -H /S /D %sd%:\atmosphere\*
    	attrib -A -H %sd%:\atmosphere)
    if exist "%sd%:\atmosphere\contents" (
    	attrib -A -H /S /D %sd%:\atmosphere\contents\*
    	attrib -A -H %sd%:\atmosphere\contents)
    if exist "%sd%:\bootloader" (
    	attrib -A -H /S /D %sd%:\bootloader\*
    	attrib -A -H %sd%:\bootloader)
    if exist "%sd%:\config" (
    	attrib -A -H /S /D %sd%:\config\*
    	attrib -A -H %sd%:\config)
    if exist "%sd%:\switch" (
    	attrib -A -H /S /D %sd%:\switch\*
    	attrib -A -H %sd%:\switch)
    if exist "%sd%:\games" (
    	attrib -A -H /S /D %sd%:\games\*
    	attrib -A -H %sd%:\games)
    if exist "%sd%:\themes" (
    	attrib -A -H /S /D %sd%:\themes\*
    	attrib -A -H %sd%:\themes)
    if exist "%sd%:\hbmenu.nro" (attrib -A -H %sd%:\hbmenu.nro)
    if exist "%sd%:\boot.dat" (attrib -A -H %sd%:\boot.dat)
    if exist "%sd%:\payload.bin" (attrib -A -H %sd%:\payload.bin)
    if exist "%sd%:\pegascape" (
    	attrib -A -H /S /D %sd%:\pegascape\*
    	attrib -A -H %sd%:\pegascape)
    
    goto end
    
    :WRONGSD
    cls
    COLOR C
    
    
    ECHO ----------------------------------------------------------
    ECHO ======            Choosed SD letter is: %sd%:/          =====
    ECHO ======       There is no SD card in drive %sd%:/        =====
    ECHO ----------------------------------------------------------
    ECHO.
    ECHO. 
    ECHO            1.  The card letter is correct
    ECHO            2.  Choose another card letter
    ECHO.
    ECHO ==========================================================
    ECHO                                              Q.  Exit
    ECHO.
    
    set st=
    set /p st=:
    
    for %%A in ("Y" "y" "1" "н" "Н") do if "%st%"==%%A (GOTO main)
    for %%A in ("N" "n" "2" "т" "Т") do if "%st%"==%%A (GOTO newcard)
    for %%A in ("Q" "q" "Й" "й") do if "%st%"==%%A (GOTO END)
    
    :END
    echo. 
    cls
    COLOR 2
    echo ------------------------------------------------------------------------
    echo                            All Done
    echo ------------------------------------------------------------------------
    echo. 
    echo. 
    echo Press any button for exit
    
    
    if exist "%wd%" (RD /s /q "%wd%\*")
    pause>nul 2>&1
    exit

    Этот скрипт на языке Batch предназначен для управления файлами на SD-карте, для установки kefir. Статья написано нейросетью.


    Первый блок | Подготовка

    Описание работы этапа

    1. Настройка окружения:

    @echo off
    chcp 866 >nul 2>&1
    COLOR 0F
    • @echo off: Отключает отображение команд в консоли.
    • chcp 866 >nul 2>&1: Устанавливает кодировку консоли на CP866 (кириллица).
    • COLOR 0F: Устанавливает цвет консоли: черный фон (0), белый текст (F).

    2. Переменные конфигурации:

    set wd=%temp%\sdfiles
    set clear=0
    set cfw=ATMO
    set cfwname=Atmosphere
    set theme_flag=0
    set theme=0
    set syscon=1
    set missioncontrol=1
    set bootdat=1
    set payloadbin=1
    set pegascape=1
    set oc=0
    set emu=1
    
    • wd: Путь для временных файлов (%temp% — системная папка для временных файлов).
    • Остальные переменные хранят настройки для проверки:
      • cfw и cfwname: Указывают на используемую прошивку (Atmosphere).
      • syscon, missioncontrol, bootdat: Переключатели для функций прошивки (например, поддержка MissionControl).
      • pegascape: Флаг для проверки наличия Pegascape.
      • oc: Указывает на разгон (overclocking).
      • emu: Указывает на использование эмулятора.

    3. Проверка аргумента командной строки:

    set sd=%1
    if not defined %sd% (GOTO main)
    • set sd=%1: Берет первый аргумент командной строки как букву диска SD-карты.
    • if not defined %sd%: Если аргумент не указан, переходит к метке main.

    4. Выбор SD-карты:

    :newcard
    COLOR 0F
    cls
    echo Choose mounted SD card letter
    • newcard: Метка для повторного выбора SD-карты.
    • Очищает консоль и предлагает выбрать букву диска.

    5. Перебор подключенных SD-карт:

    for /f "tokens=3-6 delims=: " %%a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size^,filesystem^,description ^| FINDSTR /I "Removable" ^| findstr /i "exfat fat32"') do (
        ...
    )
    • WMIC LOGICALDISK: Команда для получения списка подключенных дисков.
      • Фильтруются только съемные носители с файловыми системами exfat или fat32.
    • for: Итерация по данным:
      • %%a — Файловая система (exFAT, FAT32).
      • %%b — Свободное место.
      • %%c — Буква диска.
      • %%d — Общий объем диска.
    • cscript: Создает и запускает временный скрипт tmp.vbs, чтобы вывести информацию в удобочитаемом формате.
    • Если SD-карта найдена, выводится информация.

    6. Проверка SD-карты:

    set /P sd="Enter SD card letter: "
    if "%sd%"=="" goto :eof
    
    if not exist "%sd%:\" (
    	set word=        There is no SD card in %sd%-drive         
    	goto WRONGSD
    ) else (
    	if not exist "%sd%:\*" (goto WRONGSD)
    )
    • set /P: Ждет ввода буквы SD-карты.
    • if not exist: Проверяет, существует ли указанный диск и есть ли на нем файлы.

    7. Проверка файлов и настроек на SD-карте:

    :main
    
    if not exist "%sd%:\pegascape" (if exist "%sd%:\atmosphere" (set pegascape=0))
    if not exist "%sd%:\boot.dat" (if exist "%sd%:\atmosphere" (set bootdat=0))
    if not exist "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag" (set syscon=0)
    if not exist "%sd%:\atmosphere\contents\010000000000bd00\flags\boot2.flag" (set missioncontrol=0)
    if exist "%sd%:\switch\DBI\dbi.config" (rename %sd%:\switch\DBI\dbi.config dbi.config_)
    if not exist "%sd%:\switch\tinfoil\locations.bkp" (
    	if exist "%sd%:\switch\tinfoil\locations.conf" (rename %sd%:\switch\tinfoil\locations.conf locations.bkp)
    )
    if exist "%sd%:\bootloader\loader.kip" (set oc=1)
    
    • if not exist: Проверяет наличие определенных файлов/папок:
      • pegascape: Если папка pegascape отсутствует, а atmosphere существует, флаг pegascape сбрасывается.
      • boot.dat: Проверяет, используется ли Hekate загрузчик.
      • syscon, missioncontrol: Проверяет флаги для дополнительных функций.
    • rename: Переименовывает файлы конфигурации:
      • DBI: Резервирует файл dbi.config.
      • Tinfoil: Резервирует файл locations.conf как locations.bkp.
    • oc: Если файл loader.kip найден, это означает включение разгона (overclocking).

    8. Закомментированные строки:

    @REM set missioncontrol=0
    @REM set syscon=0
    
    • Эти строки закомментированы и, видимо, использовались для отладки.

    Скрипт в целом выполняет следующие задачи:

    1. Находит съемный диск (SD-карту) с правильной файловой системой.
    2. Проверяет наличие ключевых файлов/папок, чтобы определить состояние и настройки SD-карты.
    3. Делает резервное копирование или переименование некоторых конфигурационных файлов.
    4. Обновляет переменные, которые используются для последующей работы с SD-картой.

    Второй блок | Удаляет старые файлы

    Описание работы этапа

    Этот скрипт выполняет очистку различных директорий и файлов на SD-карте, а также удаляет и переименовывает некоторые файлы и папки, связанные с Atmosphere, SXOS и другими программами.

    Вот основные шаги, которые выполняет скрипт:

    1. Удаление старых пакетов и папок:
      • Папки, связанные с Atmosphere, такими как exefs_patches, kip_patches, hekate_kips и другие, удаляются с помощью команды RD /s /q, которая рекурсивно удаляет папки и все их содержимое без подтверждения.
    2. Переименование папок:
      • Некоторые папки, такие как titles, title, и content в atmosphere, переименовываются в contents.
    3. Удаление файлов, связанных с отчётами и конфигурациями:
      • Удаляются файлы отчётов, таких как erpt_reports, fatal_reports, fatal_errors, а также различные .bin файлы и другие файлы конфигурации.
    4. Удаление специфических файлов:
      • Удаляются различные бинарные файлы и конфигурационные файлы, такие как fusee-secondary.bin, hekate_keys.ini, bootloader.ini, и другие, которые могут быть связаны с загрузчиками и payloads.
    5. Копирование данных:
      • Если существует папка sxos\sxos, она копируется в папку sxos, при этом сохраняются все вложенные файлы и подкаталоги.
    6. Удаление всех файлов, связанных с определёнными приложениями:
      • Скрипт также удаляет различные файлы, такие как hbmenu.nro, NxThemesInstaller.nro, и другие, которые могут быть использованы для запуска Homebrew и других модификаций на Switch.
    7. Удаление каталогов и файлов, относящихся к конкретным приложениям или модулям:
      • Скрипт удаляет папки, такие как lithium, KosmosToolbox, и другие, а также файлы с расширением .nro или .txt, которые могут быть связаны с модификациями или инструментами для Switch.

    Этот скрипт используется для очистки старых или ненужных файлов с SD-карты, которые могут возникать при обновлении или изменении прошивки на Switch, или при удалении старых установленных модификаций.

    Основная цель скрипта — подготовить устройство для нового ПО или обновления, удалив старые файлы, которые могут конфликтовать с новыми версиями.

    Третий блок | Устанавливает новые файлы

    Описание работы этапа


    1. Вывод баннера установки

    echo ------------------------------------------------------------------------
    echo.
    echo                             Installing                   
    echo.
    echo ------------------------------------------------------------------------
    

    Этот блок выводит на экран разделительную строку и текст Installing, указывая, что начинается процесс установки.


    2. Копирование всех файлов из текущей директории на SD-карту

    xcopy "%~dp0*" "%sd%:\" /H /Y /C /R /S /E
    
    • %~dp0 — путь к текущей папке, где находится скрипт.
    • %sd%:\ — путь к корневой директории SD-карты.
    • Параметры xcopy:
      • /H — копирует скрытые файлы.
      • /Y — подавляет запрос на подтверждение перезаписи файлов.
      • /C — продолжает копирование даже при возникновении ошибок.
      • /R — позволяет перезаписывать файлы только для чтения.
      • /S — копирует папки и их содержимое, включая вложенные.
      • /E — копирует пустые папки.

    Этот шаг копирует все файлы из текущей папки на SD-карту.


    3. Копирование “разгонного” профиля (если найдено определенное содержимое)

    if %oc%==1 (
        xcopy "%sd%:\config\uberhand\packages\oc\*" "%sd%:\" /H /Y /C /R /S /E /I /F
    )
    
    • Проверяется переменная %oc%. Если она равна 1 (включена поддержка разгона), файлы из папки \config\uberhand\packages\oc\ на SD-карте копируются в корневую директорию карты.

    4. Удаление файлов, если разгон не используется

    else (
        if exist "%sd%:\atmosphere\contents\00FF0000636C6BFF\" (RD /s /q "%sd%:\atmosphere\contents\00FF0000636C6BFF\")
        if exist "%sd%:\atmosphere\kips\kefir.kip" (del "%sd%:\atmosphere\kips\kefir.kip")
        if exist "%sd%:\atmosphere\kips\loader.kip" (del "%sd%:\atmosphere\kips\loader.kip")
        if exist "%sd%:\switch\.overlays\sys-clk-overlay.ovl" (del "%sd%:\switch\.overlays\sys-clk-overlay.ovl")
    )
    
    • Если %oc% не равна 1, удаляются различные файлы, связанные с разгоном:
      • Папка с содержимым для разгона.
      • Файлы kefir.kip и loader.kip (модули для Atmosphere).
      • Файл sys-clk-overlay.ovl, связанный с оверлеем для управления частотами.

    5. Удаление папки oc

    RD /s /q "%sd%:\oc"
    

    Удаляется папка oc с разгонными профилями (если она существует).


    6. Удаление файла hekate_ctcaer_*.bin

    if exist "%sd%:\hekate_ctcaer_*.bin" (del "%sd%:\hekate_ctcaer_*.bin")
    

    Удаляются файлы загрузчика Hekate (имя начинается с hekate_ctcaer_).


    7. Копирование тем и файлов Atmosphere из указанной директории

    if exist "Y:\Switch\\addons\themes" (xcopy "Y:\Switch\\addons\themes\*" "%sd%:\themes" /H /Y /C /R /S /E /I)
    if exist "Y:\Switch\\addons\atmosphere" (xcopy "Y:\Switch\\addons\atmosphere\*" "%sd%:\atmosphere" /H /Y /C /R /S /E /I)
    

    Если в диске Y:\Switch\addons существуют папки themes и atmosphere, их содержимое копируется на SD-карту.


    8. Удаление папки .git

    if exist "%sd%:\.git" (RD /s /q "%sd%:\.git")
    

    Если на SD-карте есть папка .git (возможно, она попала туда случайно), она удаляется.


    9. Восстановление файла nyx.ini

    if exist "%sd%:\bootloader\nyx.bkp" (
        copy "%sd%:\bootloader\nyx.bkp" "%sd%:\bootloader\nyx.ini"
        del "%sd%:\bootloader\nyx.bkp"
    )
    

    Если файл резервной копии nyx.bkp существует, он восстанавливается как nyx.ini. Затем резервная копия удаляется.


    10. Удаление папки pegascape, если она не используется

    if %pegascape%==0 (
        if exist "%sd%:\pegascape" (RD /s /q "%sd%:\pegascape")
    )
    

    Если Pegascape отключен (%pegascape% равен 0), папка pegascape удаляется.


    11. Удаление файлов boot.dat и boot.ini, если они не нужны

    if %bootdat%==0 (
        if exist "%sd%:\boot.dat" (del "%sd%:\boot.dat")
        if exist "%sd%:\boot.ini" (del "%sd%:\boot.ini")
    )
    

    Если переменная %bootdat% равна 0, файлы boot.dat и boot.ini удаляются.


    12. Восстановление файла dbi.config

    if exist "%sd%:\switch\DBI\dbi.config_" (
        del "%sd%:\switch\DBI\dbi.config"
        rename %sd%:\switch\DBI\dbi.config_ dbi.config
    )
    

    Если временный файл dbi.config_ существует, он восстанавливается как dbi.config.


    Закомментированные строки

    @REM if exist "%sd%:\switch\tinfoil\locations.bkp" (
    @REM     del "%sd%:\switch\tinfoil\locations.conf"
    @REM     rename %sd%:\switch\tinfoil\locations.bkp locations.conf
    @REM     )
    

    Этот блок закомментирован. Предположительно, он восстанавливал файл конфигурации locations.conf из резервной копии.


    Итог

    Скрипт:

    1. Копирует файлы на SD-карту.
    2. Настраивает кастомные конфигурации для прошивки Atmosphere.
    3. Удаляет ненужные файлы.
    4. Восстанавливает или обновляет важные файлы.

    Четвертый блок | Исправление атрибутов файлов и завершение установки

    Описание работы этапа

    1. Раздел “Fix attributes”

    Этот раздел отвечает за приведение атрибутов файлов и папок на SD-карте в стандартное состояние, удаляя скрытые (-H) или архивные (-A) атрибуты у файлов и папок.

    Примеры:

    • Если папка atmosphere существует, все её файлы и подпапки теряют атрибуты скрытости: attrib -A -H /S /D %sd%:\atmosphere\* attrib -A -H %sd%:\atmosphere
    • Аналогичные операции выполняются для других директорий: bootloader, config, switch, games, themes, и других.

    2. Удаление ненужных файлов и папок

    Скрипт удаляет специфические файлы и папки, которые, видимо, уже не нужны, либо являются временными файлами предыдущих настроек:

    • Удаление файлов, связанных с kefir: if exist "%sd%:\kefir" (RD /s /q "%sd%:\kefir")
    • Удаление файлов конфигурации для hekate: if exist "%sd%:\bootloader\hekate_ipl.ini" (del "%sd%:\bootloader\hekate_ipl.ini")
    • Удаление флагов, связанных с конкретными модулями: if %syscon%==0 ( del "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag" )

    3. Изменение конфигурации

    Некоторые файлы заменяются или переименовываются для восстановления конфигурации:

    • Переименование резервных копий: if exist "%sd%:\bootloader\hekate_ipl_.ini" ( copy %sd%:\bootloader\hekate_ipl_.ini %sd%:\bootloader\hekate_ipl.ini /Y ) del "%sd%:\bootloader\hekate_ipl_.ini"

    4. Удаление временных файлов

    Скрипт удаляет временные файлы, такие как install.bat или резервные конфигурации:

    if exist "%sd%:\install.bat" (del "%sd%:\install.bat")
    

    5. Обработка ошибки “Неправильная SD-карта”

    Если SD-карта не найдена или задана неверная буква диска, отображается сообщение с предложением выбрать другую букву:

    :WRONGSD
    cls
    COLOR C
    
    ECHO ----------------------------------------------------------
    ECHO ======            Choosed SD letter is: %sd%:/          =====
    ECHO ======       There is no SD card in drive %sd%:/        =====
    ECHO ----------------------------------------------------------
    ECHO.
    ECHO. 
    ECHO            1.  The card letter is correct
    ECHO            2.  Choose another card letter
    
    • В зависимости от ввода пользователя (1, 2 или Q), выполняются соответствующие действия:
      • 1: Вернуться в основное меню.
      • 2: Выбрать другую SD-карту.
      • Q: Выход из программы.

    6. Завершение работы

    Когда все операции завершены, скрипт очищает временную директорию и завершает выполнение:

    if exist "%wd%" (RD /s /q "%wd%\*")
    pause>nul 2>&1
    exit
    

    Основные функции скрипта:

    1. Подготовка SD-карты:
      • Удаление ненужных файлов и папок.
      • Восстановление важных конфигурационных файлов.
      • Обновление атрибутов всех файлов и папок.
    2. Управление ошибками:
      • Проверка наличия SD-карты.
      • Интерактивное меню для исправления ошибок.
    3. Гибкость настроек:
      • Скрипт поддерживает разные режимы (например, использование или отключение syscon или missioncontrol).

    Этот скрипт подходит для автоматизации процесса подготовки SD-карт для использования в устройствах, где требуется строгая структура папок и файлов.

  • Почему нужно отмывать флюс при установки PicoFLY?

    1. Электрическая проводимость и утечки тока

    • Остатки флюса, особенно если он активный (например, канифоль с кислотными добавками), могут быть токопроводящими. Это может привести к утечкам тока, что особенно критично для высокочувствительных цепей или высоковольтного оборудования.

    2. Коррозия

    • Активные компоненты флюса (кислоты, активаторы) могут оставаться на поверхности платы, вызывая коррозию проводников, пайки и контактов. Это снижает долговечность устройства и может привести к поломке.

    3. Эстетика

    • Остатки флюса оставляют липкие или белые разводы на плате, что делает изделие неаккуратным. Для серийного производства и презентации клиентам чистая плата выглядит профессиональнее.

    4. Совместимость с защитным покрытием

    • Если после пайки на плату наносится защитный лак или герметик, остатки флюса могут препятствовать адгезии покрытия. Это снижает эффективность защиты платы от влаги, пыли и других факторов.

    5. Снижение надежности соединений

    • Некачественно очищенный флюс может повлиять на механическую прочность пайки и создать дефекты, например, из-за того, что активные остатки со временем могут разъедать спайки.

    Какой флюс можно не отмывать?

    • Некоторые флюсы, например, безотмывочные (No-Clean Flux), специально разработаны так, чтобы не требовать отмывки. Однако даже их иногда рекомендуется очищать, если устройство будет работать в сложных условиях (высокая влажность, перепады температуры).

    Чем отмывают флюс?

    • Изопропиловым спиртом (ИПС) – универсальный растворитель для большинства флюсов.
    • Специальными смывками для флюса – подходят для сложных или кислотных флюсов.
    • Ультразвуковыми ваннами – эффективны для очистки сложных плат.

    Итог

    Отмывка флюса — это залог надежной, долговечной и эстетически аккуратной платы. Даже если используемый флюс заявлен как “безотмывочный”, стоит учитывать условия эксплуатации устройства и требуемую надежность.

    Почему нельзя использовать паяльную кислоту? При установки PicoFLY

    Использование паяльной кислоты при пайке микросхем и плат в игровых приставках категорически не рекомендуется по следующим причинам:


    1. Высокая коррозионная активность

    Паяльная кислота содержит агрессивные химические вещества, которые предназначены для удаления окислов с поверхностей, таких как сталь или медь. Однако после пайки остатки кислоты остаются на плате и со временем вызывают коррозию:

    • Коррозия дорожек и контактов: Кислота разъедает тонкие медные дорожки, что может привести к обрыву цепей.
    • Разрушение пайки: Паяльные соединения становятся хрупкими и подверженными разрушению.

    2. Повышенная токопроводимость

    Остатки паяльной кислоты токопроводящие. Это может привести к:

    • Коротким замыканиям между контактами.
    • Утечкам тока, особенно в высокочувствительных или высокочастотных цепях.

    3. Негативное воздействие на компоненты

    Микросхемы и другие компоненты игровых приставок чувствительны к химическим воздействиям:

    • Паяльная кислота может повредить изоляционные слои компонентов.
    • Она может разрушить пластик корпуса микросхем или разъедать выводы.

    4. Нарушение долговечности устройства

    Использование паяльной кислоты снижает надежность и срок службы устройства. Даже если пайка изначально выглядит качественной, коррозия и утечки тока со временем приведут к сбоям, а затем и к поломке приставки.


    5. Требования к отмывке

    Паяльная кислота требует тщательной и сложной отмывки. Если плата не будет идеально очищена (например, с использованием специальных растворов и ультразвуковой ванны), остатки кислоты неизбежно вызовут вышеупомянутые проблемы.


    Рекомендуемые альтернативы

    Для пайки микросхем и плат используйте:

    • Канифоль – классический безопасный флюс, не вызывающий коррозии.
    • Флюсы на основе спирта – легко смываются и безопасны для электроники.
    • Безотмывочные флюсы (No-Clean Flux) – если нет возможности отмывать плату.

    Итог

    Паяльная кислота предназначена для пайки крупных металлических объектов, таких как трубы или стальные детали, но не подходит для деликатной электроники, такой как игровые приставки. Используйте специализированные флюсы, чтобы сохранить работоспособность и надежность устройства.

  • Ошибка 2123-0011

    Во время создания EmuNAND вы не отключили облачные сохранения.

    1. Загрузитесь в официальную прошивку и отключите в настройках приставки облачные сохранения (настройки -> управление данными -> облачное хранилище -> настройки), если они включены. Если не включены, то пропустите этот пункт
      • Если вы пропустили этот пункт и у вас были включены облачные сохранения, то в эмунанде при запуске игр будет вылетать ошибка, чтобы её устранить, в эмунанде через DBI удалите аккаунт на котором появляется ошибка через DBI (homebrew) > Tools > Delete account , после чего создайте новый с тем же именем.

    Подробнее: nswtl.info