为什么魂斗罗只有 128 KB却可以实现那么长的剧情?
点击上方 好好学java ,选择 星标 公众号
重磅资讯、干货,第一时间送达
今日推荐:是时候扔掉Postman了,又一个被低估的IDEA插件出来了...个人原创+1博客:点击前往,查看更多
来源:https://dwz.cn/ZTAnWr5j
整理自公众号:java版web项目
个人觉得fc最神奇的游戏还属超级玛丽,32个关卡,每关都不同,各种隐藏要素,好像代码区才10多k,数据区10多k。反汇编看完还是不敢相信这点东西能玩一个童年…现在helloworld的二进制都可能比这大多了。
首先128k并不小
主要消耗存储空间的不是程序
当然对于128k来说程序大小自然也要考虑
鉴于fc是八位机 而且FC采用的是CISC处理器 一条指令就能完成很多事情
所以程序的大小也就现代64位RISC处理器的十几到几百分之一
资源才是大户(包括图像 音乐 地图数据 关卡数据 等等)
就拿图像和音乐来说
图像在没有压缩之前 消耗存储空间和 像素深度和大小有关
FC上的图像 像素深度就2bit的索引而已 而现在广泛使用的真彩色是24bit 包含alpha的需要32bit
这里就差了12倍到16倍
图像大小更是差距巨大
FC普遍一个角色也就是 宽高十几个像素而已
与现在动辄宽高几千像素图像资源相比差了 数万倍到数百万倍
所以图像资源消耗的存储空间 至少差了5~7个数量级
音乐的话
FC采用的是8位midi音乐
而现在普遍用的是PCM音乐
类比到图像中
就像矢量图像和位图的区别
总之PCM音乐的大小和采样深度 采样率 通道数 以及长度有关
midi仅仅和谱子的复杂度有关
所以FC实际上对空间的要求和现代游戏相比至少差了5~7个数量级
你把128k放大10w倍到1000w倍 你就不觉得小了
一些人还提到了什么64k 3d程序什么的
这完全是两码事
FC程序小只是因为需求的资源本来就很小而已
而那种64k 3d程序是因为采用Procedural generation方法
简单的说就是通过数学来描述
而不是通过记录结果的采样
Procedural generation 不光需要的存储空间极小
而且可以做到无限精度
缺点是难以描述复杂事物
并且对算力要求高
而不是用了什么外星压缩法
总结:
1.游戏大量复用图块,图块还使用调色板索引,好像每个像素才占用2bit。2.程序员精心优化各种数据结构,每一bit存储都不浪费。3.声音只存储发声通道的调制参数序列,能复用就复用。4.代码全是汇编写成,直接操作硬件,基本不存在浪费的指令。
为什么魂斗罗只有 128 KB却可以实现那么长的剧情?相关推荐
- 为什么魂斗罗只有 128 KB 却可以实现那么长的剧情?
点击上方 Java后端,选择 设为星标 优质文章,及时送达 来自 | 知乎 链接 | https://www.zhihu.com/question/50076174 编辑 | 深度学习这件小事公众号 ...
- 为什么魂斗罗只有 128KB 却可以实现那么长的剧情?
大家好,我是一行~ 从小我就只需要3条命就可以通关魂斗罗,而且是魂斗罗1.2.3全通关的那种. 但是自己用代码写游戏之前,也会思考过为什么魂斗罗只有 128KB, 却可以实现那么长的剧情? 现代程序员 ...
- 魂斗罗_MD《魂斗罗》各大BOSS回顾
MD版的<魂斗罗>质量毋容置疑,甚至可以说是该系列最鼎峰的作品.不但场面火爆,射击爽快,就是里面的BOSS也是种类繁多,各有特色,极具挑战性和观赏性. 小编采集了各条分支路线上所遇到的BO ...
- 为什么 128 KB 的魂斗罗可以塞下这么长的剧情?
点击上方"小麦大叔",选择"置顶/星标公众号" 福利干货,第一时间送达 大家好,我是小麦,小时候用小霸王玩魂斗罗的时候,三条命就可以打通关,感觉自己挺厉害的,因 ...
- 为什么 128 KB 的魂斗罗可以实现那么长的剧情?
为什么魂斗罗只有 128KB 却可以实现那么长的剧情?下面来给新生代程序员讲讲这里面的奥秘吧. 现代程序员A和1980年代游戏程序员B的对话: A:为什么你用128KB能实现这么多画面.音乐.动画? ...
- 为什么 128 KB 的魂斗罗可以实现那么长的剧情 ?
喜欢黑客技术和网络安全的,可以关注看看 为什么魂斗罗只有 128KB 却可以实现那么长的剧情?下面来给新生代程序员讲讲这里面的奥秘吧. 现代程序员A和1980年代游戏程序员B的对话: A:为什么你用1 ...
- C语言手写魂斗罗(一)
目录 1. 项目介绍 配套视频教程 2. 游戏效果演示 3. 项目准备 4. 创建项目 5. 实现游戏的启动界面 1. 项目介绍 使用C语言,手写魂斗罗经典游戏场景. 配套视频教程 视频讲解整个开发过 ...
- 音效摸鱼还不够爽?试试IDE里打几盘魂斗罗?
1. 前言 前几天分享了 IDEA 的马里奥插件,收到了很多私信.但是胖哥感觉这种还不够爽,今天分享的摸鱼游戏插件才是真正的回味童年. 2. 真正的小霸王 IDE 高能预警,小心使用,这个可是真的会触 ...
- Java魂斗罗1234合集_《魂斗罗》正统续作1234部介绍,别再搞错喽!
原标题:<魂斗罗>正统续作1234部介绍,别再搞错喽! 说到<魂斗罗>相信大部分玩家最早接触到的都是FC游戏,也就是我们说的小霸王游戏.红白机 但其实<魂斗罗>最早 ...
最新文章
- Groovy 之 Closure
- 不使用临时表,仅使用select实现查询出多行常数
- PCB走线角度为90度到底行不行?
- 错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap
- STM32 —— 中景园0.96寸OLED
- r720支持多少频率的内存吗_DDR4 2400到DDR4 3200,最大内存频率买多少?为什么买了高频 速度却上不去...
- 简单Android app开发_如何简单快速开发外卖app?
- linux 类似winscp_联合使用winscp和putty管理你的linux远程机器
- php strpose_php中strpos()和stripos()函数的区别用法详解
- 利用jquery的ajax获取后台返回的json数据为空
- 使用java自带工具监控jvm运行状态
- 《高等代数学》读书笔记前言
- [魔兽争霸制图 UI位置]
- Spring中FrameMaker中文乱码
- 如何开心愉快兴趣满满的学习机器人和人工智能知识并提升思维力
- swissprot评论区_【分享】SWISS-PROT简介
- vue如何实现打印功能
- PNG 图片压缩原理解析
- 趣谈网络协议-第二模块-底层网络知识详解:4陌生的数据中心2CDN和数据中心
- 好用的 word 生成 ftl 模板
热门文章
- 神经网络入门-MLP, RNN, BiRNN
- C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器
- C++(五)——运算符重载
- html5之form表单
- 【MFC】选择文件夹时,记忆上一次路径
- 2020-12-1(带你理解32位二进制搜索范围是4GB)
- 易语言金盾4.0登陆特征码
- Adobe Reader栈溢出漏洞(CVE-2010-2883)分析
- Windbg新手入坑指南
- 【Vue】 Error with Vue lazy loading components: “Failed to resolve async component“