[导读]星标「嵌入式大杂烩」,一起进步!大家好,我是ZhengN。小时候用小霸王玩魂斗罗的时候,三条命就可以打通关,感觉自己挺厉害的,因为魂斗罗的关数还是很多,剧情也比较长。那么,问题来了。为什么魂斗罗只有128KB却可以实现那么长的剧情?下面来给新生代程序员讲讲这里面的奥秘吧。现代程序...
大家好,我是ZhengN。小时候用小霸王玩魂斗罗的时候,三条命就可以打通关,感觉自己挺厉害的,因为魂斗罗的关数还是很多,剧情也比较长。那么,问题来了。
为什么魂斗罗只有 128KB 却可以实现那么长的剧情?下面来给新生代程序员讲讲这里面的奥秘吧。
现代程序员A和1980年代游戏程序员B的对话:
A:为什么你用128KB能实现这么多画面、音乐、动画?
B:128KB还不够么?其实为了表现力已经相当奢侈了,加了很多不重要的细节。
A:就说你们的音乐,这个音乐,我压到最低码率的mp3,也得至少1MB吧。
B:你怎么压的?一首背景音乐怎么可能超过1KB。
A:那你实现全屏卷轴,用了多少显存?
B:一共就只有2KB显存,多了也放不下啊。
A:……
1、我们对“数据量”无法直观认识
除非是专家,一般人根本无法估算到底多大算大,多小算小。
一般人对“数据量”并没什么概念。一篇800字的作文有多少数据量?按照GBK编码,约1.6KB,按照UTF-8编码,则是2.4KB。
只写了1个字的作文,按理来说1字节~3字节就够了。但只写1个字的word文档,有10956字节,而由于硬盘格式化要求,再多占用1332字节
我就写了一个字,真的什么都没干
现实中常见的产品、流行的技术,实际上和时代背景密切相关。
当你抱着15寸笔记本还嫌小的时候,1990年代初的家庭,可是一家人围着14~18寸的球面电视看的。把雪碧拿给古代人喝一口,估计他会齁得要死,必须喝点水压压惊。
当物质基础变得十分丰富的时候,一定会产生无法避免的“浪费”,这种“浪费”会进一步改变人感受的阈值,对度量的估计都变得紊乱了。
2、FC时代的图形技术
由于早期的记忆芯片(ROM)非常贵,而且大容量磁盘的技术也不成熟,所以暂且不论硬件计算能力,仅仅是想增加游戏的总容量也非常困难。所以自然会使用符合当时水平的数据结构。
以红白机FC为例,它的分辨率为256x240。分辨率不算低,但却只有2KB显存,而且还要实现全屏卷轴效果。
所以在FC设计之初,从硬件上就提供了充分利用显存的方法——使用Tile(瓦片)。
对每一个场景来说,使用若干数量的瓦片,场景用有限的瓦片拼接即可。这种“二级”表示方法能极大节约存储量。
具体一些原理讲解可以看一些科普,比如这个:
https://www.bilibili.com/video/BV19J411e763
3、音频容量和代码容量
现代音乐格式往往直接保存声道的波形,这种做法保真度高、通用性强,但很显然占用空间多,一首曲子的容量以千字节、兆字节计算。
而八位芯片时代的音频解决方案,关键是一颗专用芯片,例如FC用的理光2A03:
下:理光2A03
音频芯片可以产生合成音效,能提供的音色可以在一定程度上配置,但非常有限。听听FC游戏的音乐可以体会到常用的音色几乎一样。
我觉得这个音频芯片最厉害的地方是可以同时播放几个音轨(但不能是和弦那种“同时”),《魂斗罗》、《沙罗曼蛇》、《忍者龙剑传》的殿堂级音乐,主要是靠多个音轨的交替配合实现的。
每个音符只要记录音色、频率和音高就足够了,音频芯片自然会识别出来。把音符按时间排列好就是“乐谱”了,可以简单理解为“简谱”。
这种简谱需要的数据量十分有限,而且大部分游戏音乐都是循环播放,数据量更是小的可怜。
代码也是类似的。
FC时代的游戏,没有所谓的“引擎层”,或者说引擎层就是“硬件层”。任天堂的主机完全是为游戏而设计的,瓦片、调色板、音乐、音效等基本功能已经预先考虑到了,这样一来就节约了大量底层代码。
程序员要仔细研究文档,在硬件框架下思考问题,比如如何显示图片、如何卷动屏幕等等;而且还要非常熟悉硬件底层和汇编,不要浪费代码空间。
一来二去,代码也能写的非常小。
总的来说,128KB的游戏大作,在30年前稀松平常,放到现在简直就是黑科技。
科技的剧烈变革带来技术指标非线性的变化,让我们的记忆和直觉彻底落伍 :)
作者:皮皮关
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
业内消息,近日在央视播出的《对话》・开年说节目上,百度创始人、董事长兼首席执行官李彦宏表示,以后不会存在“程序员”这种职业了,因为只要会说话,所有人都能具备程序员的能力。李彦宏认为,未来的编程语言只会剩下两种,一种叫做英...
关键字:
百度
李彦宏
程序员
AI
近日,某厂一名员工爆料称,由于Bug事故,公司要求他返还去年发放的年终奖,共计4万余元;如果逾期不还,将以每天万分之5的利息收取滞纳金,即每天20元左右;甚至公司HR还扬言,如果三个月内仍不还,就免费开除。
关键字:
程序员
互联网
近日某厂员工爆料,公司程序员因线上流量异常BUG事故,被公司进行处罚。处罚的结果是被要求将去年发的 4 万多年终奖归还给公司,否则就收取滞纳金并辞退,逾期将以每天万分之 5 的利息收取滞纳金。
关键字:
程序员
BUG
事故
年终奖
工程师
据昨天外媒报道,OpenAI首席执行官、Y Combinator前总裁山姆·奥特曼(Sam·Altman)结婚了,男友为前Meta程序员奥利弗·穆尔赫林(Oliver·Mulherin),婚礼在夏威夷举行,整个仪式非常低...
关键字:
ChatGPT
Meta
程序员
OpenAI
山姆·奥特曼
今后,鸿蒙和安卓应用将不再兼容。眼下,越来越多的互联网公司开始招聘鸿蒙开发相关的人才,以适应市场的变化和用户的需求。
关键字:
程序员
嵌入式
近日,一则“中国程序员在越南遭受残酷虐待”的新闻,引发了国内外的关注和震惊。
关键字:
程序员
互联网
近日,上海公安局普陀分局成功破获一起案件,并在程序员圈内引起了不小轰动。因为该案件涉及的金额高达1.5亿元,而这仅仅是在半年时间内的非法获利。要知道,这样的赚钱速度放在整个互联网界也都是相当炸裂的!
关键字:
代码
程序员
近日,一位清华大学应届硕士生在网上发布的帖子火了,引起了众多网友的“围观”热议。
关键字:
互联网
程序员
最近两周,虽然没发公众号文章,但是粉丝量还是在零星的在增长,多谢支持,原先每天发一篇的计划也没有坚持下来,果然被你们说准了。不得不佩服,你们比我都了解我自己。不过停更的两周,我也没有闲着,整了三个轮子出来,喜欢或者感兴趣...
关键字:
程序员
公众号
文章
哈喽,大家好,我是月亮。一个工作n年的老程序员啦,平时在公号上给大家分享一些心得体会/有趣的工具,每周更新~今天月亮想和大家聊一下,我是怎么从一个什么都不会的计算机专业的小白,成功入门软件开发的。
关键字:
程序员
计算机
软件开发
程序员为了求职刷题已经是业内共识,但一位程序员却把leetcode注销了,因为纯属浪费时间,工作上又用不上,天天刷有什么意义?刷得再好,不也是35岁失业?多开会多写PPT,多给领导汇报,学习他们的管理逻辑商业思维,比刷题...
关键字:
程序员
管理逻辑
商业思维
一般从事互联网工作,尤其是软件类岗位,通常加班现象都是比较严重的。那么,做硬件的就没有加班了吗?
关键字:
互联网
程序员
工程师
在大多数人眼里,程序员是一份高薪职业,即便是刚毕业出来找工作的应届生,似乎也能随随便便月收入过万。那么,事实真是如此吗?
关键字:
程序员
计算机
在现在这个网络时代,程序员在日益辛苦地工作,他们总是喜欢学习、尝试新事物,求知欲望相当强,以最低调、踏实、核心的功能模块搭建起这个科技世界。那么,本期的老黄历就带大家一起来看看关于1024程序员节的由来。
关键字:
1024
程序员
科技世界
(全球TMT2022年8月15日讯)为全面和深入地了解中国开发者群体整体现状、应用开发技术以及开发工具、平台的状况和发展趋势,CSDN发布《2021-2022 中国开发者调查报告》,调研万名开发者,围绕开源开发者画像、...
关键字:
开发者
BSP
操作系统
程序员
北京2022年5月17日 /美通社/ -- 程序员作为互联网技术的关键支撑力量,是携带互联网基因的灵魂人物。互联网大厂程序员自带高光,一度成为就业市场上的香饽饽。在疫情的影响和互联网泡沫逐渐被稀释的情况下,以大厂为代表的...
关键字:
程序员
通信
大数据
联网技术
(全球TMT2022年5月17日讯)程序员作为互联网技术的关键支撑力量,是携带互联网基因的灵魂人物。互联网大厂程序员自带高光,一度成为就业市场上的香饽饽。在疫情的影响和互联网泡沫逐渐被稀释的情况下,以大厂为代表的互联网...
关键字:
程序员
通信
大数据
联网技术
最近有一条关于程序员删代码跑路的新闻登上了微博热搜。
关键字:
程序员
互联网