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

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 为什么魂斗罗只有 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.代码全是汇编写成,直接操作硬件,基本不存在浪费的指令。

原文地址:https://sihai.blog.csdn.net/article/details/109465271

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> 为什么魂斗罗只有 128 KB却可以实现那么长的剧情?


 上一篇
一文教你 Dubbo 服务性能压测(with JMeter) 一文教你 Dubbo 服务性能压测(with JMeter)
  点击上方 **好好学java **,选择 **星标 **公众号 重磅资讯、干货,第一时间送达 今日推荐:为什么魂斗罗只有 128 KB却可以实现那么长的剧情?个人原创+1博客:点击前往,查看更多 原文地址:https://rics
2021-04-04
下一篇 
面试官问你 SpringMVC 的工作原理,你还不知道吗? 面试官问你 SpringMVC 的工作原理,你还不知道吗?
  点击上方 **好好学java **,选择 **星标 **公众号 重磅资讯、干货,第一时间送达 今日推荐:为什么魂斗罗只有 128 KB却可以实现那么长的剧情?个人原创+1博客:点击前往,查看更多 链接:https://segmen
2021-04-04