2024年5月28日发(作者:)
上一节说的这一节要说一下NES相关的函数,由于CC65不只是为NES游戏开发
提供编译,他还为其他的一些连我也不知道(孤陋寡闻了。。。)的程序提供编译
服务,所以你在安装文件下include目录下看到的.h文件中的所有函数并不是都
可以调用。
常用的头文件
1.< nes.h>
次头文件里面定义了一些常量如颜色值,还有两个函数:
waitvblank() 用于等待垂直中断,向当于让屏幕完成此次刷新,我们可以用它
来做延时函数
get_tv() 由于得到电视的制式,一般用不到
2.< conio.h>
简单说一下里面的函数:
clrscr() 清屏
gotoxy(x,y) 将光标定位于座标(x,y)处,还有gotox(x)和gotoy(y)两个单独改
变的函数
wherex() 返回当前光标的x座标
wherey() 返回当前光标的y座标
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>
只发现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 COLOR_LIGHTRED 0x0A
#define COLOR_GRAY1 0x0B
#define COLOR_GRAY2 0x0C
#define COLOR_LIGHTGREEN 0x0D
#define COLOR_LIGHTBLUE 0x0E
#define COLOR_GRAY3 0x0F
下面就来一次整体的测试吧。。。。。
修改上一篇所建立的
#include "conio.h"
#include "nes.h"
#include "stdio.h"
void delay(int i) //延时函数,传入延时参数i
{
while(i--){
waitvblank(); //等待垂直中断
}
}
void main() //主函数
{
char y=8,oy=8,i=0;
const char s[][24]={"My First NES Program"," I love NES!"," Do
you love NES?"," Yes!"}; //NES的可用RAM很有限,所以固定不变的
数据就使用const来声明吧
bgcolor(COLOR_GREEN); //设置背景颜色为绿色
while(1){ //无限循环
delay(20); //延时
gotoxy(6,oy); ///跳到上一次的位置
cprintf(" "); //清除上一次的文本
y++;
gotoxy(6,y); //跳到指定的位置
cprintf("%s",s[i]); //输出文本
oy=y; //记录当前的行
i++;
if(i>3){ //当四句话都循环完了就重新开始
i=0; //i复位
y=8; //行复位
}
}
}


发布评论