红白机的游戏是怎样开发出来的?

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游戏卡带,都会有各自的开发硬件和仿真器。

展开阅读全文

页面更新:2024-03-14

标签:马里奥   魂斗罗   富士通   仿真器   卡带   游戏   汇编语言   模拟器   爱好者   年代   语言   代码   环境   硬件   测试

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top