如何升级大气层Atmosphere到1.1.0以及以上版本

最近搬家太忙了,Switch吃灰了几个月。虽然没有想玩什么新游戏,但是就是想给系统啥的升个级。看到大气层又升级了好几个版本呢,而且1.1.0有个大更新。虽然我不知道都更新了啥,但是根据描述来说,原来的的几个重要文件都被改名了,非常的莫名其妙……比如fusee-primary.bin改成了fusee.bin, fusee-secondary.bin改成了package3。所以,在从1.1.0之前的版本更新到1.1.0的版本以及以后的版本,就不是简单的复制粘贴这么简单了。所以在这里记录一下,以防以后忘了……

先说一下我目前的NS的状态,unpatched的NS,目前的版本是大气层0.19.4版,双系统,OFW也就是正版系统还是9.x,CFW也就是盗版系统是12.0.3. hekate是5.5.7。这个教程只在我自己的NS上尝试过,破解有风险,大家自己承担哈。

在这个教程里,我只告诉大家如何升级大气层,至于怎么升级系统,请看这里。方法没变,就是注意版本号就好了,直接选最新的就行了。

另外,我是用的注入器是TegraRcmGUI,这个东西的用处就是选择想要通过哪个文件来引导启动系统。之前写的教程里有提到过这个东西,可以自己看一下。

另外感谢下面的教程教会我如何升级

https://nh-server.github.io/switch-guide/extras/updating/

首先,我们开始下载一堆东西。

Atmosphère 1.2.0 prerelease

  • 这个是大气层的主文件,以及引导文件,1.2.0是个预发布版本,我个人比较喜欢用新版本,所以就下的最新的。如果我说,在之前的教程里,下载的第二个文件叫fusee-primary.bin,现在叫fusee.bin了。
  • https://github.com/Atmosphere-NX/Atmosphere/releases
    • atmosphere-1.2.0-prerelease-f7f83b474+hbl-2.4.1+hbmenu-3.4.1.zip
    • fusee.bin

Sigpatches (Supports HOS firmware 13.0.0 and AMS 1.2.0-prerelease)

hekate v5.6.3 & Nyx v1.0.8

hekate_ipl.ini

先来总结一下我们现在有哪些文件了

  1. atmosphere-1.2.0-prerelease-f7f83b474+hbl-2.4.1+hbmenu-3.4.1.zip
  2. fusee.bin
  3. fusee.zip
  4. hekate_ctcaer_5.6.3_Nyx_1.0.8.zip
  5. hekate_ipl.ini

后面提到某个文件的时候,我会用代号来指代。

首先,我们先看SD卡里都有什么。

就是这些文件,首先,我们先删除3个文件,第一个是这张图里的sept这个文件夹,第二个是hekate_ctcaer_5.5.7.bin

第三个是atmosphere文件夹里的fusee-secondary.bin。

然后将1,3,4都解压到电脑本地的同一个目录下。

得到这些文件。然后把5,也就是hekate_ipl.ini这个文件复制到上图中bootloader的文件夹里。之后把这个文件夹里的内容,复制到SD卡中并覆盖同名文件。

然后把SD卡放回到NS上,通过TegraRcmGUI,使用hekate_ctcaer_5.6.3.bin来启动系统到Hekate。

点击右上角的Options

确认右下角的Update Reboot 2 Payload是ON,如果不是,点一下让他变成ON。然后就可以Save Options,并且关机了。

之后,再通过TegraRcmGUI,使用fusee.bin来启动机器,就大功告成了。

可以看到,我的AMS也就是大气层系统的版本号已经是1.2.0了。(版本号中的最后一个字母是E,说明这是虚拟系统,如果是运行在真实系统里,最后一个字母是S)

大功告成!

如何给使用大气层Atmosphere的Switch系统升级

10月17日更新:

如果你打算升级Atmosphere到1.1.0以上的版本。本教程可能不适用。请结合这篇文章来看。

—- 分割线 —-

肉壳最开始破解自己的Switch的时候,使用的是SX OS。所以之前写过一篇文章,介绍如何给使用SX OS的Switch升级系统

但是,自从2020年12月开始,SX OS就没有再更新了,新的Switch系统也不能使用了,所以我把自己的Switch转换到了大气层Atmosphere中。如果大家有兴趣可以看看这个教程

那么问题来,我们如何给使用Atmosphere的Switch升级NS的系统呢?其实比使用SX OS还要简单。

首先要说的是,我在这篇文章里,只记录我自己的Switch的转换和升级方式。我的Switch是最初的没有patch的,换句话说,就是可以软破的那批机器。其次,我的SX OS是装在emunand里的,也就是虚拟系统。而且是装在SD卡里,没有隐藏分区。另外,我的正版系统虽然没有在用了,但是一直保持者9.x的系统版本。如果你的机器和我不一样,请参考上面两个链接,虽然是英文的,但是讲解的非常清楚。最终,破解有风险,如果在破解在转换过程中出现任何问题,请大家自行承担风险。

和之前一样,大家要先去下载一些文件。

Firmware 12.0.3

Atmosphère 0.19.4

Sigpatches (Supports HOS firmware 12.0.3 and AMS 0.19.4)

hekate v5.5.7 & Nyx v1.0.4

OK,我们先来整理一下,我们现在应该有如下几个文件。后面在引用到下列文件时,直接用数字代替了。

  1. Firmware 12.0.3.zip
  2. atmosphere-0.19.4-master-2ab01ad3+hbl-2.4.1+hbmenu-3.4.0.zip
  3. fusee.zip
  4. hekate_ctcaer_5.5.7_Nyx_1.0.4.zip

首先,将1解压到随便一个新的文件夹中,我们就叫它Firmware 12.0.3。将这个文件夹拷贝到Switch的SD卡的根目录下。

如果你的大气层已经是最新版本的话,就啥也不用做了,如果不是的话,需要把2,3,4都解压到SD的根目录。

然后把SD卡放回机器,开机进入大气层系统。

点击相册,会看到下面的界面

请无视第一个程序,我忘记删了,哈哈。在大气层下,升级系统我们需要用到第二个程序Daybreak,点击进入。

点击Install

选择最上面的Firmware 12.0.3

稍等一下,直到Continue变亮,然后点击Continue。

点击Preserve settings

点击Install (FAT 32 + exFAT)。这里假设你的SD卡是用exFAT的格式。如果你的SD卡不能放比4G大的文件,那么你的SD卡就是FAT32格式。

继续点击Continue

坐等安装结束,点击Reboot重启机器。

进入系统后检查主机系统,已经是12.0.3了。

大概就是这样……

如何从SX OS转换到大气层Atmosphere

10月17日更新:

如果你打算升级Atmosphere到1.1.0以上的版本。本教程可能不适用。请结合这篇文章来看。

—- 分割线 —-

之前我写过一篇文章介绍如何给已经安装SX OS的Switch升级破解系统。但是从2020年12月,SX OS的小组被抓,而且受到任天堂起诉后,就再也没更新过SX OS的系统了,以至于无法给Switch升级到最新的系统,进而很多新游戏都没法玩。虽然可以使用魔改版的xci来解决这个问题。但是,我总觉得这也不是个长久之计。在经过半年多的等待,依旧没有消息。于是我决定自己动手把破解系统换到大气层。

在阅读了下面的文章和视频后,我也试着自己做了一下,发现还挺简单的。

https://www.sthetix.info/migrating-from-the-sx-os-to-atmosphere/

https://github.com/dsync89/Ultimate-Guide-to-Migrate-SXOS-SX-Core-to-Atmosphere

首先要说的是,我在这篇文章里,只记录我自己的Switch的转换和升级方式。我的Switch是最初的没有patch的,换句话说,就是可以软破的那批机器。其次,我的SX OS是装在emunand里的,也就是虚拟系统。而且是装在SD卡里,没有隐藏分区。另外,我的正版系统虽然没有在用了,但是一直保持者9.x的系统版本。如果你的机器和我不一样,请参考上面两个链接,虽然是英文的,但是讲解的非常清楚。最终,破解有风险,如果在破解在转换过程中出现任何问题,请大家自行承担风险。

首先下载所有所需文件 (版本号截止于2021年6月27日,目前这些版本都是最新版,而且版本也是互相支持的。如果未来有更新版本,也可以下载更新版本,就是注意一下兼容性的问题就好):

Atmosphère 0.19.4

Sigpatches (Supports HOS firmware 12.0.3 and AMS 0.19.4)

hekate v5.5.7 & Nyx v1.0.4

TegraRcmGUI_v2.6

  • 大家使用SX OS的时候,都会先把注入器接到Switch的type-c接口上,这样才能进入引导界面,对吧?因为SX OS的注入器,在默认情况下,只支持SX OS的引导,所以这个程序的目的就是让你的电脑成为一个注入器,这样,你可以随意选择引导文件。
  • https://github.com/eliboa/TegraRcmGUI/releases
  • tegrarcmgui_v2.6_portable.zip

OK,我们先来整理一下,我们现在应该有如下几个文件。后面在引用到下列文件时,直接用数字代替了。

  1. atmosphere-0.19.4-master-2ab01ad3+hbl-2.4.1+hbmenu-3.4.0.zip
  2. fusee-primary.bin
  3. fusee.zip
  4. hekate_ctcaer_5.5.7_Nyx_1.0.4.zip
  5. tegrarcmgui_v2.6_portable.zip

首先,将SD卡接上电脑,然后解压文件1,3,4到SD卡的根目录。解压后文件结构大致如下图,可能会有出入。然后可以将SD卡放回机器中了。

然后解压5。会得到一个名叫TegraRcmGUI_v2.6_portable的文件夹,进入这个文件夹里面的favorites,将文件2,以及4中的hekate_ctcaer_5.5.7.bin放到这个favorites文件夹,并删除Fusee_Atmosphere.bin和hekate_ctcaer_5.0.0.bin。整理后的文件结构如下图,应该是一模一样的。

然后我们回到TegraRcmGUI_v2.6_portable这个文件夹,运行TegraRcmGUI.exe。打开后,先去到Setting,点击Install Driver来安装驱动程序。

安装成功后,回到Payload,添加我们刚刚放到favorites的fusee-primary.bin和hekate_ctcaer_5.5.7.bin添加到程序中的favorites,方便以后使用,并删除favorites中的Fusee_Atmosphere.bin和hekate_ctcaer_5.0.0.bin,因为他们已经不存在了。整理后如下图。可能此时,你的左下角图标还是红色的,这个没关系。我懒得重新截图了-。-

OK,现在万事俱备,首先,把右手柄取下,装上短接器。按住加音量键并按电源键。这时,你的Switch就会开机,并进入黑屏状态。别慌,找一条USB线,把Switch和电脑连起来,此时TegraRcmGUI中右下角的图标会变成绿色。这时候,双击Favorites中的hekate_ctcaer_5.5.7.bin。此时,Switch应该就进入了Hekate的引导界面。界面如下

点击右边的emuMMC,解释一下emuMMC其实就是SX OS下所谓的emuNand的概念,就是在SD卡上搞一个虚拟环境,然后把破解系统放到虚拟环境里,以免影响正版系统。点击之后,进入下面的界面。

此时我们还可以看到屏幕左上角有个黄色的Disabled! 不用怕,先点右边的Migrate emuMMC。注意,因为此教程是如何从安装在emuNand的SX OS转换到大气层,如果你是其他操作,可能需要选择其他选项。点击Migrate emuMMC之后,会弹出下面的对话框。

然后选择Emunand,会提示在SD卡中找到emunand,是否转换?

选择Continue,然后瞬间就会完成。

确实很快,然后点击OK

此时我们会发现左上角已经变成绿色的Enabled了!太好了,然后点击右上角的Close,回到主菜单。

再点击右下角的Power Off关机。

然后,如果你没有手欠把短接器和USB线拔下来的话,按住加音量键和电源键重新开机。然后回到TegraRcmGUI中,双击Favorites中的fusee-primary.bin。请继续忽略左下角的图标,此时你的图标应该是绿的-。-

然后,我们就能直接进入大气层的系统了。

进入设置,我们可以看到现在的系统版本是12.0.3,也就是Switch系统的最新版本。大气层系统是AMS M.19.4。并且是运行在虚拟系统中(版本号中的最后一个字母是E,如果是运行在真实系统里,最后一个字母是S)。

至此,我们就完成了从SX OS到大气层的Atmosphere的转换。

如果你的NS系统的版本还是比较低的版本,可以参考这篇文章来升级NS的版本到12.0.3。

为Chrome插件加载Javascript

上一次(其实就是昨天),为了防止中华职棒官方的录播页面剧透比分,所以我写了个简单的Chrome插件,用来屏蔽比分。也写出了第一个版本。

虽然星期一是休赛日,甚至连比赛都没有,但是我还是觉得,如果把所有比赛分数都隐藏了,那如果我有时候还是想看到比分,这可怎么办啊。在过去的一天,我试过了一些方法,通过菜单来实现显示和隐藏所有比分,但是那个菜单做的很丑,而且,把所有比分都显示出来,还是有剧透的风险,所以,我决定要给每一场比赛加一个开关,用来显示当场比赛的分数。

肉壳是个前段小白,真的试了好久,才解决这个简单的问题。

首先,这个网站还在用table来制作表格,而且,也没有为比分栏设定id。如果每个比分栏没有固定id的话,就无法定位到这个比分,进而无法控制这个比分的显示或隐藏。所以,第一个要解决的问题是,为每一个比分添加一个id。我们使用JavaScript来解决这个问题。

var scores = document.getElementsByClassName("score");
for (var i = 0; i < scores.length; i++) {
    var score = scores.item(i);
    score.id = "score_" + i;
}

我们通过class找到每一个score,然后给他加一个id。

其次,我们需要给表格增加一列,用来显示开关,我们把开关放在表格最后面。

var tbl = document.getElementsByClassName('vod_table'), // table reference
tbl = tbl.item(0);

for (var i = 0; i < tbl.rows.length; i++) {
    var row = tbl.rows[i];
    if (i == 0) {
        var th = document.createElement('th');
        th.innerText = "显示/隐藏分数";
        row.appendChild(th);
    } else {
        createCell(tbl.rows[i].insertCell(tbl.rows[i].cells.length), i-1, 'stadium');
    }
}

然后,我们要为每一个开关,写一个function,用来把开关和分数栏对应起来。这样,在点击开关的时候,就会显示或隐藏相应的比赛分数了。

function createCell(cell, id, style) {
    cell.setAttribute('class', style);
    cell.innerHTML = "<label class=\"switch\"><input id=\"switch_" + id + "\" type=\"checkbox\"><span class=\"slider round\"></span></label>";
    var toggle = document.getElementById("switch_" + id);
    toggle.onclick = function(){toggleSwitch(id)};
}

function toggleSwitch(id) {
    var score = document.getElementById("score_" + id);
    if (document.getElementById("switch_" + id).checked) {
        score.setAttribute("style", "visibility: visible;");
    } else {
        score.setAttribute("style", "visibility: hidden;");
    }
}

这这里,开关我们用了一个checkbox,我还找来了一个css,以便让它看起来更美观。大家有兴趣可以去看看我的css文件

当然,我们要把之前写的js代码,都存放在一个文件中。最终代码的样子在这里

因为css,我们还是写在了旧的文件中,那我们刚刚写的js文件要怎么办?如何让自己的插件可以加载JavaScript?其实很简单,只要打开manifest.json,在content_scripts中加入一行"js": ["assign_ids.js"],用来加载我们刚刚创建的assign_ids.js文件就可以了。最终文件长这个样子

值得注意的一点是,在js中,在建立开关的时候,我用了一种类似hardcode的方式添加的onclick事件。这是因为Chrome插件在使用content_scripts加载js的时候,并不会一只保留js文件,所以如果只是简单的调用某个function,浏览器会找不到这个function。所以只能退而求其次的hardcode。不过我看大家好像都是这么做的,也无所谓了。

其实本来还想用这个js来替换掉比分,而不是简单的隐藏。但是发现,js会在网页加载之后才会被调用,于是有那么一个瞬间,比分是会被显示出来的。

所以这个插件的整体流程就是,默认先通过css将所有分数隐藏,等网页加载后,为每个分数添加id,并为每一行添加开关。等用户点击相应的开关时,根据开关的状态,显示或隐藏对应的比分。

未来,我会再加一个开关,用来一键显示所有比分。而且,还会为插件添加一个开关,以便用户可以关掉屏蔽比分的功能,而不需要通过后台停用整个插件。

肉壳已经为大家打包好了这个插件,大家可以直接去Github下载。

https://github.com/Rokeer/CPBLTV-Spoiler-Alert/releases

最终的网站效果如下图……终于又能看到比分咯……

看到右边的开关没?

未来,我还会继续学习开发这个插件,这两天研究一下,如何把它丢去商店里,方便大家下载……

另外,如果没有什么太大问题,我就不每次更新都为大家更新文章了。请大家关注我的Github

4月14日更新:

花了一晚上的时间把这个插件完善了一下,增加了一些功能,并发布在了Chrome Web Store中……大家可以搜索CPBLTV Spoiler Alert或访问这个链接下载使用……

v1.0.0
04/14/2020
正式版上线,并发布于Chrome扩展平台
添加开关用于显示、隐藏所有比赛分数
为插件添加菜单
用户无需停用扩展,即可在菜单中关闭此功能
为扩展添加图标
为踏浪寻星广播电台做广告
添加英文,简体中文,和繁体中文支持

用Chrome插件隐藏网页信息

上回我们说到,由于疫情的原因MLB停摆了,所以现在没有MLB可以看了。好在台湾的中华职棒决定今年在没有观众(实际上是只允许季票观众入场)的情况下开赛。于是,时隔多年,肉壳再一次购买了CPBLTV,这样就可以继续看棒球比赛了。价格也比15年刚开始收费的时候便宜了一点。不过,在15年的时候,我还在国内,所以可以在每天晚上看比赛直播。但是,现在由于时差的关系,我只能看比赛录播了。想想也没有什么大问题,因为周围的朋友都很少有人在讨论中华职棒的比赛,所以也不怕剧透。这里不得不吐槽一下CPBLTV的画质,直播只有540p,录播也只有720p。没想到,都2020年了,即使在官网看比赛,画质也就是和10年前看的网络电视的画质一样……

刚才我们说到,不怕朋友剧透。但是官方剧透更可怕……随着赛季开始,肉壳打算开始收看录播比赛。但是惊人的一幕发生了,官网上赛事录播的页面上,把所有的比赛结果都列了出来……所以肉壳就被赤裸裸的剧透了。

官方剧透最可怕……

本着自己动手丰衣足食的原则,肉壳写了一个非常简单的Google Chrome的插件,用来屏蔽掉页面上的比赛分数。肉壳对前端方面没有太多了解,所以仅仅是把所有分数隐藏了起来,并没有其他特别花哨的功能。如果有需要的话,以后再说。所以今天,就来给大家讲一讲,如何写一个可以修改网页内容的Chrome插件。

首先,我们要建立一个文件,名为manifest.json。大家可以阅读Google的官方文档来进一步了解这个文件,我在这里只写出了我需要的地方。

{
  "manifest_version": 2,
 
  "name": "CPBLTV Spoiler Alert",
  "version": "0.0.1",
  "description": "Hide game results in CPBLTV website.",
 
  "content_scripts": [{
    "css": ["styles.css"],
    "matches": ["https://www.cpbltv.com/lists.php*"]
  }]
 
}

其中name,version和description是插件的名字,版本号和描述。可以自己随便定。下面content_scripts定义了插件要加载的css文件,这里我们给这个文件起名为styles.css。matches里定义了插件起作用的网页。

然后,新建我们要加载的css文件styles.css。网页中的数据,是通过一个table来显示的,好在他们对score这一栏定义了一个名为score的css element。不得不吐槽啊,都2020年了,还在用table来显示内容,而不是用div,我以为只有我这种前端小白才会用table呢……所以,很简单,我们只需要将score的元素全都隐藏起来就好了。下面是styles.css文件的内容。

.vod_table .score{
	visibility: hidden;
}

至此,这个简单的插件就写好了。至于安装调试,首先将刚才写的两个文件放在同一个文件夹下,再将文件夹拖入Chrome的插件页面,chrome://extensions/,就安装完成了。

终于不怕官方剧透了……

这样我就对比分一无所知了……哈哈哈!

另外,我将代码放在了Github上,并且会持续更新,有兴趣的朋友可以下载来用……

https://github.com/Rokeer/CPBLTV-Spoiler-Alert