小时候玩的游戏机游戏插卡的游戏机一个比武的游戏

本铁路主题由
BBS Auto Examine System 自动审核通过。
查看: 786|回复: 0
小时候那种插卡玩的游戏机,原来是这么工作的
FC 游戏机的工作原理是怎样的?
  扼要的写一下显示部分的技术原理,尤其是设计缘由和精妙之处,尽量使外行人也能看懂:
  (一开始是预备知识,我至少假设读者理解二进制,二进制位 bit,字节 byte,十六进制表示等)
  显示的基本单元是像素(Pixel),我们看到的几乎所有显示器显示的东西都是许多像素组成的,可以把它们想象成一个个小方格,整齐的排列在显示器上:
  比如这幅 Lena 局部经过放大后,可以看出每个像素就是显示一个色彩的方块。当今我们常见的显示调色有 256 色,或者真彩(True color)24 位色。 所谓 256 色就是一个字节存储 256 种颜色,而真彩色是三个通道从暗到明各 256 色,然后三原色组合在一起。我们需要 3x8 个二进制位来表示。三原色共 3*8 bit
  FC/NES 的主要硬件包括一颗 MOS Technology 6502 芯片,以及被称作 PPU (Picture Processing Unit) 的图形处理芯片 RP2C02/RP2C07。PPU 有 2KB 的外部 RAM 来存储显示图像和其它辅助信息,256 字节的内部 DRAM 存储 sprite*,32 字节的内部 SRAM 存储调色板 *。
  * Sprite,常译作精灵。。。 指包含于场景中的二维图像或动画,NES 里基本就是会动的各种角色了,比如 Super Mario 里玛里奥自己,各种怪什么的。
* 调色板 Palette , 通俗的讲就是颜色编码表。NES 的 Palette 见下图(中文维基上说 48 种彩色+5 种灰阶是错的。。。只有 4 种灰阶,整个右边三列的色彩 RGB 表示都是 [0,0,0],编码 20 和 30 的都是 [255,255,255]):
  按照今天的显示技术来看,FC 的彩色技术简直就是奇技淫巧大集合。只有 2KB 的显存和 2KB 的主存,基本完全无可能装下彩色图像。
  做一个简单计算:
  分辨率 256x240 = 61440,即画面上有这么多个像素点。(忽略 NTSC 系统损失的 16 行,PAL 系统上是 256x240)
  我们如果只显示黑白,即每个像素非黑即白,那么单像素一个 bit 就可以了,这么大的分辨率下,一共需要 1 * 61440 / 8 / 1024 = 7.5KB,要是直接这么干黑白点都装不下主机显存,当时好点的电脑勉强差不多。
  假设我们用现在非常普通的 256 色,即 8 个二进制位,一个字节存储,整个画面 61440 / 1024 = 60KB,这在 FC 时代是任何普通机器都不能直接做到的。
  为了显示彩色,当时的不同机器有各种技术手段,可以说八仙过海各显神通。FC 用的第一种手段叫做 Color Cell,具体来说:
将整个图像分割成许多 8x8 的小 cell (或者叫 tile)
每个 cell 内至多有 4 种颜色
  这样,每个像素只用 2bit 来存储色彩,然后对一共 32x30 = 960 个 cell 再分配色彩编码,指示有哪几种颜色。
  举个栗子,我们熟悉的恶魔城 (Castlevania, 1986) 开场:(图片来自[dustmop.io blog])
  图中最小的格子(所有明暗线分割出的)即一个 cell 或 tile,四个 tile 组成一个 block(仅亮线分割出的)。图中一共用了 10 种颜色。你绝对找不出用了超过 4 种颜色的 cell。
  再看一个我顶我顶:
  编码后的 cell 表将存储在显存所谓 name table 区域中,刚才的恶魔城开场的区域编码成形如下图所示:
  FC 第二个高明的地方在于领先时代的滚屏技术,由于 PPU 内部有两个(镜像后是四个)name table 来存储 cell 表信息,我们可以一直预先存储着超过显示部分的内容,在玩家或者程序触发滚屏操作后,通过向两个寄存器 PPUSCROLL 和 PPUCTRL 写相关信息,即可移动游戏镜头。
  在 FC 之前的主机,滚屏操作几乎都要覆写整块屏幕,代价高昂。FC 的出现同时使得动作、射击型游戏得到极大发展。
  最后一个部分是游戏中运动的 Sprite,存储于显卡的特定内置存储区域,通常单个大小为 8x8 或 8x16,我们看到的主角们大都是多个 Sprite 拼到一起的,比如 Mario 实际上是 4 个 Sprite 拼出来的,只是在程序中保证不会散架。
  Sprite 的显示是覆盖背景的,无论背景如何设置,在 PPU 进行 Sprite 探测后都会将对应位设置成 Sprite 的色彩。
  最后,btw,基本上所有的 FC/NES 开发资料都能在NES dev和其附属 wiki 上找到,只是没有相关专业知识可能比较难啃。
  国人的《任天堂游戏编程探秘》一书总的来说还是比较详细的,然而很多关键之处却语焉不详,且花了很多篇幅教怎么写代码。对于外行来说还好,对于专业人士就基本无用了。更重要的是,这本书几乎没有讲任何 Rationale 的东西,对于真正的学习是灾难性的。
  来源:知乎日报
10:37, Processed in 0.116491 second(s), 19 queries, Memcache On.
Copyright &
www.railcn.net, All rights reserved.小时候玩的游戏机插卡的那种里有一个企鹅撬冰块的,粉小人和蓝小人,还有北极熊什么的,叫什么名字?APP里有对应的吗?
名字 叫《敲冰块》
,我以前也玩过的,APP也有,在这里可以下载
/a/item?docid=&f=web_alad_2_2
敲冰块(爱斯基摩人)
现存于世的企鹅有18种,它们分别是小白鳍企鹅、白鳍企鹅、黄眼企鹅、麦哲伦企鹅、秘鲁企鹅、加拉帕戈斯企鹅、帝企鹅、王企鹅、阿德里企鹅、南极企鹅、巴布亚企鹅、史氏角...
是“赤色要塞”赤色要塞是FC上非常不错,也是非常经典的游戏之一。这个游戏真的很简单,除了最后的大坦克要死3-4条命,其他关卡根本不死人还有1个地方就是最后一关的...
.............无语以下......原来你两认识....那个叫兔子历险记....我玩到很后面了...已经打到大猩猩了..可是没过去...可以去梦幻岛找...
答: 我玩游戏有什么最牛。。喜欢吃什么
答: 朋友相处要严以律己,宽以待人。朋友出去玩,AA制最好。如果不是,自己要抢先付钱,不要斤斤计较。你就是不坐船也要抢先付钱才对。意欲取之,必先予之。其实朋友只是要你...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415

我要回帖

更多关于 小时候玩过的游戏机 的文章

 

随机推荐