devkitPro和PAlib
建立DS开发环境,你首先得下载并安装devkitPro:devkitProupdater
(/project/?group_id=114505&package_id=160396
)。现在,用这个比较好的安装程序来安装devkitPro。注意!你可以不选择PSP和GBA库,
但不要动其它选项(MSYS,devkitarm,libnds...)。如果省了一些东西,它会罢工的。
如果你不能确定,那就选中全部,如果安装多了不会有问题的。
现在PAlib需要你安装.Net框架。PAGfx(图像转换),PAFS(文件系统),和VHaM(IDE)
安装需要它。
/downloads/?displaylang=zh-cn&FamilyID=0856
eacb-4362-4b0d-8edd-aab15c5e04f5
下一步,下载并安装PAlib(使用安装程序):PAlibInstaller
/project/?group_id=142901&package_id=168612
把它安装到devkitPro的目录里,这样所有事情就完了。
对于devkitPro和PAlib,注意,不能安装到一个名字中含有空格的目录中(如:c:DS
DevelopmentPALib)。同样,也不能安装桌面,因为桌面的目录是c:Documentsand
Settings...
现在完成了,进行下一步:)
编译测试
检查安装正确与否不需要大量的方法...它不难,来吧,希望它工作正常!
我们将要编译第一个例子。打开PAlibExamplesTextHelloworld,双击来编
译...如果一切正常,会生成和文件。
嘿,就这么简单!
现在,有2种方法来运行rom:使用模拟器(注意,有很多bug)或硬件
(flashme/passme/wifime/wmb)。
模拟器
目前只有4种模拟器,不过现在我们只有其中2种。
HyperDs是第一种模拟器,从未公开发布,从未用过...lol
Dualis(/),运行得很好。我经常用它。它对2D测试表现
得很好,能支持大量选项。缺陷:R12版本有一个bug--当使用笔时会崩溃,因此只好使用
R11版来测试...我个人把.nds文件与Dualis程序相关联,双击rom会执行它。
iDeaS(/)是另一个比较好的模拟器!它是第
一个也是目前唯一一个支持3D和声音的模拟器。最新版本1.0.0.5已经出来很久了,而且
WIP版本的截图让我们相信下一个版本很震撼,但是还没有出来...
最后一个是DSemu,可能有新的插件功能,但我不用它。以后说不定会
将ROM上传到DS上(略)
SuperCard(略)
编译
这是一个编译方面的快速教程...
PA模板机密
首先,你需要打开PAlib模板。我将会说明一下它是如何工作的...可以看到,它包含一些
文件和3个目录。
模板说明
先想一想...这个问题以前经常被问到...什么是模板(template)?知道了!你会说,模板
是设计的一些形式,把内容分成不同的形式和结构。换句话说,它是一种组织结构,包含针
对一个工程的所有开发文件。在模板里,有C文件,精灵(sprites)图像,背景,声音等。
对应目录:
source-->最重要的部分,源代码,基本是执行代码(.c或.cpp文件)。
include-->头文件,提供源文件的帮助信息(.h文件)
data-->后面会用到,声音等...
对应文件:
Makefile-->重要但复杂的文件,描述如何编译程序,不要担心它:P
和logo_-->通过wifi传输ROM时用到的图像文件,不要在意它
-->重要文件,用来建立(编译、生成)ROM
-->当你想要发布源代码或完成编程时,删除所有建立的文件和ROM。
它会减小体积...基本上它会删除所有生成的文件。
-->它很cool--在VisualHam(我们将要用到的编辑器)中打开整个工程。
模板主要代码
现在,打开或进入source目录打开main.c。就像它的名字一样,main.c
是你的主程序文件。它包含了ROM开始时默认载入的内容。main.c包含了运行PAlib所需
的基本内容。如果你编译并运行这个ROM在模拟器或DS上,它不会做任何事情,只显示2
个白屏...以下是第一次打开main.c所看到的:
Copycode
//Includes
#include
//Function:main()
intmain(intargc,char**argv)
{
PA_Init();//InitializesPA_Lib
PA_InitVBL();//InitializesastandardVBL
//Infinitelooptokeeptheprogramrunning
while(1)
{
PA_WaitForVBL();
}
return0;
}//Endofmain()
解释代码!
如果你懂C语言,它的含义就很清楚了。对于其它人可能不会,因此我来一行一行地解释,
尽管内容只有三样...
Copycode
//Includes
简单://意思是后面的文字是注释...当写下//,就是告诉编译器不要编译后面的内容...
因此你可以随意写些东西做为内容!这行是告诉你可以把文件(图像等)包含在这儿。
Copycode
#include
意思是请把PAlib包含在我的代码中,我需要它。如果不写的话,就不能认别PAlib函数,
并会得到错误信息。后面使用include的概念会很重要,它可以加入图像文件、其它重要的
代码等。
Copycode
intmain(intargc,char**argv)
看上去很古怪,但每个工程都要有:它是程序的开始,所有东西开始的地方。不要抱怨(int
argc,char**argv)是什么意思,不需要注意,你永远不会用到它:)只要知道{下面是执
行的代码!
Copycode
PA_Init();//InitializesPA_Lib
PA_InitVBL();//InitializesastandardVBL
这2行在所有使用PAlib的工程中都能找到。第1行是通常的初始化。它为你的程序准备好
使用精灵(sprites)、背景、文字、所有的东西。没有它PAlib就不会工作。高级用户可
以修改第2行。基本上,VBL能将程序与屏幕同步,每秒60帧。如果不初始化VBL,程序要
么运行很快(每秒100000帧,不能玩),要么完全不能工作(呆在第1帧)。一定在程序
写上这2行。
Copycode
//Infinitelooptokeeptheprogramrunning
while(1){
当括号里不是0时(这里它是1),while命令执行后面的代码。这儿它永远是1,所以这
是一个无限循环。为什么?如果没有这个循环,每行代码只执行一次,程序就会结束而不显
示任何东西。它会让程序永远执行下去,或直到玩家关机。在每一个循环中,程序会计算出
所有下一次所需的所有东西并画到屏幕上。
Copycode
PA_WaitForVBL();
最后一个命令将无限循环与屏幕速率(60fps)同步。如果没有,程序会象前面说的那样比屏
幕快很多。
Copycode
}
return0;
}//Endofmain()
上面这些是结束代码,永远会是这样,不要烦它,让它呆一边:P
现在,你了解模板的全部,继续来看如何显示文字!
HelloWorld
简单的helloworld,显示PAlib有多容易...不会深入DS编程的细节,只说明它确实很简
单,以及可能是第2天了:P
这个文字系统使用背景,一个背景(每个屏幕有4层),你可以选择使用哪个屏幕和哪个背
景。还可以用其它功能,如设置字体或改变颜色,但不是现在:P
在PAlibExamples/Text/HelloWorld中可以找到以下代码(或相似的版本)
Copycode
#include
intmain(void)
{
PA_Init();//Initializethemainlibrary
PA_InitVBL();//InitializeVerticalBlanking
PA_InitText(1,2);//Tellittoutextonscreen1,backgroundnumber2
PA_OutputSimpleText(1,1,1,"HelloWorld!");//Printthetextonscreen1,with
coordinate1,1
while(1)
{
//Loopforever
}
return0;
}
如你所见,大部分代码与模板代码很相似。基本上,加了2行:
Copycode
PA_InitText(1,2);//Tellittoutextonscreen1,backgroundnumber2
PA_OutputSimpleText(1,1,1,"HelloWorld!");//Printthetextonscreen1,with
coordinate1,1
第1行用来初始化文字,载入字体到DS视频RAM中。没有它,输出的文字就象垃圾...会显
示文字,但每个字母会是一个随机的图案...不太好:)PA_InitText有2个参数:所用的
屏幕(0表示DS机器的下屏,1表示上屏)和背景(0表示最上面的一层,1是下一层,2,
3表示最下面的一层...)。
PA_OutputSimpleText(1,1,1,”HelloWorld!”),就象它的名字一样,如果背景用
InitText初始化过,就在屏幕上输出简单的文字...(到这里,你可能知道所有PAlib函数
开头都是PA_...)。这个函数有4个参数:
1.屏幕(0-1)
2.开始的水平位置,0-31。每一个位置是一个8×8像素的方块,因此第0块在第0个像素,
每1块在第个8像素,等等...
3.垂直位置,和水平位置一样
4.文字...以"开始和结束,C编译器靠这个来识别...
当你理解之后,按F6来编译并在DualiS中运行,或按F7来编译并在DesmuMe中运行!按
F5只编译不运行ROM(可以用来编译,再传到你的DS上...)
问与答--安装和编译
Q1.当我想编译一个例子,有以下错误:make’isnotrecognizedasaninternalor
externalcommand,operableprogramorbatchfile.
A1.我猜可能devkitPro没有安装好,或一些包(MSys)没有安装...试着重安一次。记住,
安装需要设好环境变量。同时,如果你下载后移动了任何目录,也可能不工作出现错误。请
安装在一个目录中(c:/devkitpro/preferably)并且不要移动它。
Q2.当我想编译一个例子,有以下错误:Devkitprohasreachedaninternalerror,itmust
shutdown”orsomethingtothateffect.
A2.不确定为什么会发生,不过你可以这样处理。确保安装最新的Devkitpro安装程序并选
择“Downloadonly,don’tinstall”。做好之后,选择重新运行程序并选择“Downloadand
install”。它不会重新下载文件,你不用担心。如果还不能工作,你可以单独执行每个EXE
文件来达到同样的效果。
本文发布于:2023-01-02 14:27:52,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/78276.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |