注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深夜是徘徊在潮湿睫毛上的我的梦以及他的梦

是直到最后都无法放手的一种气息,是我们生命中最后的思念……

 
 
 

日志

 
 

用NBasic来写一个ROM,只显示一个字母A  

2009-10-07 01:21:50|  分类: FC教程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

代码是这样的(网页上的代码用来看就好了,别直接copy当成代码,因为可能在转换成网页时,或copy时代码的被加入了一些不正常的ascii码. 所以,最好是下载我的代码.)

下载http://www.uushare.com/user/fogota/files/2090123

文件名"NB教程01_只显示一个A字母.zip" 这个代码,经过测试,确定能够生成NES

使用方法就是执行批处理文件就行.

/////////////////////////

//文件头
asm
.inesprg 1 ;//1个PRG bank就是16K
.ineschr 1 ;//1个CHR bank就是8K
.inesmir 0 ;//mirroring type 0
.inesmap 0 ;//memory mapper 0 (无切页)
.org $c000 ;//程序从地址$C000开始
.bank 0 ;//bank的编号是0
endasm

;//程序开始,这个标签必须要有,因为后面要用到

start:

;//定义两个重要的端口

set $2000 %00000000
set $2001 %00011100

;//调用配色子程序
gosub load_palette


;// 显示1个字母A,在地址$2103
set $2006 $21
set $2006 $03
set $2007 65

set $2005 0
set $2005 0

;//结束了,进入死循环.因为FC没有end
mainloop:
goto mainloop

;// 配色
load_palette:
;// set the PPU start address (background color 0)
set $2006 $3f
set $2006 0
set $2007 $0e //只写入2个配色,意思意思
set $2007 $30
return


;//文件尾
asm
;//定义3个重要地址指针 NMI, Reset, IRQ
.bank 1
.org $fffa
.dw start, start, start
;//定义字模共8K,这里每个CHR只有4K
.bank 2
.org $0000
.incbin "ascii_2.chr"
.incbin "ascii_2.chr"
endasm

;//这个CHR的内容就是英文大小字母,并按ASCII码排布..

////////////////////////////

文件头的意思,大家看资料就行了,就是指明程序限定了多长,字模文件限定多长,mapper号什么

基本的步骤是:

1设定$2000和$2001,

2配色

3在背景上显示字母

4结束

十分的简单,因为是最最简单,所以省去了好多步骤.例如清除内存和跳过回扫线.

没有跳过回扫线,这会让我们看见它闪了一下.

这个只供初学者学习.

(1)标签,就是像这些 start: load_palette: mainloop: 后面总带个冒号的

它的作用是指明程序所在的位置,明确的地址却不用写出来.编译器自然能处理.

(2)ORG是指明下面部分的开始地址.这里必须是$C000,因为是不切页,程序最好从$C000开始

(3)set 语句就是赋值语句.

例如 set $2000 %00000000

就是向 $2000这个地址写入%00000000 ,其中%表示2进制数 (因为$2000是一个端口,是位操作,所以用2进制,方便查看代码)

例如 set $2006 $21

就是向 $2006 这个地址写入$21,其中$表示16进制数

例如 set $2007 65

就是向 $2006 这个地址写入65,这是10进制数

(4)gosub 调用子程序,

gosub load_palette 调用子程序load_palette, 子程序执行完了返回,执行下一句

(5)goto 跳转,跳到某个标签上继续运行.

goto mainloop 就是跳到mainloop运行..

////////////////////

程序是一句接一句的运行的,goto和gosub就是用来改变运行的次序的.

这里写得不太好,我写了更祥细的说明,看这

http://nicotine.knight.blog.163.com/blog/static/269261122009990114889/

基本上,我认为好祥细的了,有不明白请留言.

  评论这张
 
阅读(457)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017