首页 > 编程 > NDS开发Wifi翻译:第四天:精灵(2)

NDS开发Wifi翻译:第四天:精灵(2)

2006年6月17日 发表评论 阅读评论

使用PAGfx转化


想知道Cool一点的消息吗?如果精灵能被直接使用到DS上,而不用任何修改。。。抱歉让你失望了,停止白日梦吧。这就是我要介绍的,你将看到如何转化一个精灵到DS的格式,并不是很复杂。。。

我们将要使用的使用的是PAGfx,由Mollusk和Kleevah创建的转换工具,用起来再简单不过了。有2种方法使用它,一种给初学者通过GUI界面使用,另一种给高级用户的,只有一个PAGfx.ini文件。两种用法的结果是一样的,不用担心。

PAGfx的GUI界面


第一件事情,进入PAlib/Tools目录,可以看到PAGfx目录。里面有4个文件。

  • PAGfx.txt,一个使用说明和更新日志,既然你在看我的指南,因此你压根用不上这个。
  • PAGfx.ini,转化用的ini文件,我将在第二部分进行分析。
  • PAGfx.exe,根据ini文件转化你的精灵,你稍后将看到如何操作。
  • PAGC Frontend.exe,工具的GUI界面,请马上打开它。

如果出现了出错提示,那是因为你没有安装.net框架,请下载
现在,打开GUI工具,看到界面如下:

http://www.palib.info/wiki/lib/exe/fetch.php?w=&h=&cache=cache&media=http%3A%2F%2Fwww.palib.info%2FScreens%2FPAGC1.png

下面就是设置背景色,添加精灵文件,然后转化。(译:使用过程中可能出现异常,我换几个bmp文件试试,结果又好了)

你可以看到转化后产生如下文件:

  • SpriteName.c是包含全部精灵信息的文件,将被用于将精灵调入内存。
  • SpriteName.pal.c包含着调色板,有它你就能使用正确的颜色将精灵调入内存。
  • all_gfx.c是个很酷的文件。它实际上是链接了所有的精灵,背景,调色板。
  • all_gfx.h包含了精灵的数据,后面会提到

PAGfx.ini


对那些好奇的人们,你现在可以检查一下由GUI工具创建的PAGfx.ini。。。如果你只想用GUI工具,那么请跳过此节

(译:因为我只想用GUI工具,因此我跳过,见谅。)

PAlib精灵


我们深入浅出地学习,先试试把基本的精灵显示到屏幕上来看看。后面的教程会继续教你如何旋转和放大精灵,设置透明度和动画。保持耐心。

显示


我们最终真正使用DS硬件的时机来啦!嘎嘎嘎!我好邪恶!下面欢迎显示精灵教程登场。。。

下面的例子是重PAlib 0.72a版本中提取,因为我在这个版本中更新了精灵。。。请在开始之前确保安装了这个或更高的版本,否则就玩不转了。

打开PAlibExamples/Sprites/Sprite目录,并看一下main.c的代码:

#include <PA9.h>
// PAGfxConverter Include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
int main(void){

        PA_Init(); //PAlib inits
        PA_InitVBL();

        PA_LoadSpritePal(0, // Screen
0, // Palette number
(void*)sprite0_Pal);        // Palette name

        PA_CreateSprite(0, // Screen
0, // Sprite number
(void*)vaisseau_Sprite, // Sprite name
                        OBJ_SIZE_32X32, // Sprite size
1, // 256 color mode
0, // Sprite palette number
50, 50); // X and Y position on the screen
while(1) // Infinite loops
{
                PA_WaitForVBL();
        }
return 0;
}

入你所见,看看注释就明白了!我也不想重新介绍第一天已经介绍的东西(请复习模板编码的部分),因此假设你已经明白了。

// PAGfxConverter Include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"

这一部分include你已经转化完成的图像,没什么可说的了(你可以看看这个gfx/目录里面都有些什么)

PA_LoadSpritePal(0, // Screen
0, // Palette number
(void*)sprite0_Pal);        // Palette name

这部分很重要:它装载了精灵!它把精灵调色板加载到0号屏幕(下屏幕)的0号调色板上。。。不要管在调色板名称前的(void*)字样,它仅仅用于指定调色板的位置。。。如果你的精灵显示不出来,那么首先就要看看是不是忘了调色板!而且,请注意调色板号不要搞错了(要知道一共有16个调色板呢)

PA_CreateSprite(0, // Screen
0, // Sprite number
(void*)vaisseau_Sprite, // Sprite name
                OBJ_SIZE_32X32, // Sprite size
1, // 256 color mode
0, // Sprite palette number
50, 50); // X and Y position on the screen

这个例子真是非常简单,让我一项一项解释一下。

  • 第一个参数是0号屏幕(下屏幕)。。。如果你试图在上屏幕装载精灵,它不会被显示出来,为什么呢?因为调色板是装载在下屏幕的!
  • 第二个参数是精灵编号,就象前文所说,DS在一个屏幕上可以显示128个精灵,编号从0到127。每个你创造的精灵,你都可以制定它的编号,有了编号,我们就能找到对应的精灵从而对它进行各种处理。编号的作用不止如此,它还决定了精灵之间的前后关系(0号精灵将遮住其他所有精灵,1号精灵能遮住0号以外的其他所有精灵,依次类推),越小的编号越在前。
  • 下面是对象大小,它由长和宽组成,用起来有点复杂,因此PALib定义了一些宏来方便使用(以OBJ_SIZE开头)。。。如果不清楚有哪些尺寸可用,请翻到这个教程的开头。。。
  • 下面是颜色模式。只有2个值可选:0为16色,1为256色。实际上只用256色。
  • 下面是调色板编号。例子里面是0。。。如果你选择了错误的调色板编号,那么你会看到你的精灵的颜色是多么地漂亮(使用了其他的调色板)或者压根看不到精灵(选中了没有加载的调色板)。使用的时候请多注意。
  • 下面是X坐标,Y坐标。精灵的左上角的坐标。

基本上所有的东西都已经理解了吧!那么让我们运行build.bat,并打开DS或DS模拟器。。。。因为你的死循环 (while(1)…) 里面没有任何代码(除了VBL以外),你的精灵将会呆在那里动也不动。

在进行下一步之前,你可以试试修改一下例子,让精灵出现在上屏幕,然后出现在上下双屏幕上。。。

(译:待续。。。)

原创的话痨如需转载请注明来源:http://blog.chenyi.me/blog/9235;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.