pa是什么意思

更新时间:2023-01-02 14:27:52 阅读: 评论:0


2023年1月2日发(作者:闻香识女人插曲)

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//IncludeforPA_Lib

//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//IncludePAlib

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小时内删除。

上一篇:mm是什么意思
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图