用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语言。你不需要成为一名数学专家,但如果你知道我在说什么,它会有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值