收藏 分享(赏)

10FCNES游戏开发教程(CC65版本)(十)(一起FC).doc

上传人:j35w19 文档编号:9248344 上传时间:2019-07-31 格式:DOC 页数:13 大小:706KB
下载 相关 举报
10FCNES游戏开发教程(CC65版本)(十)(一起FC).doc_第1页
第1页 / 共13页
10FCNES游戏开发教程(CC65版本)(十)(一起FC).doc_第2页
第2页 / 共13页
10FCNES游戏开发教程(CC65版本)(十)(一起FC).doc_第3页
第3页 / 共13页
10FCNES游戏开发教程(CC65版本)(十)(一起FC).doc_第4页
第4页 / 共13页
10FCNES游戏开发教程(CC65版本)(十)(一起FC).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、终于考完期末了,以后就开始假期了,闲暇的时间也估计多了,可以写东西的时间估计也多了,当然只是估计而已,也可能不上课期间忙。管它呢,离搬迁还有一两天,先写完这这最后一章再说了。本来之前就写了部分的,可惜电脑中毒,重弄系统,忘了备份,损失啊,那多少个日日夜夜积累下的代码,全部重写吧。在此也给看到这篇教程的朋友们一个提醒,小心防毒、小心备份。昨天看到好友 SHZkkqq 说我太谦虚,其实感觉太谦虚很不恰当,因为知道自己懂的太少了,所以好多地方都不敢妄加评论,我怕误人子弟,希望大家在看到我的教程中的错误是可以给我提出,有错误才有进步嘛,错不可怕,就怕不知道自己错了,不是吗?好吧,开始吧,说的这章要给大

2、家一个完整的 NES 游戏创建,这游戏没有大家想象的那么刺激,好像只能够证明 CC65 还能写游戏,希望大家不要抛砖。下面你看到的是一个创建游戏的整个过程,我将会从 CC65 的安装开始讲。一下所讲到的所有工具包括代码和资源都可以在我的网盘 http:/ 下载到,当然有些东西你可以去官网或者工具编写者的空间下载最新版本。首先安装 CC65(官网 http:/www.cc65.org/ FTP 下载目录ftp:/ftp.musoftware.de/pub/uz/cc65/),由于我们只是用来编译成 NES 的文件,所以安装选项中只选对 NES 的支持就够了。如图:安装完 CC65 就可以编译 C

3、 文件了。假设我们自己写了一个 C 代码文件,文件名为“helloworld.c”,代码为:#include void main()cprintf(“OK!“);while(1);我们的编译命令可以这样写:cl65 -t nes -o helloworld.nes helloworld.c意思是编译 helloworld.c 文件,使用的编译模式为 nes 模式,最终生成的文件名为helloworld.nes。用模拟器打开它就可以看到屏幕上显示“OK!”,更详细的可以看我前面的教程。好吧,开始我们的游戏吧。首先要大郅的构思一下我们的游戏的大致界面,我们想要的大致是可以移动一个主人公,他拥有推箱

4、子、放炸弹的能力,他的任务是摧毁箱子获得通往下一关的钥匙,仅此而已。如果你还想更多一点的话,可以让他在某一关开始会遇到敌人,或者炸开箱子后遇到敌人,或者很有诗意的最后救出了公主等等。鉴于时间和能力,再说也要给大家修改的空间,我就不打算实现那么多功能了,其实也不知道 CC65 所支持的 40k 的 NES 允不允许我们再去弄那么多了,这也是一个问题。要有主人公,当然要先让主人公有个人样(哦,当然主人公也可以是动物,当至少也要先有个样子) ,所以先画主人公和周围场景吧。打开 yychr,导入我之前提过的“标准 ascii.chr”这个是维京 猎人给我的,觉得里面的字体好看就定为自己的标准了,我不强

5、求大家遵守,只是为了表述方便,我一直在以它为例。先把它另存为一下,以免之后的修改破坏了“标准 ascii.chr”,我们另存为“mg.chr”吧(migong 的缩写,英文不好) ,记得把它存到待会我们要保存代码的文件夹下面。画面如下:然后发挥自己的想象力画一下我们的主人公及其他相关的图块吧,顺便感谢一下风竹丽影,因为我的图片全是她抽空帮我画的。 (主人公是打算使用 8*8,这样易于实现,其他的地图也是由 8*8 的图块拼接成的)最终的画面:补充一下:你可能会遇到导入 chr 文件后画面上也不显示任何东西,那可能是调色没弄对,你自己再配一下色就可以了。Yychr 的调色不会使用保存,希望知道的

6、朋友可以给我提示,谢过。更详细的使用见我前面的教程。有了图块,我们需要还需要制作游戏开始的界面,也就是我们的 logo,游戏时的框架(用来组织游戏在屏幕上的显示) ,以及游戏结束时的 GAME OVER 画面等等。于是我们需要用到另一个工具了,维京猎人的“ FC 专用地图编辑器” ,目前的最新版本是 v2.5,在此谢过猎人。先弄我们的 logo 吧,打开“ FC 专用地图编辑器” ,在菜单 字模导入字模中导入“mg.chr”,设置一下配色,拼成你想要的 logo 之后保存为 “mglogo.nmr”如图:用同样的方法创建出游戏框架“mgframe.nmr” ,如图:暂停时的画面“mgpause

7、.nmr” ,如图:游戏结束画面“mgover.nmr” ,如图:完成这些资源后,我们开始写代码吧,我写这个游戏的时候是一部分代码一部分资源的完成的,但是我我希望大家在写游戏的时候先整体构思后,准备好相关的资源在开始写代码,细心的朋友可能会发现我的字模文件很没有连贯性,就是因为想到一部分弄一部分的后果,希望大家吸取经验教训。给游戏想一个拉风的名字吧,原本想写的是迷宫,后了又改了,改的迷宫不像迷宫,泡泡堂不像泡泡堂,随便想一个名字吧,叫“迷宫不迷” ,也希望 FC 对于大家不是迷,希望大家精通 FC,本人的小小愿望,呵呵。代码部分我已经很详细的写了注释了。大部分都可以看懂了,又因为百度空间的文章

8、长度限制,我不可能一一讲述了。我挑几个地方讲讲吧。不懂的欢迎 E-Mail 我。1、 头文件包含你可能会看到如下的预处理命令:#include “mylib.c“ /包含我的库#include “mglogo_dat.h“ /包含 logo 名字表信息#include “mglogo_col.h“ /包含 logo 调色板信息#include “mgframe_dat.h“ /包含框架名字表信息#include “mgframe_col.h“ /包含框架调色板信息#include “mgpause_dat.h“ /包含暂停名字表信息#include “mgsp_col.h“ /包含精灵调色板#

9、include “mglogosp_col.h“ /包含 logo 时精灵调色板#include “mgover_dat.h“ /包含 game over 名字表信息#include “mgover_col.h“ /包含 game over 调色板信息#include “mgabout_txt.h“ /包含关于文档解释一下吧,第一条是包含我的库,因为游戏中很多地方要使用到库中的代码,所以你必须把它包含进去,并且你要保证 mylib.c 在游戏代码文件所在的文件夹下面。我使用的mylib.c 是 v1.2 的,你使用前面版本的库的话可能编译不通过或者是运行出错。关于我的库,你可以看前面的教程,有

10、详解的。后面的那些基本上是一个模式的,就是包含”aaa_bbb.h” ,因为这些都是使用 anytoc 从其他格式文件转换为 C 语言头文件的,期中 aaa 是原文件名,bbb 是原文件后缀。因此”aaa_bbb.h”的原文件是”aaa.bbb” 。问了以后的使用方便,我们做如下约定吧:当我们使用 anytoc 转换文件时,我们将文件转换为“文件名_后缀.h” ,并且在头文件中的数组名也是“文件名_后缀 ”。这样一来我们就容易记忆多了。比如我们要加载游戏的 logo 画面的话只需要“load_full_name_0(u8*)mglogo_dat);”就可以载入 logo 了。这样也就可以避免变

11、量名的冲突。最后的一句是包含游戏的说明,其原文件名为“gmabout.txt ”,文档中“”表示说明完,“$”表示换页。也许你会觉得这样包含很麻烦,我承认的确麻烦,但是本人也是没办法了。曾看过 rNES 的作者使用直接包含的方法(好像是直接包含一个其他格式的文件的方法,如#include “map.bin“),试了好久也没有成功,难道是编译器问题,还是他使用的是伪代码,只为说明问题。在 VC+平台下也试了他的办法,但好像这个不是 C 标准,伪代码的概率大。 。 。2、 关于 VRAM 的读写访问感觉这问题是个难题,之前问过猎人,他给过我一些建议,才实现了现在的访问功能。但现在有一个问题,直接访

12、问的话会有屏幕的闪烁问题。于是不断调试不断探索,才有了现在的一点点经验。如下:访问前先 waitvblank();访问完之后卷轴归位,再 waitvblank();这样就不会有闪烁,但有有一个问题来了,一个游戏中每个大循环中有好多个访问 VRAM 的过程,如果每次都这样的话游戏的速度就慢好的了。问题一直有只是换了一种形式。希望有解决方案的朋友给给建议,谢过!在代码中,卷轴归位我使用的是预处理命令来完成的,所以你会看到:#define ES() address(SCR_scroll_offset)=0;address(SCR_scroll_offset)=0这两行之后我们可以使用 ES();来完

13、成卷轴归位。所以但你看到:waitvblank();c=getc_xy(VRAM_name_0,bx-1,by);ES();waitvblank();也不用奇怪,这几句代码实现了读取对名字表 0 的(bx-1,by) 位置的读取。其他部分的说明希望大家自己去改改,然后发现其作用原理,说实话代码写的很纠结,好些想法都是想到了才加上去,所以从变量的命名到这个的游戏框架都很晕人,体谅体谅。 。写完代码可以开始编译了,因为之前包含了好多其他格式的资源文件所以我们必须先编译其他格式的文件,再编译我们的代码文件。于是编译文件这样写:anytoc mglogo_dat.h mglogo.dat 8 “con

14、st u8 mglogo_dat=“anytoc mglogo_col.h mglogo.col 8 “const u8 mglogo_col=“anytoc mgsp_col.h mgsp.col 8 “const u8 mgsp_col=“anytoc mgabout_txt.h gmabout.txt 8 “const u8 mgabout_txt=“anytoc mgframe_dat.h mgframe.dat 8 “const u8 mgframe_dat=“anytoc mgpause_dat.h mgpause.dat 8 “const u8 mgpause_dat=“anyt

15、oc mgframe_col.h mgframe.col 8 “const u8 mgframe_col=“anytoc mgover_dat.h mgover.dat 8 “const u8 mgover_dat=“anytoc mgover_col.h mgover.col 8 “const u8 mgover_col=“cl65 -t nes 迷宫不迷.creplace 迷宫不迷.nes 迷宫不迷 mg.chrpause前面 anytoc 开头的那些都是对资源文件的编译,期中包括对 FC 专用地图编辑器生成的名字表和调色板的编译、对说明文档的编译。“cl65 -t nes 迷宫不迷.c”

16、是对我们的代码文件“迷宫不迷 .c”的编译,编译完了之后会生成“迷宫不迷” ,这个是一个 NES 文件,只是没有后缀而已,加上后缀就是正常的 NES 文件了。但我们现在的“迷宫不迷”还不完全对,其中的字模是 cc65 自带的字模,我们必须把它替换成“mg.chr” ,所以有下一条了。最后一句“replace 迷宫不迷.nes 迷宫不迷 mg.chr”是对 NES 文件图案表的替换。关于 anytoc 和 replace 你可以去看我前面的教程。直接运行编译命令文件,当你看到如下结果时证明你成功了:用模拟器打开它吧,可以开始试试我们的游戏了,激动吧?当然真正写游戏的时候过程可没有这么简单,不停的

17、调试修改才能得到可以运行的游戏,过程一定是艰辛的,写过代码的人都知道跳程序的难。下面是部分截图:怎么样,这样一个 NES 小游戏的开发过程,是不是觉得繁琐呢?目前为止,我没有发现 cc65 内核的 IDE,本来开发的 IDE 就没几个,仅有的几个也都是汇编的。可能是我孤陋寡闻了,呵呵,有 C 语言版的 IDE 的同志说一声,参考参考。C 语言开发 NES 的难度使我有了写个 IDE 的想法,之前和猎人说过一下大致的,很深入的我没法弄,能力问题。我想着应该只能弄一个外壳,然后通过宏或者脚本来实现正开发和编译,甚至测试的过程。不过有一点得提一下,打算使用 VC+开发的,但是 MFC 编程还在入门,

18、入了好长时间了,一直没入,呵呵,不断加油中,完成的时间还不能确定,开发完成了我会通知大家的。下面大致的介绍了一下我的 IDE,给大家一个雏形吧,都是用画图板画的。界面估计会和 VC+类似,感觉这样的开发界面比较工整。左边会有资源管理窗口,它里面会有字模、地图、调色板、精灵等的管理,你可以直接双击就修改其内容。大致界面如下:它应该只是一个壳,几乎所有的功能都只是通过配置脚本或者宏来完成,这样做的目的是为了避免其他工具软件的重写,并且方便扩展。所有的所有,期待吧,和你们一起。 。 。 。如果 IDE 发布的话,估计还得再也几篇 IDE 的教程,如果 IDE 升级的话,它的升级方向应该是:1.易用性

19、2.中断和声音的支持3.对 40kNES 代码限制的突破4.其他如果谁对我所提的 IDE 有更好的建议的话,欢迎 E-mai 我,在我能力范围内的东西我会尽量吸取。对教程一到教程十(包括插曲)中的任何地方的任何疑问,也欢迎 E-mai 我,能答的我尽力答,答不了的我找人帮忙答,别人也答不了的,我也没办法了。经过几乎一个学期的不断更新,我把我所知道的关于 cc65 开发 FC/NES 游戏的知识几乎都给了这个网络,希望没入门的朋友看了之后可以很快入门,已经入门的朋友可以很深入的了解 FC/NES 开发。写该系列教程的原因是网络上关于 cc65 开发 FC/NES 游戏的东西太少(说实话其他开发方

20、案的资料也寥寥无几) ,自己学习的时候走过不少弯路,写下来和大家分享,希望大家少走弯路,并且对 FC/NES 充满信心。如果你对我的教材有任何的意见或者建议,欢迎留言或者 E-mai 我,任何有用或者无用的意见或者建议都将受到感激。说点其他的吧, 维京猎人(fogota)一直在致力于 FC/NES 的推广,他自己写教程、写博客、答问题、写编译器、前几天还自己录制了视频教程等等一大串的事情足以看出他的 FC/NES所下的功夫了,他不是计算机专业的,不是搞软件的,说实话他与计算机编程关联不大,但是他对 FC/NES 热情,并且想把 FC/NES 推广出去,这份心很难得。据我所知,他应该是全中国 F

21、C/NES 推广第一人吧(国外的我没接触过。 。 。 ) ,因为我所认识的其他人都没有他这么执着的在推广。说句实在话,现在推广 FC/NES 不容易,由于当今科技的发展,FC/NES几乎已经退出了历史舞台,从街上卖的小霸王可以看出来,几年前大街上卖小霸王的商家很多,而现在已经寥寥无几了。大部分人都会选择电脑,而不是小霸王了。不过猎人所推广的 FC/NES 和小霸王的相关性好像也不大,因为猎人(我们都一样)所推广的基本上都是生成 nes 文件,然后用模拟器打开,或者放到支持 nes 游戏的 MP4 或 PMP 中运行,当然把它烧写到卡上也行,那样就可以放到小霸王上面了(但这样的机会很少) 。随着

22、小霸王的淘汰,按理说 FC/NES 也应该退出历史的舞台了,但后来使 FC/NES 经久不衰的原因应该是一些支持 NES 游戏的掌机的出现,想部分 MP4、PMP 之类的东西,好像越山寨的越支持。这些东西使 NES 游戏在网络上流行起来,好多游戏网址都提供 NES 游戏的下载。这应该是 FC/NES 推广的一个方向。但就近几年来说,NES 很少有经典之作了,其很大原因是因为开发 NES 的人很少,至少在中国很少,而且都没有深入的开发,都是和我一样略懂皮毛的菜鸟之辈,成不了大气也是理所当然的。曾经想过 FC/NES 的推广,想过 FC/NES 的未来,也曾在群上发起过关于想过 FC/NES 发展

23、的讨论,不过很快就被其他话题所打乱了。FC/NES 开发到底是针对什么人?在我的观点中有一下三类:1. 和猎人一样,怀念小时候的小霸王,现在有固定的工作,业余之时可以抽时间自己写写游戏,由于对小霸王的怀念就选了 FC/NES 平台,这类人是最稳定的,应该说他们是 FC/NES 开发的主力。2. 和我一样,刚学了计算机编程,然后想到了小时候写游戏的梦,于是不停的百度,发现了可以写 FC/NES 游戏,其实我们也不知道为什么会选择 FC/NES 平台,可能是我们在百度搜索栏中写下的是 “如何编魂斗罗一样的游戏” ,于是就有一些链接把我们拉到 FC/NES 平台下面来了。我们这类人可能随着所学习的知

24、识的不断深入,感觉 FC/NES 满足不了我们的学习了,我们需要面向对象了,需要使用类了,需要网络了等待的时候,开始慢慢的冷落 FC/NES,可能会弄 GBA(支持 C+)或者直接转向计算机编程了。我们很不稳定,当练习的目的达到之后就会离开了,除非我们很怀念 FC/NES,在我们转向其他平台的时候也会偶尔拿起 FC/NES。3. 和谁一样的,估计在高中,自己有个可以运行 NES 游戏的 MP4,觉得魂斗罗老是死人也不是办法,想自己弄或者修改一下,于是依然选择百度,得到的资料不多,而且都是写不懂的鸟语,没学过编程,没学过硬件,于是迷迷糊糊的加了群,迷迷糊糊的看着群里面的人讨论,后来有迷迷糊糊的被

25、请出了群。他们想做 FC/NES游戏,但是知识有限,时间有限。能力强的能够把网络上给的例子编译运行一下,其他的就做不了什么,这不能怪他们,因为网上的教程很少是针对没有任何计算机知识的人写的。当然猎人的有些教程倒是挺详细的,零基础开的,但这样的资源实在太少了。就如我所写的教程,直接跳过了 C 语言的知识。那么,FC/NES 推广的方向应该是什么?这个问题我问大家了,希望能够看到大家的留言或者来信什么的。补充:早该出的教程了,一直拖到现在,对不起大家了。不过值得一提的是,在我拖拖拉拉这段时间有幸赶上了猎人出的 FC 字模生成器 V0.2 ,用过我预发版本迷宫不迷的同志都知道我里面的汉字是用手写的,

26、那个惨不忍睹就不多说了。现在版本里面的 16*16 字模都是用 FC 字模生成器 V0.2 生成的,再次看出猎人的高效与执着了,在此佩服过,谢过。需要该软件的同志可以到他的网盘下载。最后,感谢支持,感谢阅读,谢谢!所有和教程相关的例子、库、工具都可以在我的网盘 http:/ 下载到。E-Mail:Q Q : 472497084百度空间:http:/ /trbbadboyFC/NES 教程分类:http:/ boy我们的 QQ 群:新手接待群:59527749FC 游戏 DIY 群:72997871相关链接:维京猎人的博客:http:/nicotine.knight.blog.163.co m/维京猎人的网盘:http:/ ota维京猎人的视频教程:http:/ _show/id_4733222.html我们的贴吧:http:/ 117329/事后 PS:希望更多的人加入到 FC/NES 这个行列来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报