用C语言开发NES游戏(CC65) 简介
粘贴到CSDN格式没调,想看格式好的点下面
https://happysoul.github.io/nes/
简介:
作者nesdoug,作者重写了他的代码并发布到了github https://github.com/nesdoug
作者的目的是让所有的开发者尽量不去学习6502汇编,通过C语音就能开发出来NES游戏
作者的过时教程:https://nesdoug.com/2018/07/11/backup-pdf-archive/ (作者留档用不希望读者看这些代码了,作者是不会再看了)
可能几乎所有原创的NES游戏都是用汇编写的。(1985年几乎没有人使用过C)。如果您更喜欢这条路线,那么您可以像作者一样从Nerdy Nights教程开始。
http://nintendoage.com/forum/messageview.cfm?catid=22&threadid=7155
我们来谈谈NES。
1983年在日本发布(Famicom),1985年在美国发行。1986年在欧洲
发行。1987年在澳大利亚发布。1993年作为顶级装载机重新发布,没有麻烦的锁定芯片。
日本有替代磁盘驱动器系统。FDS。
CPU,Ricoh 2A03,1.79 MHz,是带有音频电路的6502(缺少十进制模式)
256×240像素,可显示53种颜色中的25种。
64个精灵(8×8或8×16),精灵限制为每条水平线8个。
60 fps(50 fps欧洲)
这是CPU的内存映射
PPU(产生视频图像)是一个独立的芯片,具有自己的存储器。它只能通过一次缓慢的1字节从CPU访问,使用硬件寄存器。
这是PPU的内存映射
Nametable是一个技术词,基本上是指tilemap或背景屏幕。
另外还有另外256字节(0-FF)内存专用于Sprite(OAM)。这个内存特别不稳定,需要每帧重写一次。
看起来有4个可用的名称表(背景屏幕),但实际上只有2个内部VRAM。磁带硬连线要么处于“水平镜像”或“垂直镜像”。更高级的映射器可以在这些选项之间切换。
垂直镜像(或水平排列)用于横向滚动游戏,低2个名称表只是上面两个名称表的镜像,像这样...
水平镜像(或垂直排列)用于垂直滚动游戏,右侧2个名称表只是一个镜像或左侧2个名称表,如下所示...
有关更多详细信息,请查看nesdev wiki。
http://wiki.nesdev.com/w/index.php/Nesdev_Wiki
最后,游戏盒通常内部有2个ROM芯片。一个PRG-ROM(可执行代码)和一个CHR-ROM(图形块)。但有些游戏,而不是CHR-ROM芯片,有一个CHR-RAM芯片。图形位于PRG-ROM中的某个位置,程序必须将字节从那里传输到CHR-RAM芯片。
我的教程将专门处理CHR-ROM风格的游戏。这更容易。
您可能想要读取十六进制数字。以十六进制格式更容易阅读和理解8位数字。我通常使用$表示十六进制,但有时我使用0x。$用于汇编语言,0x用于C语言。你不需要成为一名数学专家,但如果你知道我在说什么,它会有所帮助。
用C语言开发NES游戏(CC65) 简介相关推荐
- 用C语言开发NES游戏(CC65) 前言
作者网站更新日期 2018年9月 翻译日期从2018年11月底开始逐步翻译,基于浏览器的翻译,重要地方逐句对比原和译文,有时候会加入些个人见解,让文字变得能像是句人话. 作者github地址: htt ...
- 用C语言开发NES游戏(CC65)15、音乐
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 我前段时间写了一篇关于NES Audio文章. https://nesdo ...
- 用C语言开发NES游戏(CC65)04、完整的背景
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 制作一张全屏显示的背景图 (备注:这里的RLE是作者将图片变成NES可以识 ...
- 用C语言开发NES游戏(CC65)21、完成一个游戏
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 我要做的第一件事是标题屏幕.这部分快速搞定,毕竟只是为了展示一下.我用 N ...
- 用C语言开发NES游戏(CC65)06、精灵
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 什么是精灵?精灵是一种可以在整个屏幕上自由移动的贴图.精灵通常是8×8,但 ...
- 用C语言开发NES游戏(CC65)14、游戏平台
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 我们要做的是向右滚动显示. 游戏吸引人的地方在哪里呢?重力. 我们需要16 ...
- 用C语言开发NES游戏(CC65)11、Metatiles
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 什么是metatile,对于贴图来说这是个特殊的词.在我的工程里有2x2的 ...
- 用C语言开发NES游戏(CC65)03、VRAM缓冲区
粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 我写了一些支持函数来填充VRAM缓冲区. 我使用了一些后台场景的代码,在c ...
- 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...
版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...
最新文章
- 创建多级目录函数MakeSureDirectoryPathExists()所需头文件
- CxImage图像处理类库说明3(转载)
- 26个音序的正确写法和占格_别让瞎练毁了健康,26个健身动作正误对比图,让我们正确健身...
- Android Studio安装应用时报错 installation failed with message Failed to finalize session......
- 构建自己的npm包 简单实现
- 黑猿大叔-译文 | TensorFlow实现Batch Normalization
- AOP jdk动态代理
- [透析] 卷积神经网络CNN究竟是怎样一步一步工作的?
- sql server数据库《音乐网站》项目歌曲管理模块
- Win10删除需要trustedinstaller权限的文件的方法
- android手机拍照软件,安卓手机拍照软件哪个好(五款手机拍摄软件深度横评)...
- YB5212A充电IC充电芯片sop8
- 金仓数据库KingbaseES V8R3使用Gorm指南
- 前端处理后端返回的二进制流文件
- 论人类思考时的贝叶斯过程
- 016 799打印错误_富士施乐2420打印指定故障“016-799”是什么意思?
- python导入mysqldb_Python导入MySQLdb
- 2016年6月,我们毕业了~~~
- 动态设置根节点字体大小
- vue3结合ts,导入vue项目文件,代码出现红色波浪线