level 1
1.< nes.h> 次头文件里面定义了一些常量如颜色值,还有两个函数: waitvblank() 用于等待垂直中断,向当于让屏幕完成此次刷新,我们可以用它 来做延时函数 get_tv() 由于得到电视的制式,一般用不到 2.< conio.h> 简单说一下里面的函数: clrscr() 清屏 gotoxy(x,y) 将光标定位于座标(x,y)处,还有 gotox(x)和 gotoy(y)两个单独改 变的函数 wherex() 返回当前光标的 x 座标 返回当前光标的 y 座标 wherey() cputc(c) 向屏幕输出字符 cputcxy(x,y,c) 向屏幕座标(x,y)处输出字符 cputs(s) 向屏幕输出字符 cputsxy(x,y,s) 向屏幕座标(x,y)处输出字符串 s cprintf const char* format, ...) 和 C 语言中的 printf()貌似 textcolor(c) 设置文本颜色,好像不成功。。 bgcolor(c) 设置背景颜色 以上就是常用的,其他的还有几个,提醒和输入相关的函数大部分都不可用 3.< stdio.h> 只发现
2011年11月27日 12点11分
1
level 1
sscanf()有点作用,其他的和文件相关的都不可用。 在 include 目录下还有好多头文件,但大部分对 NES 都是不可用的,有兴趣的可 以自己打开看看,以上就是常用到的了。其它的如果以后用到了,我会在补充。 CC65 的语法补充,CC65 基本上符合 C 语言的规范,我目前发现的不符合之处就 是不支持位段结构体的定义,当然这不影响其他地方的使用。。 补充,颜色值:
#define COLOR_BLACK 0x00 #
define COLOR_WHITE 0x01
#define COLOR_RED 0x02 #
define COLOR_CYAN 0x03
#define COLOR_VIOLET 0x04 #
define COLOR_GREEN 0x05
#define COLOR_BLUE 0x06 #
define COLOR_YELLOW 0x07
#define COLOR_ORANGE 0x08 #
define COLOR_BROWN 0x09
#define #
define
#define #
define
#define #
defineCOLOR_LIGHTRED
2011年11月27日 12点11分
2
level 1
COLOR_GRAY1 COLOR_GRAY2 COLOR_LIGHTGREEN COLOR_LIGHTGREEN COLOR_LIGHTBLUE COLOR_GRAY30x0A 0x0B 0x0C 0x0D 0x0E 0x0F下面就来一次整体的测试吧。。。。。 修改上一篇所建立的文件为一下内容:
#include "conio.h" #
include "nes.h" #include "stdio.h" //延时函数 延时函数, void delay(int i) //延时函数,传入延时参数 i { while(i---){ while(i--){ //等待垂直中断 waitvblank(); //等待垂直中断 } }//主函数 void main() //主函数 { char y=8,oy=8,i=0; First const char s[][24]={"My First NES Program"," I love NES!"," Do 很有限, you love NES?"," Yes!"}; //NES 的可用 RAM 很有限,所以固定不变
2011年11月27日 12点11分
3
level 1
HelloWorld.nes VirtuaNES.exe HelloWorld.nes 这时你必须保证模拟器也在源代码的目录之下。。。 编译结果:没错误得很,接着就会自动运行模拟器:你可以看到四行字不停的跳动。。。。。 下一节开始讲手柄控制器。。。。。事后 PS: CC65 还有很多有用的函数我讲到,你可以打开 include 目录看一下 Nes 的头文件, 一个一个试试吧,这样印象深刻一点。
2011年11月27日 12点11分
5