点击上方 好好学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却可以实现那么长的剧情?相关推荐

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

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 来自 | 知乎 链接 | https://www.zhihu.com/question/50076174 编辑 | 深度学习这件小事公众号 ...

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

    大家好,我是一行~ 从小我就只需要3条命就可以通关魂斗罗,而且是魂斗罗1.2.3全通关的那种. 但是自己用代码写游戏之前,也会思考过为什么魂斗罗只有 128KB, 却可以实现那么长的剧情? 现代程序员 ...

  3. 魂斗罗_MD《魂斗罗》各大BOSS回顾

    MD版的<魂斗罗>质量毋容置疑,甚至可以说是该系列最鼎峰的作品.不但场面火爆,射击爽快,就是里面的BOSS也是种类繁多,各有特色,极具挑战性和观赏性. 小编采集了各条分支路线上所遇到的BO ...

  4. 为什么 128 KB 的魂斗罗可以塞下这么长的剧情?

    点击上方"小麦大叔",选择"置顶/星标公众号" 福利干货,第一时间送达 大家好,我是小麦,小时候用小霸王玩魂斗罗的时候,三条命就可以打通关,感觉自己挺厉害的,因 ...

  5. 为什么 128 KB 的魂斗罗可以实现那么长的剧情?

    为什么魂斗罗只有 128KB 却可以实现那么长的剧情?下面来给新生代程序员讲讲这里面的奥秘吧. 现代程序员A和1980年代游戏程序员B的对话: A:为什么你用128KB能实现这么多画面.音乐.动画? ...

  6. 为什么 128 KB 的魂斗罗可以实现那么长的剧情 ?

    喜欢黑客技术和网络安全的,可以关注看看 为什么魂斗罗只有 128KB 却可以实现那么长的剧情?下面来给新生代程序员讲讲这里面的奥秘吧. 现代程序员A和1980年代游戏程序员B的对话: A:为什么你用1 ...

  7. C语言手写魂斗罗(一)

    目录 1. 项目介绍 配套视频教程 2. 游戏效果演示 3. 项目准备 4. 创建项目 5. 实现游戏的启动界面 1. 项目介绍 使用C语言,手写魂斗罗经典游戏场景. 配套视频教程 视频讲解整个开发过 ...

  8. 音效摸鱼还不够爽?试试IDE里打几盘魂斗罗?

    1. 前言 前几天分享了 IDEA 的马里奥插件,收到了很多私信.但是胖哥感觉这种还不够爽,今天分享的摸鱼游戏插件才是真正的回味童年. 2. 真正的小霸王 IDE 高能预警,小心使用,这个可是真的会触 ...

  9. Java魂斗罗1234合集_《魂斗罗》正统续作1234部介绍,别再搞错喽!

    原标题:<魂斗罗>正统续作1234部介绍,别再搞错喽! 说到<魂斗罗>相信大部分玩家最早接触到的都是FC游戏,也就是我们说的小霸王游戏.红白机 但其实<魂斗罗>最早 ...

最新文章

  1. Groovy 之 Closure
  2. 不使用临时表,仅使用select实现查询出多行常数
  3. PCB走线角度为90度到底行不行?
  4. 错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap
  5. STM32 —— 中景园0.96寸OLED
  6. r720支持多少频率的内存吗_DDR4 2400到DDR4 3200,最大内存频率买多少?为什么买了高频 速度却上不去...
  7. 简单Android app开发_如何简单快速开发外卖app?
  8. linux 类似winscp_联合使用winscp和putty管理你的linux远程机器
  9. php strpose_php中strpos()和stripos()函数的区别用法详解
  10. 利用jquery的ajax获取后台返回的json数据为空
  11. 使用java自带工具监控jvm运行状态
  12. 《高等代数学》读书笔记前言
  13. [魔兽争霸制图 UI位置]
  14. Spring中FrameMaker中文乱码
  15. 如何开心愉快兴趣满满的学习机器人和人工智能知识并提升思维力
  16. swissprot评论区_【分享】SWISS-PROT简介
  17. vue如何实现打印功能
  18. PNG 图片压缩原理解析
  19. 趣谈网络协议-第二模块-底层网络知识详解:4陌生的数据中心2CDN和数据中心
  20. 好用的 word 生成 ftl 模板

热门文章

  1. 神经网络入门-MLP, RNN, BiRNN
  2. C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器
  3. C++(五)——运算符重载
  4. html5之form表单
  5. 【MFC】选择文件夹时,记忆上一次路径
  6. 2020-12-1(带你理解32位二进制搜索范围是4GB)
  7. 易语言金盾4.0登陆特征码
  8. Adobe Reader栈溢出漏洞(CVE-2010-2883)分析
  9. Windbg新手入坑指南
  10. 【Vue】 Error with Vue lazy loading components: “Failed to resolve async component“