Boot Sector Games - YouTube

Channel: unknown

[12]
我一直很喜欢那些拥有很高运行效率的游戏或演示程序
[16]
而雅达利2600平台就是个不错的例子
[20]
因为诸如吃豆人这种早期2600游戏 必须将自己塞进仅有4KB的ROM中
[24]
虽然后来的卡带可以用分页技术获得8K或大容量的空间
[28]
但那些早期的游戏必须精准并节省的使用ROM空间
[31]
而这通常意味着开发者必须牺牲游戏的部分复杂功能
[34]
然而, 如果你认为4K的可用空间已经足够小了的话
[37]
那么如果只有2K又会怎样
[39]
我的朋友罗宾·哈布伦编写了这个叫"Minima"的小游戏 基本上相当于文字版的创世纪
[44]
这是一款仅有2K大小的RPG游戏
[48]
总体来说非常令人印象深刻
[49]
那要是再小一点呢?
[51]
emmm...来瞧瞧这个
[53]
这款游戏名叫"SPlatform". 整个游戏仅占用1KB大小
[59]
那么, 从直观感受来看...1K究竟多大呢?
[63]
如果这些点一个代表1字节的话
[66]
那这就是全部的1024字节了
[68]
每条典型汇编指令会占用1至3字节的空间
[73]
因此, 你大约能写400句左右的汇编指令
[77]
但是, 一款游戏不仅仅只有代码 你还要为数据, 图形, 声音甚至文本留出空间
[81]
因此, 你需要在代码和数据之间找到一个微妙的平衡点
[85]
可如果我们再疯狂一点呢?
[88]
能否仅用512字节来编写一款游戏呢?
[92]
答案是......可以
[94]
事实上, 512字节是一个魔数. 若程序仅占用512字节, 就意味着它可以被装入引导扇区
[100]
让我们快速回顾一下几年前我发布的有关软盘的纪录片
[104]
通常来说, 一片IBM格式的360K软盘
[107]
会被从外向内划分成40个磁道
[111]
然后还会被像这样划分成9片扇区
[115]
其中"引导扇区"指的就是0磁道的第1个扇区
[118]
如你所见, 从整个磁盘表面来看, 它真的非常小
[121]
当然, 这还只是一片360K软盘而已
[123]
那么在大家非常熟悉1.44MB软盘上又是怎样的情况呢
[129]
它具有2倍于360K软盘的磁道和扇区数量
[133]
但是引导扇区所占用空间依然是512字节
[136]
这就意味着它在磁盘表面上所占据的面积更小了
[140]
那么, 这个"启动扇区"究竟是干嘛用的呢?
[142]
我们都知道BIOS软件位于主板上的ROM中 但它并不是一个真正意义上的"操作系统"
[146]
所以BIOS中的代码刚好足以将引导扇区读进RAM并执行 (译者注: 除此之外还有一些硬件初始化与自检的代码)
[151]
但是引导扇区的容量也远不够装下整个系统
[154]
所以它的主要工作还是将真正的操作系统加载到内存 例如DOS, Windows或Linux之类的
[160]
你可能会惊讶地发现
[161]
至少在IBM PC和兼容计算机上来说 每个软盘和硬盘都有一个引导扇区
[168]
并且, 哪怕磁盘是空的, 每个引导扇区上也会装入一段程序
[173]
你是否曾经将软盘不小心落在电脑中
[175]
并在启动过程中看到电脑显示出
[177]
"Invalid System Disk Replace the disk, then press any key"
[181]
你可能一直认为这段文字是来自BIOS ROM中提示文本
[184]
确实, 这是个很有道理的推测
[186]
但如果事实真是这样, 那你要如何解释接下来的现象
[189]
当我换了一张空白软盘并尝试启动的时候, 错误信息变了
[192]
现在显示的是: "non system disk or disk error"
[194]
两者之间有什么区别吗?
[196]
其实, 第一张软盘是在Win95下格式化的 而第二张软盘这是在MS-DOS下格式化的
[202]
你看到的消息其实是空白磁盘引导扇区中的一小段程序
[208]
它的功能就是显示这段信息
[210]
使用扇区编辑器, 你就可以将这段消息替换成任何内容
[213]
例如, 我改了Planet X3磁盘的扇区, 使其显示自定义消息
[218]
然后继续引导到您的硬盘驱动器 (如果有的话)
[221]
引导扇区也曾被很多病毒作为攻击目标
[225]
这些病毒只是一段存在于引导扇区中的小程序
[228]
它们会在系统启动前被加载到内存
[230]
并且它们会将自己复制到其他硬盘或软盘的引导扇区中
[235]
因为这些病毒存在于引导扇区中
[237]
那也就意味着它们要比操作系统更早启动 也就拥有了更高级别的权限
[242]
现在你已经大致了解了什么是引导扇区
[245]
那你能想象制作一个仅512字节大小的游戏会有多难吗?
[251]
我这里有一个由奥斯卡·托雷多编写的太空侵略者游戏
[255]
这玩意是完全存储在引导扇区中的
[258]
现在我想让大家感受一下它的启动速度究竟有多快
[260]
请注意, 甚至连开机自检都没有走完
[264]
没有一点点防备, 也没有一丝顾虑, 你就这样出现~
[267]
我想从侧面来证明一下这点
[270]
请看这里, 这里是软盘指示灯. 现在它正在自检阶段
[272]
下一次你再看到它亮起的时候 就说明电脑正在试图从软盘启动
[275]
请睁大眼睛看看从灯光亮起到进入游戏究竟有多快
[279]
可以说是相当快了😂
[281]
这不只是因为无需加载操作系统 还因为磁头甚至都无需进行寻道
[287]
盘片仅仅只需旋转一圈 就足以让磁头将引导扇区的内容读入内存
[293]
有一说一, 这确实算不上史上最好的太空侵略者
[296]
很明显, 开发者做出了很大程度的让步
[298]
例如: 没有记分板, 没有顶端UFO, 所有外星人长的都一样..
[304]
哦对了...也没有音效或者BGM
[307]
但这也是没有办法的办法 如果不精简这些就无法将其装进引导扇区
[312]
那么, 除了太空侵略者之外 还有什么可以运行在引导扇区上电游戏呢?
[316]
这是另一款游戏
[317]
它叫"F-Bird", 如果这还不够明显的话... 好吧, 它就是个山寨版的flappy bird
[321]
这个版本运行在字符模式下, 仅使用ACSII字符来绘制画面
[325]
但关于这个游戏最有趣的一件事是:
[327]
它是我今天介绍的引导扇区游戏中唯一具有声音的一款
[334]
这里还有一款名叫"吃药人"(Pillman)的游戏
[336]
我猜叫这个名字可能是因为他吃了太多的小药片
[339]
这些幽灵都在追赶他, 我希望它们是Xanax
[341]
和其他的一样, 这款游戏也可以在VGA模式下运行
[344]
不过, 我发现了一些非常有趣的事
[347]
如果你仔细观察屏幕的左下角 你会看到许多像素在诡异的闪烁
[351]
差不多有20个左右
[353]
关于这里正在发生什么, 我有个猜测:
[355]
我怀疑作者在用多余的屏幕RAM作为游戏的变量存储器
[360]
事实上, 你可以在这里看到某些特征性的改变 比如当Pillman更改方向的时候
[364]
这意味着, 游戏可能仅需要十几个字节的RAM来存储变量
[369]
从屏幕采集画面中放大显示会比较模糊
[372]
但从DOSBOX的运行截图中可以清楚的看到
[375]
这让我想到了雅达利2600, 因为它也只有128字节的RAM
[381]
说到DOSBOX, 嗯...
[383]
许多人想知道如何使用DOSBOX引导RAW镜像
[387]
其实挺简单的
[388]
打开DOSBOX后, 只需键入命令BOOT
[391]
然后输入要使用的磁盘镜像的路径即可, 例如TetrOS
[395]
我认为"TetrOS"这个名字是俄罗斯方块+操作系统的合写 (Tetris+Operating System)
[398]
因为这款游戏既是游戏本身, 也是承载游戏的操作系统
[401]
这确实是一款可玩性比较高的俄罗斯方块 当然, 它也是完全存储于引导扇区中的
[407]
除了游戏之外, 还有些其他的软件
[409]
比如这就是一个完全从引导扇区启动的BASIC环境
[414]
这里是一个示例程序, 它的作用是输出一个杨辉三角
[419]
这个版本的BASIC功能十分有限
[421]
不仅是命令集匮乏, 并且每行指令还不允许超过19个字符
[426]
所以, 你基本上不可能用它写出点什么令人惊艳的程序
[429]
另外, 我认为你无法保存或加载你的程序
[432]
好吧, 让我们冷静一下, 用现实的眼光看看它们
[435]
这些游戏确实都没有那么棒 因为没有人会想要坐下来对着它们连续玩上几个小时
[441]
我怀疑开发者写游戏的过程可能都要比游玩的过程有趣
[447]
当然, 这些游戏的最终目的可能都是一种自我挑战
[450]
看看你能在一个非常有限的空间里装下多少东西
[455]
所以, 我十分钦佩那些能将游戏塞进512字节中的勇士
[462]
那么, 这些就是本期视频的全部内容了
[466]
请继续关注我, 感谢大家的收看