纸片马里奥二周目攻略 红白机的游戏是怎样开发出来的?

[更新]
·
·
分类:游戏
1711 阅读

纸片马里奥二周目攻略

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

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

对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代码如果没有数字电路的基础,等于白搭,我现在又重新翻数字电路)
有错误的地方,请指正吧
目前就写这么多,有需要在更新吧

ns游戏机能玩马里奥嘛?

ns游戏机当然能玩马里奥!马力欧作为任天堂的招牌,赛车竞速类有《马力欧赛车8豪华版》系列、聚会同乐的《马力欧派对》系列、到角色扮演为主的《纸片马力欧》和《马力欧奥德赛与路易鬼屋3》、以及体育类的《马力欧网球》、《马力欧与索尼克奥运会》、《马力欧高尔夫》系列等等!