FC游戏也有类似于今天的主机游戏的开发环境,但并不唯一。 简而言之,就是一台用于开发的电脑主机以及若干仿真外设。当然80年代的电脑主机和现在差别很大。代码图形也都是在这台主机上完成。编写语言为ASM(汇编语言)。卡带机时代主要的开发语言就是汇编,那时候不会用C语言。 下图是一些开发环境的例子,80年代初期用的是HP 64000,上面安装的PASCAL,但并不唯一。不同厂商所使用的环境有所差异。编写好的程序通过Emulation Probe上仿真测试,由于Emulation Probe代价很昂贵,并不是所有厂商都能有。没有该设备的情况下,就直接通过ROM仿真器插在FC实机卡槽上测试。 关于HP 64000的介绍,可以参考维基页面HP 64000 80年代后期标准开发环境是由INTELLIGENT SYSTEMS开发制定。由一块FC仿真板连接到富士通FMR系列电脑上进行开发调试。 富士通FMR系列维基介绍FMRシリーズ IS是任天堂旗下所属公司,作为硬件和软件的开发支援公司,同时IS也有自己的知名游戏(火焰纹章,纸片马里奥,高级战争,瓦里奥制造等) =============分隔线 日本FC的官方授权游戏最后一款是1994年的冒险岛4。在那之前或者之后,无论是中国国内还是国外,制作盗版的FC游戏卡带,都会有各自的开发硬件和仿真器。 图上这个就是个简易的仿真板,国外FC游戏爱好者自己做的。 改造过的NES主机(美版红白机),连接到仿真板用于调试测试。 用于烧录测试的卡带。 ==============分隔线 在电脑技术发达的今天,仍然会有很多怀旧爱好者会HACK或者制作新的FC游戏。现今开发FC游戏,基本上全部都能在windows电脑上完成了。用于仿真开发的软件也非常齐全。比如NESASM,CC65,VirtuaNES模拟器等。当然,制作出来的游戏,可以在模拟器上运行,但并不表示做成卡带能在实机上玩。这时候仍然需要烧录卡或者其他卡带仿真设备来测试了。 下图为2010年和2012年由Sivak Games(国外民间爱好者)制作发行的战地小子1和2的实体卡带。(这个是美版红白机游戏卡带,造型外观都要比日版的大一圈) 下图是现在有售的通用FC烧录卡,对于怀旧玩家来说可以在实机上玩到大部分游戏。对于开发爱好者来说,则可以用来进行实机调试。 对nes的学习和研究我也有快十年的历史。 刚开始是阅读模拟器代码,期间查漏补缺,学习硬件知识,直到最后还是从最简单最基础的做起,写nes的测试程序。简而言之,当时我连程序都不会写,就想到写模拟器,这是本末倒置。 去年在几个大神的指点下,已经开始用fpga对ppu进行时序上的复刻(其实已经有国人完成这一壮举,从芯片版图分析电路,分析出门电路,仿真,最后用FPGA实现)。其实有很多开源的nes fpga代码,几乎都是功能上的仿真,不能达到时序上的一致。 回到问题上来: NES的CPU是6502,NES代码都是用6502的汇编语言编写的。 为何不用C,理由很简单,那时候C刚刚发明。此外就算现在有了C编译器(cc65),但是效率低,占用资源高,总之缺点很多。 笔者有幸刚工作(2007年)的时候,就参与了很多汇编语言的项目,那时汇编也早就是个老古董了,当时我也是很抗拒使用,但是后来发现真的是很奇妙,能显著优化代码的空间和执行时间,对处理器有了进一步的理解。 NES游戏的开发环境: 软件就是汇编器了 硬件的话,那个年代我不太了解。看资料说是APPLE II(基于6502)和其他的一些仿真设备等。当然现在都是先在模拟器上测试的。 怎么才算是掌握了NES开发: 笔者以前看过一些爱好者做过的一些NES游戏,从游戏角度来说,可以算个游戏了。但是从NES硬件来说,根本没有利用NES的机能。 能明白以下几点,可以算是了解NES部分机能 1. SMB(超级玛丽)中横屏滚动,魂斗罗的竖屏滚动是如何实现的? 还记得小时候,玩SMB时,MARIO走过一段后,背景往左移动(在资源匮乏的年代,这个真的是太神奇了),一直想知道,之前的背景到哪里去了 2. SMB的分屏处理 小伙伴有没有注意到,SMB 人物移动时候,屏幕分上下2屏,上屏的分数金币那一栏是固定的,而下屏背景和人物是滚动的,这里面涉及到了sprite 0 hit检测,奥秘就在那个金币上 3. 切BANK技术 最简单的NES卡带,以SMB为例,代码/ROM占用32K, 图像/VROM占用8K 但是魂斗罗的卡带,代码/ROM 128K,没有图像数据。 其中就涉及到了BANK技术,此外图像数据也放在代码空间中 关于1和2点 网上有SMB汇编代码的注释和解析,可以搜索关键字SMBDIS ,好复杂的系统,没有耐心坚持下去。 后来我找到一个大神做的mario往前移动的,背景就滚动的简单DEMO(Advanced Nerdy Nights #4 (Sprite 0 Hit for a Status Bar) ), 一下子就明白了。 关3点 利用硬件来实现的,那些硬件就是我们现在都嫌弃的74系列的TTL芯片,看大家兴趣,我再写吧。 此外我发现,写verilog代码如果没有数字电路的基础,等于白搭,我现在又重新翻数字电路) 有错误的地方,请指正吧 目前就写这么多,有需要在更新吧 只知道CPU是6502,用的汇编开发的,别的真不清楚。之前有想法做个FC模拟器,可惜开个头就没时间弄了。 80年代的电脑主机和现在差别很大。代码图形也都是在这台主机上完成。编写语言为ASM(汇编语言)。卡带机时代主要的开发语言就是汇编,那时候不会用C语言。80年代后期标准开发环境是由INTELLIGENT SYSTEMS开发制定。由一块FC仿真板连接到富士通FMR系列电脑上进行开发调试。IS是任天堂旗下所属公司,作为硬件和软件的开发支援公司,同时IS也有自己的知名游戏(火焰纹章,纸片马里奥,高级战争,瓦里奥制造等) 日本FC的官方授权游戏最后一款是1994年的冒险岛4。在那之前或者之后,无论是中国国内还是国外,制作盗版的FC游戏卡带,都会有各自的开发硬件和仿真器。