为什么魂斗罗只有 128KB 却可以实现那么长的剧情?

VSole2023-04-25 09:21:03

大家好,我是二哥呀。

经常看到有同学在抱怨现在的游戏、APP占用非常大的空间,基本都是 10G 起步。

这让我想到初中时玩过的一款游戏魂斗罗,为什么它只有 128KB 却可以实现那么长的剧情呢?

这篇文章将会给大家讲讲这里面的奥秘~

作者 l 皮皮关 出处:编程指北,整理:沉默王二 原文链接:https://www.zhihu.com/question/50076174/answer/1101330430

正文

现代程序员 A 和 1980 年代游戏程序员 B 的对话:

A:为什么你用 128KB 能实现这么多画面、音乐、动画?

B:128KB 还不够么?其实为了表现力已经相当奢侈了,加了很多不重要的细节。

A:就说你们的音乐,这个音乐,我压到最低码率的 mp3,也得至少 1MB 吧。

B:你怎么压的?一首背景音乐怎么可能超过 1KB。

A:那你实现全屏卷轴,用了多少显存?

B:一共就只有 2KB 显存,多了也放不下啊。

A:……

我们对“数据量”无法直观认识

除非是专家,一般人根本无法估算到底多大算大,多小算小。

一般人对“数据量”并没什么概念。一篇 800 字的作文有多少数据量?按照 GBK 编码,约 1.6KB,按照 UTF-8 编码,则是 2.4KB。

只写了 1 个字的作文,按理来说 1 字节~3 字节就够了。但只写 1 个字的 word 文档,有 10956 字节,而由于硬盘格式化要求,再多占用 1332 字节

我就写了一个字,真的什么都没干

现实中常见的产品、流行的技术,实际上和时代背景密切相关。

当你抱着 15 寸笔记本还嫌小的时候,1990 年代初的家庭,可是一家人围着 14~18 寸的球面电视看的。把雪碧拿给古代人喝一口,估计他会齁得要死,必须喝点水压压惊。

当物质基础变得十分丰富的时候,一定会产生无法避免的“浪费”,这种“浪费”会进一步改变人感受的阈值,对度量的估计都变得紊乱了。

FC 时代的图形技术

由于早期的记忆芯片(ROM)非常贵,而且大容量磁盘的技术也不成熟,所以暂且不论硬件计算能力,仅仅是想增加游戏的总容量也非常困难。所以自然会使用符合当时水平的数据结构。

以红白机 FC 为例,它的分辨率为 256x240。分辨率不算低,但却只有 2KB 显存,而且还要实现全屏卷轴效果。

所以在 FC 设计之初,从硬件上就提供了充分利用显存的方法——使用 Tile(瓦片)。

对每一个场景来说,使用若干数量的瓦片,场景用有限的瓦片拼接即可。这种“二级”表示方法能极大节约存储量。

具体一些原理讲解可以看一些科普,比如这个:

https://www.bilibili.com/video/BV19J411e763

音频容量和代码容量

现代音乐格式往往直接保存声道的波形,这种做法保真度高、通用性强,但很显然占用空间多,一首曲子的容量以千字节、兆字节计算。

而八位芯片时代的音频解决方案,关键是一颗专用芯片,例如 FC 用的理光 2A03:

音频芯片可以产生合成音效,能提供的音色可以在一定程度上配置,但非常有限。听听 FC 游戏的音乐可以体会到常用的音色几乎一样。

我觉得这个音频芯片最厉害的地方是可以同时播放几个音轨(但不能是和弦那种“同时”),《魂斗罗》、《沙罗曼蛇》、《忍者龙剑传》的殿堂级音乐,主要是靠多个音轨的交替配合实现的。

每个音符只要记录音色、频率和音高就足够了,音频芯片自然会识别出来。把音符按时间排列好就是“乐谱”了,可以简单理解为“简谱”。

这种简谱需要的数据量十分有限,而且大部分游戏音乐都是循环播放,数据量更是小的可怜。

代码也是类似的

FC 时代的游戏,没有所谓的“引擎层”,或者说引擎层就是“硬件层”。任天堂的主机完全是为游戏而设计的,瓦片、调色板、音乐、音效等基本功能已经预先考虑到了,这样一来就节约了大量底层代码。

程序员要仔细研究文档,在硬件框架下思考问题,比如如何显示图片、如何卷动屏幕等等;而且还要非常熟悉硬件底层和汇编,不要浪费代码空间。

一来二去,代码也能写的非常小。

总的来说,128KB 的游戏大作,在 30 年前稀松平常,放到现在简直就是黑科技。

科技的剧烈变革带来技术指标非线性的变化,让我们的记忆和直觉彻底落伍 :)

本作品采用《CC 协议》,转载必须注明作者和本文链接
我们对“数据量”无法直观认识除非是专家,一般人根本无法估算到底多大算大,多小算小。一般人对“数据量”并没什么概念。按照 GBK 编码,约 1.6KB,按照 UTF-8 编码,则是 2.4KB。以红白机 FC 为例,它的分辨率为 256x240。这种“二级”表示方法能极大节约存储量。这种简谱需要的数据量十分有限,而且大部分游戏音乐都是循环播放,数据量更是小的可怜。代码也是类似的FC 时代的游戏,没有所谓的“引擎层”,或者说引擎层就是“硬件层”。
为什么我家的LG洗衣机每天都会上传3.6GB的数据?” 一位名为Johnie用户发现他家电设备的异常行为后表示很不理解,随后他把相关信息发布在X平台,很快这篇帖子就收获了超过1700万次的浏览量,并迅速变成一场争议和网络安全battle。
在不断发展的互联网世界,网络安全越来越受到重视,这不仅是因为相关法律法规政策的实施,还因为确保网络安全可以为企业减少财产损失。而确保企业在线业务安全的关键一点,就是SSL证书的部署,SSL证书不仅可以加密数据,还有助于在用户和搜索引擎之间建立信任。传统上,SSL 证书与域名相关联,但现在也可以为IP地址申请SSL证书。那么你知道为什么要为IP地址申请SSL证书?又该如何申请IP SSL证书呢?为
作为企业网站安全防护的基础设施之一,SSL证书对于验证网站真实性和保障网站数据传输安全具有重要作用。然而,当SSL证书过期时,用户与网站之间的传输过程就会处于暴露状态,很容易造成数据被监听、篡改和泄露。那么为什么SSL证书要设置有效期呢?如何避免SSL证书过期呢?今天小编就为大家详细解答下这些问题。为什么SSL证书要设置有效期?事实上,SSL证书设置有效期,并不是出于技术上的限制,而是基于安全性和
在当今数字化时代,如银行等金融机构每天都会处理大量的敏感信息,如用户资金和个人身份信息等。为了保护这些敏感数据信息的安全,给网站部署SSL证书成为金融机构最基本的措施之一,而对于SSL证书类型的选择,金融机构大都选择了EV SSL证书,比如中国银行、工商银行、招商银行等。那么为什么银行等金融机构更倾向于选用EV SSL证书呢?看完下面的内容也许可以找到答案。 首先,让我们了解一下什么是E
随着对混合工作模式和注重结果的工作环境的接受 ,我们已经到达了工作的未来。考虑到这些发展,IT 团队需要确保员工高效工作并对其设备上典型企业应用程序的性能感到满意。最终用户并不关心数字技术如何工作,只要它按其应有的方式工作即可。由于有如此多的竞争对手和可供消费者选择的替代品,提供糟糕的数字体验可能会导致业务损失。Gartner研究预测,到 2025 年,70% 的数字化企业将需要数字化体
一、政策上合规要求1.2021年9月1日国家正式实施了《数据安全法》、《关键信息基础设施保护条例》,数据安全法规定了个人身份信息、基础数据、核心商业数据等重要数据的保护要求,还要求金融机构应当按照分类分级原则,采取相应措施,落实数据安全管理责任和措施。2.而账号是进入数据仓库的钥匙,当钥匙管理不当、使用不当,或被别有用心的人利用,会直接影响企业数据和业务的安全性。账号安全是数据安全至关重要的一环,
当今的混合网络环境平衡了分布式网络和现代技术的实施。但它们并不缺少一个核心组件:服务器。保持网络正常运行时间归结为监控和管理导致网络停机的因素。极有可能导致性能异常的此类因素之一是硬件。使用硬件监控器监控网络硬件已成为一项关键需求。 硬件监视器是一种应用程序,通过从内置传感器收集的数据来监视硬件组件的运行状况和可用性。通过硬件性能监控,您可以检查关键的硬件性能指标,包括风扇速度、CPU
随着网络安全意识愈加深入人心,企业申请SSL证书以实现HTTPS加密,保护网站信息安全,防止网站信息被劫持、篡改已成为互联网人的共识。此外,SSL证书在提高网站可信度和品牌形象,建立用户信任方面也起着关键作用。然而,有时浏览器会提示“SSL证书不受信任”,这其中有哪些原因呢?一、证书颁发机构不被信任当浏览器遇到一个SSL证书时,它会检查该证书是否由被浏览器信任的证书颁发机构签发。如果浏览器没有一个
不均衡的维护实践和开发人员愿意下载高风险代码,使得开源存储库成为攻击者青睐的一种初始访问策略。
VSole
网络安全专家