2022年12月20日 星期二

Atmosphere整合包:內核包 + 擴展包

1. 內核包 = Atmosphere + Hekate + Sigpatch

hekate解析fss0 引導的區別 + 原版fusee引導。

Atmosphere = 破解ns系統權限,例:開啟相簿裡的nro。

Hekate = 強大可自定義的bootloader,破解開機引導。

Sigpatch = 允許非官方的nsp遊戲與nsp前端軟體。

2. Sigpatch常識

Sigpatch是基於大氣層內核的外掛補丁,目前應該有4部分,均跟著ns系統大版本走。

2.1 es插件: 位於atmosphere/exefs_patches/es_patches/

2.2 fs插件: 位於atmosphere/kip_patches/fs_patches/

es/fs插件原本是tx小組發明,後被人提取出來給大氣層作為外掛插件使用。

es/fs插件必須齊全,否則可能某些低版本的遊戲就無法運行。

2.3 loader插件: 位於atmosphere/kip_patches/loader_patches/

loader插件只對應當前大氣層內核,也就是1個就行。

對於fss0引導和fusee引導的大氣層來說,位於kip_patches/下的插件將通過bootloader/patches.ini存放並交給hekate解析便於管理。

而位於exefs_patches/下的插件,fss0 和fusee兩種引導的大氣層都一樣。所以用什麼引導只需要有對應什麼sigpatch就行。

2.4 nfim ctest 插件,位於atmosphere/exefs_patches/nfim_ctest/,

可有可無,可能是繞過任天堂服務器的聯網驗證。

3. 內核包整合(請參考前篇Set up Atmosphere with EmuNAND on Mariko)

3.1 整合過程

3.1.1 下載最新的atmosphere、hekate 和sigpatch

解壓atmosphere-1.4.0-master-36a33617a+hbl-2.4.3+hbmenu-3.5.1.zip + fusee.bin + hekate_ctcaer_6.0.0_Nyx_1.5.0 放在同資料夾,最後把sigpatch解壓縮覆蓋。

fusee.bin,放到bootloader/payloads/下。

3.1.2 atmosphere配置的template位於atmosphere/config_template/下的模板,可以轉移到atmosphere/config/下。文後附配置參考。

system_settings.ini = 大氣層內核重要配置

stratosphere.ini = 主要防止遊戲卡槽熔斷,不需要kip 補丁

override_config.ini = 涉及hbmenu 的設置

hekate_ipl.ini = fss0 引導與fusee 引導的配置作參考。

3.1.3整合注意幾個要點

----對於fss0 引導,讓sigpatch 生效,hekate_ipl.ini 中要添加kip1patch=nosigchk參數。

----建議最新版hekate.bin重命名reboot_payload.bin 並放到atmosphere/下覆蓋替換原由fusee.bin 重命名的reboot_payload.bin。

----建議最新的lockpick_rcm.bin(提取本機prod.key)和tegraexplorer.bin(提取固件)存放至bootloader/payloads/下。

4. Tesla平台和ovl插件的基本常識

4.1 mod路徑插件大氣層插件路徑atmosphere/contents/, 只是其中一種mod插件,還有常見的missioncontrol和sys-con等插件。

----這些插件是伴隨著cfw破解引導進駐內存,所以有可能因為插件版本不兼容新的ns系統與大氣層內核導致卡logo等引導失敗。

----但可以通過刪除atmosphere/contents/某插件titleid/flags/中的空文件boot2.flag實現禁止該插件開機後加載進內存,這樣就算插件版本低也不會出現問題。

----例:舊版missioncontrol 插件,你刪除該插件boot2.flag之後即使系統升級和大氣層內核更新,開機也沒事。

----所以除tesla 插件外,建議其它插件不用開啟,就算要用也只需deepsea工具箱裡開啟一下就行,有些插件開啟後需要重啟生效。

----當然系統主題mod只能刪除或者重命名對應titleid 才行。那些金手指代碼或遊戲漢化補丁等插件,因為使用遊戲titleid,所以不影響系統。

4.2 Tesla平台

Tesla平台等於在屏幕上懸浮菜單實現各種實時功能,由edizon 金手指作者WerWolv發布,實現免相簿直接開啟修改菜單。並延伸各種功能,你可以把Tesla平台看作ovl插件的管理平台,視同相簿hbmenu。但tesla平台就是下面三個核心組件構成:

(1)nx-ovlloader,位於atmosphere/contents/420000000007E51A,顧名思義ovl加載器,目的是隨著大氣層破解自動加載駐留內存。

(2)tesla-menu,位於switch/.overlays/ovlmenu.ovl 是人機交互界面。

(3)ovl-Sysmodules,位於switch/.overlays/ovlSysmodules.ovl相當於第三方ovl插件的管理端口,類似deepsea工具箱後台插件管理。

有了tesla 平台,nro 開發者可再開發個ovl版本,比如edizon作者就發布ovlEdiZon.ovl,儘管功能不如edizon.nro多,但實際體驗不錯。

Tesla 插件默認(L+Ddown+RS)三鍵開啟菜單,但config/tesla/config.ini中可以配置快捷鍵key_combo = 實現自定義。

4.3 第三方ovl插件

兩個常用的sys-clk-overlay.ovl(超頻管理)和fastCFWswitch.ovl(重啟引導管理)。

5. NRO 自製軟體基本常識

5.1 目前xci/nsp 安裝器大致分這幾類:

tinfoil、dbi、goldleaf和一堆以awoo installer為源碼的寨版安裝器這四類。

5.2 deepsea 工具箱(包括kosmos工具箱,hekate工具箱等是同源),

它主要4 個功能

(1)mod路徑插件的後台管理開關,類似ovlSysmodules.ovl

(2)配置bootloader/hekate_ipl.ini 中的autoboot 啟動選項

(3)配置atmosphere/config/override_config.ini 中的快捷鍵

5.3

checkpoint/jksv是常用的ns遊戲存檔管理器,當然比如tinfoil和edizon等也含類似功能,注意checkpoint3.75 是大氣層作者為適配新版大氣層內核做的兼容版,需要APP模式才能運行,此外注意導出的存檔路徑和格式。

5.4

nro在applet mode下運行權限較小。所以有些自製軟件,比如awoo、atmoxl、tinleaf等安裝整合版xci的時候,需要按住R點擊某個遊戲後進入application mode下運行nro獲得較高的系統權限。

當然你也可以安裝萬能前端hbmenu.nsp。

6. 部分設定檔說明(僅供參考)

6.1 atmosphere/config/system_settings.ini

[usb]

usb30_force_enabled = u8!0x1(強制開usb3.0,建議開啟適用dbi)

[eupld]

upload_enabled = u8!0x0

[ro]

ease_nro_restriction = u8!0x0

[lm]

enable_sd_card_logging = u8!0x1(無所謂,改成0x0 也無妨)

sd_card_log_output_directory = str!atmosphere/binlogs

[atmosphere]

fatal_auto_reboot_interval = u64!0x0

power_menu_reboot_function = str!payload

dmnt_cheats_enabled_by_default = u8!0x0(防止金手指自動開啟)

dmnt_always_save_cheat_toggles = u8!0x0(保存上次金手指設置)

enable_hbl_bis_write = u8!0x0

enable_hbl_cal_read = u8!0x0

fsmitm_redirect_saves_to_sd = u8!0x0

enable_deprecated_hid_mitm = u8!0x0

enable_am_debug_mode = u8!0x0

enable_dns_mitm = u8!0x1(開啟dns 中間件)

add_defaults_to_dns_hosts = u8!0x1(本機就可開90dns,不用去路由器)

enable_dns_mitm_debug_log = u8!0x0

enable_htc = u8!0x0

enable_log_manager = u8!0x0

[hbloader]

applet_heap_size = u64!0x0

applet_heap_reservation_size = u64!0x8600000

6.2 atmosphere/config/override_config.ini

[hbl_config]

program_id=010000000000100D(就是相簿titleid,尾號改13 就是頭像)

override_any_app=true

path=atmosphere/hbl.nsp

override_key=!R(點相簿自動進入hbmenu,按住R 進相簿是原版相簿)

override_any_app_key=R(只有按住R 點擊遊戲才會進入hbmenu)只要注意:"!"表示不按!後面那個鍵,自動執行

[default_config]

override_key=!L

cheat_enable_key=!L

6.3 atmosphere/config/stratosphere.ini

[stratosphere]

nogc = 1(預防遊戲卡槽熔斷,其實hekate 那裡也可以設置)

如果真實/虛擬系統一直同步升級的就無所謂,建議了解一下游戲卡槽熔斷。

6.4 exosphere.ini

[exosphere]

debugmode=1

debugmode_user=0

disable_user_exception_handlers=0

enable_user_pmu_access=0

blank_prodinfo_sysmmc=1(cfw-sysnand 真實係統下隱藏序列號)

blank_prodinfo_emummc=1(cfw-emummc 虛擬系統下隱藏序列號)

allow_writing_to_cal_sysmmc=0

log_port=0

log_baud_rate=115200

log_inverted=0

如果類似deepsea 這樣fss0 引導,可以直接去hekate_ipl.ini 裡編輯對

應段落,在其中添加cal0blank=1 就行,兩者無差別,當然exosphere 優先。

6.5 bootloader/hekate_ipl.ini

[config]

autoboot=0(表示開機啟動到hekate 菜單,不設置自動引導選項)

autoboot_list=0

bootwait=3(在出現開機bootlogo 時有3 秒內可按音量-返回hekate)

backlight=100

autohosoff=0

autonogc=1

[CFW-SYSNAND](真實係統破解狀態,所有插件可生效)

emummc_force_disable=1(強制指向真實係統)

fss0=atmosphere/package3(原來是fusee-secondary.bin)

kip1patch=nosigchk(允許patches.ini,也就是sigpatch 生效)

atmosphere=1(加載大氣層進入系統)

logopath=bootloader/bootlogo.bmp(開機bootlogo 圖片路徑)

icon=bootloader/res/sysnand.bmp(launch 菜單的icon 圖標路徑)

id=cfw-sys(用於fastcfwswitch 引導做的id 識別,自定義)

{}

[CFW-EMUNAND](虛擬系統破解狀態,所有插件可生效)

emummcforce=1(強制指向虛擬系統)

fss0=atmosphere/package3

kip1patch=nosigchk

atmosphere=1

logopath=bootloader/bootlogo.bmp

icon=bootloader/res/emunand.bmp

id=cfw-emu

{}

[OFW-SYSNAND](真實係統不破狀態,禁止所有插件與配置生效)

emummc_force_disable=1(強制指向真實係統)

fss0=atmosphere/package3

stock=1(只跳過熔斷數,不開啟所有大氣層配置參數,視同官方系統)

icon=bootloader/res/icon_switch.bmp

id=ofw-sys

6.6 bootloader/ini/more.ini

[CFW-Auto]

payload=bootloader/payloads/fusee.bin(表示大氣層原版fusee 引導,不

加參數,將不區分指向真實係統或虛擬系統)

icon=bootloader/res/icon_ams.bmp

6.7 config/fastcfwswitch/config.ini

[CFW-SYSNAND]

name=cfw-sys(表示tesla 菜單fastcfwswitch 出現的引導名稱)

path=/payload.bin(表示根目錄payload.bin,就是hekate)

bootId=cfw-sys(表示調用hekate_ipl 裡面的配置id 的那個引導段落)

[CFW-EMUNAND]

name=cfw-emu

path=/payload.bin

bootId=cfw-emu

[OFW-SYSNAND]

name=ofw-sys

path=/payload.bin

bootId=ofw-sys

[CFW-auto](二次payload 的不需要id,直接寫明payload 文件路徑就行)

name=cfw-auto

path=/bootloader/payloads/fusee.bin

6.8 config/tesla/config.ini

[tesla]

key_combo=L+DDOWN(tesla 通過左手柄的L 鍵+十字方向鍵下開啟)

參考網址:

http://www.265xh.com/nszhinan/4269.html

https://www.marsshen.com/posts/20e16ead/

https://www.999bj.com/t-19160.html

Set up Atmosphere with EmuNAND on Mariko

00. Format SD card to fat32

01. Download the under files and extract these files into the root of your SD card

hekate_ctcaer_x.x.x_Nyx_x.x.x.zip

atmosphere-x.x.x-master.zip

fusee.bin

SigPatches.zip

02. Rename hekate_ctcaer_x.x.x.bin to payload.bin and put it to /payload.bin

04. Put fusee.bin to /bootloader/payloads/fusee.bin

05. Create /bootloader/hekate_ipl.ini

---------------------------------------------------

[config]

autoboot=0

autoboot_list=0

bootwait=3

backlight=100

autohosoff=0

autonogc=1

updater2p=0

bootprotect=0

[Atmosphere CFW]

payload=bootloader/payloads/fusee.bin

icon=bootloader/res/icon_payload.bmp

---------------------------------------------------

06.Create /exosphere.ini

---------------------------------------------------

[exosphere]

debugmode=1

debugmode_user=0

disable_user_exception_handlers=0

enable_user_pmu_access=0

blank_prodinfo_sysmmc=0

blank_prodinfo_emummc=1

allow_writing_to_cal_sysmmc=0

log_port=0

log_baud_rate=115200

log_inverted=0

---------------------------------------------------

07. Create /atmosphere/hosts/default.txt(the hosts folder won't exist, so make sure to create it)

---------------------------------------------------

# Block Nintendo Servers

127.0.0.1 *nintendo.*

127.0.0.1 *nintendo-europe.com

127.0.0.1 *nintendoswitch.*

95.216.149.205 *conntest.nintendowifi.net

95.216.149.205 *ctest.cdn.nintendo.net

---------------------------------------------------

08. Create an emuMMC: https://switch.homebrew.guide/emummc/emummc.html

08.0 Place your SD card back into your switch and power it on, you will now have launched into Hekate.

08.1 Tools tab -> Partition SD Card -> Ok

08.2 To create a partition-based Emunand:

----Move the emuMMC (RAW) slider until it says 29 full, then press Next Step and finally press Start.

08.2 To create a file-based EmuNAND:

----Press Next Step, and then press Start.

Once the operation is done, press Close and then select the Home tab.

09. emuMMC in the main menu, then select Create emuMMC

09.1 partition-based EmuNAND, select SD Partition and then select Part 1.

09.1 file-based EmuNAND, select SD File.

----Wait for your emuNAND to get created. Once its done, select Close.

10.Power off your console and place your SD card back into your PC and move any previously files.

11.Press the power button and boot into Hekate. Click on Launch, and select Atmosphere CFW to launch into Atmosphere.

12. If you need to go into sysNAND without your CFW, then select Reboot and then select OFW.

Reference webpate:

https://rentry.org/EristaSXCoreEmuNAND

2022年12月16日 星期五

Switch相關資訊

Switch 型號

    原始版 Lite版 電力加強版 OLED

代號  Icosa  Hoag   Iowa    Aula

SoC  Erista  Mariko  Mariko   Mariko

硬改晶片:SX Core / HWFLY

P.S. 原始版->Switch 一般版(2018/6之前出廠)可用軟體破解。

參考網站:

https://rentry.org/SwitchHackingIsEasy

Homebrew

https://switch.homebrew.guide/index.html

Hekate

https://github.com/CTCaer/hekate/releases/latest/

Atmosphere & fusee

https://github.com/Atmosphere-NX/Atmosphere/releases/latest

SigPatches

https://sigmapatches.coomer.party/

What are sigpatches? - Sigpatches allow your Switch to install and run unofficial NSP files (digital titles that appear on the home menu). Note that you must use CFW to launch these applications even after installation as sigpatches are always required to do so.

2022年7月7日 星期四

OpenGL中,gult/freeglut/glfw/glew/glad差別

 1.OpenGL(https://opengl.org/)

OpenGL只定義framework框架,也就是說只有functions定義,並沒有實現內容,有點像interface。

實際function內容的,又有顯卡廠商,自行轉寫與優化。


OpenGL API分為:

gl: 核心library

glu:實用library(對gl封裝)

aux:輔助

glut:實用library工具(跨平台的OpenGL程序的工具包)

glx、agl、wgl:不同平台相關


2.1 gult(https://www.opengl.org/resources/libraries/glut/glut_downloads.php) - OpenGL Utility Toolkit

此函示庫已過於老舊,不建議使用。

對應開原版為freegult


2.2 freeglut(http://freeglut.sourceforge.net/) - Free-software/open-source alternative to the OpenGL Utility Toolkit (GLUT) library

因OpenGL無視窗相關控制的函式,所以網路上很多高手加入相關功能,像早期glut,與現在的freeglut。

freeglut完全相容glut,是glut的代替品。freeglut 3.0版本較穩定,推薦使用。


2.3 glfw(https://www.glfw.org/)

lightweight、Open、跨平台。支持OpenGL及OpenGL ES,包含視窗管理、檔案存取、事件處理等。

少量的API,即可達到目的。

glfw目的一樣是取代glut。



3.1 glew(http://glew.sourceforge.net/) - The OpenGL Extension Wrangler Library

glut或freegult,主要是OpenGL 1.0的基本函式功能

glew使用OpenGL 2.0之後的工具函式功能

使用glew.h文件,就可以使用gl,glu,glext,wgl,glx相關函式(包含廠商開發一些函式)

glew包含了OpenGL所需的核心


3.2 glad(https://glad.dav1d.de/) - Multi-Language GL/GLES/EGL/GLX/WGL Loader-Generator

glad為gl3w、glew之後,目前最新OpenGL規範接口的第三方函式庫。glad是glew的升級版。



4. 結論

gl相關函式

舊:glut/freeglut

新:glfw


函式接口

舊:glew

新:glad


開發組和

(1)freeglut + glew -->較舊穩定搭配

(2)glfw + glew

(3)glfw + glad -->目前最新搭配



參考文章:https://blog.csdn.net/libaineu2004/article/details/105879521