集体感觉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.代码全是汇编写成,间接操作硬件,根本不存在节约的指令。
作者:红白机
起源:http://rrd.me/eYSCg