nes模拟器FAQ

更新时间:2023-06-28 00:41:13 阅读: 评论:0

【扫盲贴】NES 技术/模拟器/开发 FAQ
       
    NES 技术/模拟器/开发 FAQ
(简称 "NES Tech FAQ")
原文版本 1.4, 作者为 Chris Covell (chris_covell@yahoo.ca) 最后更新日期为 2002 年 1 月 18 日.
中文版版本 1.4.0.66, 翻译者为 Blue Potato () 最后更新日期为 2004 年 7 月 17 日.
写作目的
本文的写作目的是为了回答对 NES 系统好奇的人们经常问到的关于 NES/Famicom 的技术、NES 模拟器和 NES 开发的问题. 本文不是 NES 的权威文档; 更恰当的说, 它是研究散布于互联网上的其他文档的出发点. 需要注意的是, 本文并不仅是对于陈旧技术的讨论. 我将我长沙策划
的观点引入一些有争议的问题. 如果你对此有疑问, 就自己写一篇缺乏生动和幽默的文档. 然后在 Microsoft 找一份工作, 你将会非常完美的适合这份工作. Nyuk Nyuk. :-)
你应当注意到了, 因为本文有我自己完成, 文中的语法和拼写都使用的是标准的加拿大英语 (standard Canadian English) . 所以, 如果你喜欢将 "colour" 写为 "color", 或者你喜欢将 "while" 写为 "whilst", 或者即便你习惯将 "spelled" 写为 "spelt", 忍受一下吧. 这只是我的方法.
--------------------------------------------------------------------------------
目录
基本问题
NES 使用什么 CPU?
NES 能同时显示多少中颜色?
NES 的分辨率是多少?
为什么 NES 会降速或闪烁?
内存镜像是如何工作的? 为什么有很多内存镜像?
郎女什么是 NES 的停机芯片 (CIC), 它是如何工作的?
怎样翻译 NES 游戏?
所有 NES 游戏中最大的是哪个?
最小的 NES 游戏是什么?
怎样才能得到原型 (prototype) NES 卡带?
硬件
如何打开 NES 卡带?
能够禁止停机芯片吗?
NES 和 Famicom 兼容吗?
瘦肚子的运动
NES 和 Famicom 的硬件一样吗?
怎样在北美/欧洲使用日版 Famicom?聚优网
NES 和 SNES 兼容吗?
明初诗文三大家
NES 和 Gameboy/GBC 兼容吗?
老式 (toaster) NES 和新式的顶部读取 NES 之间有什么区别吗?
Famicom 和 NES 的控制器通用吗?
SNES 和 NES 的控制器通用吗?
怎样从 NES 中获得 RGB 信号?
能让顶部读入的 NES 输出 A/V 信号吗?
NES 能够输出立体声或单独的声道吗?
什么是 Famicom 磁碟系统 (Disk System) ?
金手指 (Game Genie) 如何工作?
NES 中的电池可以持续多长时间?
可以在不清除掉 RAM 中存储信息的条件下更换电池吗?
NES 上的扩展接口是用来干什么的?
模拟
模拟是非法的吗?
怎样才能拷贝/备份 NES 游戏?
怎样才能把 X 游戏拷贝到卡带上?
可以制作/购买通用型 NES 卡带吗?
我想做模拟器. 应当从那里入手呢?
¥?#181; a?3 £ee+, g0+ an¥ ROMz +?g?v3 m3?
怎样才能把 .FDS 文件读入我的模拟器?
什么是 iNES 的文件头?
什么是 UNIF?
有 iNES < - > UNIF 转换程序吗?
什么是 .IPS 补丁? 怎样才能使用它?
什么是 NSFs?
如何分离 NSFs?
蛋糕配方程序设计
stripNES 游戏用什么语言编写, C, BASIC 或者其他语言?
怎样才能开始编写 NES 程序?
How do the NAME table, ATTRIBUTE table, and PATTERN table all fit together?
How are NES graphics laid out?
How does palette mirroring work?
How does PPU mirroring work?
How does sprite 0 hit detection work?
What is VBlank and what is HBlank?
How many scanlines are in VBlank period?
What's up with $2005/2006?
How can I get a stable background in my demo?
Why is there graphics glitching when you change $2005 or $2006 mid-screen?
Is the NES palette RGB or what?
How do I get an accurate palette then?
What is the right register value for black in the palette?
What are the colour emphasis bits?
What is the monochrome mode in the NES?
What are bus conflicts?
Do I enable interrupts (CLI) in my demo?
How can I make music for my demo?
Why does my demo work in an emulator, but not on a real NES?
How can I test my demo on a real NES?
How does the NES produce sampled sounds? What bit size are they?
How does $4011 work?
Why does my demo's timing mess up when a DMC sample is playing?
数学手抄报四年级上册What's better, writing to SPR-RAM directly, or using DMA?
Thank-Yous
基本问题
Top
NES 使用什么 CPU?
它的 CPU 是基于 6502 NMOS 系列的 8 位处理器. 由 Ricoh 制造, 名字是 RP2A03G. 它的指令集并不包括任何 CMOS 的 "STZ" 指令, 更重要的是, NES CPU 没有十进制工作模式. 你可以任意设置和清除十进制标志, 但是任何 NES 上的算法指令都将以基数为 16 来计算. 定制的 NES CPU 内建 5 条不同的音频通道.
NES 能同时显示多少中颜色?
一般来说, NES 可以显示 13 种不同的背景色, 和 12 种不同的活动块色 (挺拗口的, 原文是 "sprite colours" -- 译注), 总共每次同屏 25 色. 然而, 使用 PPU 欺骗技术 (PPU trickery), 可以一次显示 NES 的调色板中的全部 64 色. (如果你将颜色强调位 (Colour Emphasis bits) 像 PPU 欺骗技术一样使用, 我猜你会说你能一次同屏最大显示 512 色. 但是那需要将物体拉伸. 举例来说, 那像是调色板块之间的一些副本.) 总之, 就让我们认为一般来说最大颜色数目是 25 色, okay?
NES 的分辨率是多少?
NES 的分辨率 是 256x240. 许多年来, 人们都认为 NTSC NES 的分辨率低于 PAL NES, 于是许多模拟器只显示 256x224. 这对于许多显示屏或电视机是正确的, 最顶部和最低部各有 8 线被切掉了; 然而这是显示设备的机能, 不是 NES 所必需的. 在我的显示器上, 使用我的 NTSC NES, 我可以看到从第 8 到第 240 条扫描线 (有附加的 3 条) . 一般来说, NES 输出第 233-240 的全部扫描线 (曾经被认为是隐藏的) . 最顶部的 8 条依旧假设为是被隐藏的, 但不一定是. 例如, 当我的录像机录下 NES 的显示时, 先前的 4 条线就可见了. PAL NES 显示全部的 240 条扫描线, 不存在上述的问题. NTSC NES 依旧有些不明确.
最后一条是 (并非有意的双关语) (原文是 "The bottom line (no pun intended) is" -- 译注), 如果制作一个模拟器, 你应当提供是否显示顶部和底部的各 8 条扫描线的选项. 如果你写 NES 的 demo 或者游戏, 你应当假设玩家也许能够看到你放在屏幕最先和最后的那些行的东西.
为什么 NES 会降速或闪烁?
NES 并不是自动降速或闪烁. 事实上, 原因是游戏变得太复杂了, 过多的物体被引入到显示区域, 使用一帧的时间 (1/60 秒) 无法计算一帧的行为了. NES CPU 的速度大约是 1.79Mhz, 对于某些计算来说并不足够快. 事实上, 如果计算溢出到下一帧, 游戏时常会出些小故障或定住. 于是, 程序员会将游戏速度变慢以将连续的帧之间的计算分割.
闪烁一般是一条水平扫描线上有太多的 sprite 的结果. NES 能够在同一线上最大显示 8 个 sprite. 如果超出了, PPU 只是简单的不显示他们. 于是, 程序员就需要在显示一个个的 sprite 集合之间进行转换. 这是通过一个好用的算法 "OAM Cycling" 来处理. 由于使用了 OAM 算法, sprite 可能会闪烁 (比如许多 Konami 游戏), 或者以水波的效果取消 (一些游戏中) .
内存镜像是如何工作的? 为什么有很多内存镜像?
6502 CPU 只有 16 位地址总线. 这就意味着它每次只能访问 ROM 或 RAM 中最大 65535 字节. NES 被设计只能访问那么多 ROM 中的一半. 由于程序员想要有更复杂的游戏, 他们需要一种方法以将游戏大小扩展超过 32K ROM. 因而, 内存镜像就是将不同的程序代码块转换入 CPU 可访问的 32K ROM 的设备.
在增加地址空间后, 许多现代内存镜像确实增加了游戏的可用角色图形数目, 以及如何把它们连接起来. 第一个改变图形的镜像能够进行每次 8K 的转换. 然而, 后来的镜像允许游戏能够进行 CHR ROM 中更小部分的交换, 进行更多的背景动画. 另外, 许多游戏公司推出了他们自己的支持 IRQ 计时器的镜像, 允许 PPU 执行 trick. 一些镜像还有附加的音频芯片, 以增加游戏中的音乐复杂度 (只有 Famicom) .

本文发布于:2023-06-28 00:41:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1057964.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:游戏   镜像   使用   能够
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图