A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 750|回复: 5

【视频】fc游戏常见bug背后的原理

[复制链接]

精华
1
帖子
252
威望
1 点
积分
293 点
种子
12 点
注册时间
2006-10-2
最后登录
2024-7-5
 楼主| 发表于 2020-3-25 18:13  ·  贵州 | 显示全部楼层 |阅读模式
之前不知道为什么被禁言了,今天申请过后终于解禁。发个视频庆祝一下。

视频版: https://b23.tv/BV1L7411m7Wp



如果你的童年有过FC的陪伴,那你对以下的两个情况肯定不会陌生:

1:闪烁 2:花屏

在信息的交流和获取都非常落后的年代,大部分小伙伴都不清楚导致这种情况的原因。很多时候会以为自己的主机或者卡带出了问题,进而研究出了“吹气修复法”等秘技。甚至,这些常见的现象,和某些信息混杂在一起,组合成了新的“传说”,最典型的莫过于魂斗罗的“水下八关”——传说在魂斗罗1代第六关的关底,刷新一个向右跑动的杂兵,然后跟着他跑,在进入BOSS战后小兵会花屏,这时候跳到他身上就能开启水下八关。这条传闻已经被多次证实是子虚乌有的流言,在这里我就不展开了。回到花屏的问题,为什么这个杂兵跑到这个位置就会花屏呢?

是主机的问题?还是卡带的问题?或者是程序的问题?

其实,这并不是什么BUG,也不是什么问题,只是FC的显示方式导致的正常现象。要想弄清楚这个问题,我们先来简单了解一下FC的显示原理。相信大部分玩家都知道,我们在显示屏上看到的画面都是由一个一个的像素点组成的。比如今天主流的1080P显示器,就包含1920x1080总共约207万个像素点。在这207万像素的范围内,每个像素点按需要显示不同的颜色,最终组合呈现出一幅具体的画面。

但是早期的游戏机,比如今天要讲的红白机FC他其实并不具备按像素来控制和显示画面的能力。FC能显示的基本单位是一个8*8像素的贴图(字符块),这些贴图都是事先绘制好存储在卡带里面。使用的时候 根据程序的控制 就像拼积木一样,用这些贴图来拼合成最终的图像。但是这个合成的过程并不是直接从卡带里提取素材然后显示到电视上。FC的程序会先把当前画面需要使用的贴图提取到类似FC显存的一个存储空间中。这个空间非常的小,总共只有8K,而且其中一半只能用于角色、敌人等会运动的元素的贴图存储。另一半则只能运用于背景贴图的存储,所以一个关卡用到的全部贴图是没办法全部都放进来的,只能随着关卡的进行不停的更换其中的内容。这些贴图放到FC的显存后,程序会去开发者指定的地址调取图片来组合想要的画面


为了大家直观的理解上面说的这段内容,我在下面的EXCEL里面简单的画了一副像素画,最右边的两列代表FC卡带中存储的贴图内容,中间一列代表FC显存中当前存储的内容,最左边表示显示的结果。首先FC接收到程序的指令,需要调用显存里的这几个区域的图片,然后根据程序指令,在FC显存的对应位置找到图片,最后根据程序的指令拼合输出最终的画面,这就是一个完整FC画面输出流程。但是根据之前所说,由于FC的显存里的内容会根据游戏的需要进行更换。如果因为某些特殊原因,出现了本来不应该存在当前场景的物体,那么由于该物体原本需要的贴图已经被更换了,所以该物体便无法正常显示。以实例来看的话,比如魂斗罗第六关关底,当我们和小兵一起移动到BOSS区域后,程序切换了显存里的贴图素材,所以小兵之前正确的贴图就被替换掉了,导致本不应该出现在这里的小兵无法正确的显示出来,也就是会出现所谓的花屏或者贴图错误了。包括很多FC邪道速通的录像中,都能发现这种花屏的现象,其实都是因为让场景里出现了原本不应该存在的物体导致的。请注意,这种情况在程序执行的层面,其实并没有什么问题,所以并不是什么BUG。只要在切换区域时,加入一串消灭当前所有杂兵的指令就可以规避这一情况,所以这顶多只算是一个程序优化的问题。


至于另外一个经常遇到的【问题】:闪烁 就更不是什么BUG了,FC在内的早期游戏机,显示的图像都分为精灵(可动块)和背景两类。虽然他们在卡带的内部,都是一块块由***像素点绘制成的贴图,但是每一种图形的显示规则是不一样的。背景类的图形可以铺满整个屏幕。而精灵类的图形,在FC游戏里只能显示同屏最多64个 同一行最多8个。如果超出了这一限制,FC就会轮流来显示这些贴图但是因为人眼的视觉暂留现象,所以在我们看来,就变成了图像的闪烁,超过这一限制的数量越多,闪烁得也就越厉害。在发生闪烁的场景中按下暂停键 可以明显的看到部分图形是没有被显示的。FC几乎所有的游戏都存在闪烁现象。


而且除此之外,FC的画面显示还有其他很多很多的限制规则,但是早期的开发者们巧妙的利用各种方式打破了机能的限制。为我们呈现了一幕幕精彩难忘的画面。如果你对这些内容感兴趣,可以去看看我的《FC扩展芯片介绍》视频,希望有更多的玩家,能够体会到早期游戏设计的精妙之处。

精华
0
帖子
1885
威望
0 点
积分
2014 点
种子
72 点
注册时间
2005-1-4
最后登录
2024-11-24
发表于 2020-3-25 19:52  ·  河南 | 显示全部楼层
本帖最后由 cusuyu 于 2020-3-25 19:58 编辑

不错的文章 很详细...........

精华
0
帖子
24
威望
0 点
积分
24 点
种子
5 点
注册时间
2014-12-29
最后登录
2020-12-27
发表于 2020-3-25 20:36  ·  北京 | 显示全部楼层
本帖最后由 童年纸飞机 于 2020-3-25 20:38 编辑

说到底还是早期的游戏机为了降低硬件成本导致机能的不足无法处理过多的活动快。

精华
0
帖子
54
威望
0 点
积分
56 点
种子
0 点
注册时间
2011-10-6
最后登录
2020-6-12
发表于 2020-3-26 01:36  ·  江苏 | 显示全部楼层
楼主辛苦,虽然是老知识但再读一遍也还是很有趣。不过较个真儿的话,个人还是觉得把2d点阵图形称为“贴图”或“建模”不够严谨,印象中一些人云亦云不求甚解的玩家才这么叫。。多嘴了。

精华
1
帖子
252
威望
1 点
积分
293 点
种子
12 点
注册时间
2006-10-2
最后登录
2024-7-5
 楼主| 发表于 2020-3-26 02:33  ·  贵州 | 显示全部楼层
楼主辛苦,虽然是老知识但再读一遍也还是很有趣。不过较个真儿的话,个人还是觉得把2d点阵图形称为“贴图”或“建模”不够严谨,印象中一些人云亦云不求甚解的玩家才这么叫。。多嘴了。


之前有两期都是按严谨的标准做的,但是很多人反应看不懂233

精华
0
帖子
35
威望
0 点
积分
35 点
种子
5 点
注册时间
2019-12-20
最后登录
2021-4-30
发表于 2020-3-26 03:32  ·  云南 | 显示全部楼层
不错的文章,顶你。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-11-24 19:02 , Processed in 0.196998 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部