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

科技   2024-11-14 07:24   浙江  
👇推荐大家关注一个公众号👇
点击上方 "编程技术圈"关注, 星标或置顶一起成长
后台回复“大礼包”有惊喜礼包!

日英文

What is adhere to? Is day, and one day, you tell yourself, insist again one day.

什么是坚持?就是一天,又一天,你告诉自己,再坚持一天。

每日掏心话

不要沉迷过去,不要害怕未来,过去。得失也好,成败也罢,无论快乐,还是痛苦,都过去了,你只能回忆,而无法回去。

责编:乐乐 | 来源:方志朋

链接:www.zhihu.com/question/50076174/answer/1101330430

编程技术圈(ID:study_tech)第 3033 期推文


往日回顾:ChatGPT 4o 国内直接用!

     

      正文     

大家好,我是小乐

来源:www.zhihu.com/question/50076174/answer/1101330430

  • 1、我们对“数据量”无法直观认识
  • 2、FC时代的图形技术
  • 3、音频容量和代码容量

为什么魂斗罗只有 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年前稀松平常,放到现在简直就是黑科技。

图片

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


你还有什么想要补充的吗?

上周,又劝退十几个了。。。

ChatGPT 4o 国内直接用 !!!

最后给大家推荐一个ChatGPT 4.0国内网站,是我们团队一直在使用的,我们对接是OpenAI官网的账号,给大家打造了一个一模一样ChatGPT,很多粉丝朋友现在也都通过我拿这种号,价格不贵,关键还有售后。

一句话说明:用官方一半价格的钱,一句话说明:用跟官方 ChatGPT4.0 一模一样功能,无需魔法,无视封号,不必担心次数不够。

最大优势:可实现会话隔离!突破限制:官方限制每个账号三小时可使用40次4.0本网站可实现次数上限之后,手动切换下一个未使用的账号【相当于一个4.0帐号,同享受一百个账号轮换使用权限】


为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:ChartGPT与副业。想带着大家一起探索ChatGPT和新的AI时代

有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这三天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。

不光是增长速度最快,我们的星球品质也绝对经得起考验,短短一个月时间,我们的课程团队发布了8个专栏、18个副业项目

简单说下这个星球能给大家提供什么:


1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。

2、分享ChatGPT的使用方法、最新资讯、商业价值。

3、探讨未来关于ChatGPT的机遇,共同成长。

4、帮助大家解决ChatGPT遇到的问题。

5、提供一整年的售后服务,一起搞副业

星球福利:

1、加入星球4天后,就送ChatGPT独立账号。

2、邀请你加入ChatGPT会员交流群。

3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。

其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !

本星球第一期原价399,目前属于试运营,早鸟价149,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以更高价格加入了。。

早就是优势。建议大家尽早以便宜的价格加入!


PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

欢迎加入后端架构师交流群,在后台回复“学习”即可。


最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

别找了,想获取史上最简单的Java大厂面试题学习资料

扫下方二维码回复面试就好了

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

看看人家那权限管理系统,那叫一个优雅(附源码)!

牛逼啊!接私活必备的 400 多个开源项目!赶快收藏吧(附源码合集)!

用雪花 id 和 uuid 做 MySQL 主键,被领导怼了

项目从 MySQL 切换 PostgreSQL,踩了太多的坑!!!

,你在看吗?

编程技术圈
(本号原名:程序员小乐) 这里有Java、架构、Python、技术、算法、职场、感悟、面经、资源等,一线大厂干货,10万 + 程序员都在看,做一个有趣的帮助程序员成长的架构师公众号,每天早上07点24,第一时间与你相约。
 最新文章