凌华 的个人资料张凌华照片日志列表更多 ![]() | 帮助 |
|
|
11月9日 供不应求!NDS电视接受器接受网络预定任天堂于昨天(11月8日)下午正式开始对DS的ONE SEG信号接收器“DS电视”接受预约。因为是网络销售,所以从接受预定开始,任天堂的服务器就十分难连上,可以看出这款产品还是相当有需求的。 等国内有卖的了(当然是水货了)我也弄一个 ,尝尝鲜!
ONE SEG放送是主要针对便携机器放送的数字电视,即使移动的时候,也可以接受到稳定而清晰的电视图像。最早登陆手机,目前应用范围逐渐广泛。DS版的电视接收器活用了2个画面的特性,上屏显示电视,下屏显示操作画面和工具机能。 8月14日 任天堂公布Wii Fit帮助玩家达成理想身材除了《Wii Sport》外,《Wii Fit》更可以陪你做伏地挺身、瑜珈、玩呼拉圈、顶足球,帮助你达到理想的BMI值!
任天堂 E3 记者会上,宫本茂展示《Wii Fit》,结合具有压力感应功能的「Wii Balance Board(暂定名称)」周边,玩家可以藉此游戏进行肌肉伸展、瑜珈与动态游戏等。 此游戏将让Wii的动态游戏体验从当初 Wii Sport 的集中于手臂等上半身,延伸到玩家全身,且这些动作将强调较和缓、可控制的动作,言下之意就是已考虑到避免运动伤害的问题;任天堂现场展示如何藉由 Wii Balance Board 进行《Wii Fit》游戏,同时也实际以任天堂美国总裁Reggie Fils-Aime为模特儿,秀出游戏如何计算他的身体「BMI」值。 玩家在游戏前,必须先让游戏测量最原始的BMI值,也就是得让游戏拥有个人的身高、体重与年纪等信息,直到游戏拥有这些信息后,你可以设定目标来帮助自己减重或是增加重量以达到理想的BMI水平;有趣的是,个人的BMI水平出现后,代表玩家的Mii图像也会相对应有些改变,例如突出小腹等。 ![]() ![]() 《Wii Fit》有多样化活动来帮助玩家全身运动,像是玩「呼拉圈」时,玩家得站在「Wii Balance Board」上,扭动个人的臀部使屏幕中的虚拟呼拉圈持续旋转,另外两个Mii人物还会不断地丢呼拉圈让你得维持越来越多的呼拉圈平衡。 另一个平衡球游戏,是玩家必须利用个人身体的平衡,让屏幕中的球能够通过迷宫般的考验、移动到合适的洞中;至于现场展示另一个滑雪跳跃游戏,则是让玩家模拟滑雪跳跃的状况,必须弯曲身体以让速度加快,还有类似跳舞的游戏。 此外,还有足球游戏有许多的Mii人物将踢球来给玩家,玩家得尽力把球顶出去;至于瑜珈部分,玩家可以进行许多瑜珈姿势,若是姿势持续越久、舒展越开,可代表个人越来越进步,游戏似乎还可因个人震动感应来判断个人动作适当的区域。 另外,玩家也可以藉由《Wii Fit》测量个人的平衡感等。游戏预定今年第四季在日本上市,明年第一、二季在美国推出。 ![]() ![]() ![]() Wii Fit 零售价最终确认 欧美2008年上市看来,是应该购买Wii了 。 这就是生活。并非只是游戏。 如果你希望早日站在Wii Fit 之上,并体验它独特的乐趣,那么你不得不等到2008年才行,除非你住在日本。 而且最近Wii Fit 也已经确认了它的零售价格为$69.99,并且配合Wii Fit 的正式上市,到时将会有捆绑了Wii Fit 的限定版主机一同上市,据业内人士估计,这样的限定版主机售价将在$249.99元左右。只是希望到时候不要缺货太严重。 关于Will Fit的介绍,请看:
10月18日 新北斗神拳 新番出击嗯……今天无意中看到有部“新北斗神拳”的动画 , 一下子勾起了儿时的回忆 …… 因为觉得自己到现在还米有看实在有些不甘心,所以干脆就看完了(用了1个半小时,拖啊拖)…… 到了现在啊……啊,真辛苦…… 其实画面还比较精致的说……相对之前的TV而言,虽然龟说JJ啊这种画面XXOO什么的,但是相对而言,尤其是相对于抱春的OVA尤其是2而言已经强了很多了的说……啊啊啊啊……真是不满啊!!!TvT 故事情节还是很老套的北斗神拳式的:坏人出现——健次郎登场——美女被抢走——健次郎英雄救美——坏人boss的悲惨过去被揭露——对决——死掉一些人,于是健次郎继续旅程…… 嗯……说的自己都觉得没有什么看头了…………(-_-||||)但是真的觉得已经很程序化的故事了……说实在的觉得剧情到了后来变得很牵强,虽然h某一直强调这个是硬派肌肉男云云……可惜我喜欢的是如片尾所示的gackt殿的歌曲脸身体和才华啊>_<——由此可知,事实上我对健次郎的兴趣只是在于子安武人这个声优而已…… 子安的“啊哒哒哒哒”明显要比ga的好很多,由此终于再次深刻体会了什么是专业声优什么是非专业声优的区别……呵呵,其实本来就是因为子安担演了健次郎才关注这部的,就像只是为了南斗水鸟才关注之前版本的北斗动画一样——只是因为那个阿力是我家盐大的角色而已~ 最近的新番欠了一批,就连蜂蜜也欠了好几集了……唉,太忙了……
知道我说什么么?不是动漫迷应该不知道吧 :) 9月10日 最近玩操纵机器人MG这款游戏,本来打算汉化一下,造福大家的,但...最近玩操纵机器人MG这款游戏,本来打算汉化一下,正好前一阵子研究了一下NDSL上游戏的汉化,破解还有开发 。 现在可以派上用场了 。
看了一下。这款游戏的字模采用了压缩变形+翻转变形 ,不过还是被我搞定,并且导出了 。 还建立了新的字模导入 。
但是,当我导出游戏中的文本后,被下了一跳 , 接近十万字的翻译量 。 我还是决定放弃了 。 用着个时间还是赚钱吧(俗人啊) 。
这里把部分导出的文本贴出来 , 供人YY一下吧 :
任务篇:
关卡篇:
装备篇:
设计图篇:
剧情篇:
有几天没有更新博客了,真是不好意思,前几天迷上了一款NDSL游戏真是不好意思,几天没有更新日志了。这几天忙着玩NDSL最新出的一款游戏 "超操纵机器人MG" 。 喜欢机器人大战的朋友有福了 。
这款游戏因为是日文版的,因此要不断的查词典 。 有上百个机器人可以操作,爽啊 。 终于用了18个小时完成了一周目 ,达到通关了 。
这里给个视频和图片看看:)
视频
9月5日 汉化NDS模拟器基础(2)以下的文章是我转的一篇网上文章 , 我看过了 , 里面有些漏洞和不详尽的地方 , 以后可以看我写的文章来进行进一步学习。
---------------------------------------------------------------------------------------------------------- 嗨!大家还好吗?还是我这只菜鸟啦!^ ^ 今天还是继续我们的菜鸟学汉化!教大家汉化的后续工作!上次教大家的都学会了吧!应该做完码表的说。OK!继续。。。。。
导出文本的工具有很多,像thincy(dos),script-e,dumper…都不错,各有千秋。 我先以script-e讲解怎么导出文本,其它的我会在后面提提! 呵呵!先来认识我们的朋友script-e吧!如图 使用script-e应该不成问题。上图可以让你一目了然!
但我还是说说“文本开始地址”,如其名,就是在这行中输入你要导出文本的开始地址。 像我的地址就是12490H,加个H是告诉script-e这是个十六进制地址!不加则是十进制的! 这个你的明白?呵呵!建议大家还是用十六进制,因为可以直接得到!而十进制的还要进行换算!下面一行是要你输入文本的间隔大小!比如结束地址为12590H 那间隔大小就是 12590H-12490H=100。输入100就行了!(你可以用WINDOWS自带的计算器进行运算!) 导出的文本效果(如图) 可能你导出的文本,会很乱,看不清!— —|||| 呵呵!不要急,我们找找问题的源头----码表。还记的我上次说的吗?要完善你的码表!现在正好依据导出的文本来完善!在ROM中
00表示换行,FF表示结束,在码表中可以用line和msg中来定义! 像这样 line:00 01= 。。。。。。 。。。。。 FE= msg:FF 现在你保存再导一次看看!呵呵!现在是不是比以前的好看多了!而如果导出文本还出现像这样:< xx> 那说明你没有做全码表!没有定义没用到的代码!大家应该从00 一直定义到FF这样就不会出现上述现象了!( 没有意义的代码用空格表示如 01= 空格 ) 呵呵!导出文本之后!就该翻译了….不会日文?汗~~~~找人吧!(其实我也不会日文啦!) 去各个汉化论坛发贴试试!如果文本不是很多,会有人帮助你的! ^ ^ 下面讲讲thincy的用法: thincy运行于DOS。先看看它的尊容: 这个导出工具支持使用双码表!但我没有怎么用过!进入之后!我们可以在右边直接看到文本!怎么样,是不是很冲动?按J跳转到文本开始地址,把光标移到文本开始导出的地方,按D——>回车——>再移到文本结束处——>按D,之后会提示你保存文件。之后回车…之后就看到导出的文本啦!………………
基于dumper由国人写的,所以就不多说了!中国人都看的懂嘛!(不然我们就汉,呵呵) OK!文本导出了,也翻译好了(假设!)那下面就要把汉字导入ROM了!如果你会编程。那要庆祝一下!因为那可以提高你的工作效力!大大的加快汉化进度,而不会的---没事 我们手工,不要跟我说烦!我也不想啊!哎!谁叫我们是菜鸟呢! 在导入汉字时!我们先要对翻译后的文本出现的汉字进行下统计。这样可以避免重复导入而白白浪费字库的空间!在这介绍小弟编的工具(界面极丑)。如图 左边是统计文字出现的次数,右边是快速转换文字代码!
我们先用左边的!打开翻译好的文本,之后就会出现统计结果 如果你想看看一个字出现的次数,你可以在统计结束框内双击 就行了!之后保存!之后再做个中文码表!原理和做日文码表一样!这里就不多说了! 现在根据你的中文码表,把汉字一个个导入ROM中。在TLP中有个tile editor窗口。你可以在这用鼠标画字!而你画的每一笔,都会在主窗口中显示 像这样: 我只是把第一个改写成了“土”字 (呵呵!很丑吧!)之后的就一个画吧!(注意颜色的使用) 说实在,我真不想介绍这种方法,因为如果真的是一个个字去画,那非死人不可!但是为了测试你对汉化有多大的耐心,我只有忍心了!其实汉化游戏,不需要很强的技术,更需要的是你对汉化持之以恒的耐心。。。。。。。。。。。。。。。。 呵呵!告诉大家吧!可以用TLP的插入位图功能实现大面积的导入汉字!具体怎么做! 还是靠大家自己摸索吧! 继续!导入翻译文本!这步就是把翻译好的文本写入ROM中,先前的那些工作都是为这步服务!所以这步也是收官工作。 假设翻译中把“フリ-スタイル”译成“练习” 在日文码表中フリ-スタイル的代码是分别CB D5 2D BE C1 B4 D6 在中文码表中 练习的码表是 CB CC 我们要做的,就是把练习的代码CB CC 替换掉フリ-スタイル的代码。以达到汉化目的 而有人问CB表示“フ”怎么又表示“练”,那我只能-----倒了!呵呵!因为我们已经把原来ROM中的日文字库全都替换成汉字字库了!所以“フ”也就自然被“练”代替了! 好了开始替换代码吧!在这之前,我们用一个工具,还记的小弟的那个吗?我们还没有用到右边的功能呢!它的作用就是把你输入的文字转成对应的代码表示出来!比如你在“欲输入字符”框内输入“练习”回车后,在下面你就可以看到“练习”的代码CB CC了。是不是很方便,这样省的你一个个去查了!当然在下面你首先要打开码表文件! 替换代码在文本编辑器内进行,打开TRANSLHEXTION,跳到要“翻译”的地址 上图中我把CB D5 2D BE C1 B4 D6 替换成 CB 20 20 20 CC 20 20 了!(其中20 表示空一格)保存进入游戏查看效果,如下图!
怎么样?呵呵!就这么简单!你也行的! 要提醒大家的是,在文本前面都有显示坐标。像 04 09 就是表示“练习”在X=9 Y=4的坐标出现!而 FREE STYILE 的坐标是 X=9 Y=6,那说明该句在“练习”下面,在游戏中的确也是这样显示的。为了更好的继续工作,我们应该尽可能去读懂这些可疑的代码。 好了!到这汉化全过程就结束了!你也应该能理解汉化原理!(如果还不懂,只怪我写作水平有限)那就拿个游戏来练练手吧!希望你也能汉化自己喜欢的游戏!完成儿时的梦想!祝你成功! 汉化NDS模拟器基础(1)以下的文章是我转的一篇网上文章 , 我看过了 , 里面有些漏洞和不详尽的地方 , 以后可以看我写的文章来进行进一步学习。
----------------------------------------------------------------------------------------------------------
大家好,看这标题就知道要讲什么了吧!
没错,就是学怎样汉化游戏。我是菜鸟!你是吗?群呼:不是不是,那就没有理由学不会汉化,我相信你比我聪明,也相信你一定能看懂我这只菜鸟写的东东。OK 废话少说 下面开始:先准备工具和ROM(本文提到的ROM冠军桌球本地可以下载) 1. 运行ROM。此游戏是一个桌球游戏。之所以选这个ROM就是能让大家快速入门汉化这个ROM不难 这样也会有成就感。对游戏的有初步认识之后,我们继续。
2. 用TLP打开ROM。此工具是个精灵编辑器,可以直接查看ROM的字库。不错的工具,就像狼组所说,每个汉化者必备利器。(如下图) 在E1C00处发现字库(如果看不清,可以按1来改变模式至到看清为主)该字库用了两个格子放一个字母说明是8*16格式,为了证明字库就在此,我们做个实验: 抄下选项的这句日文:"フリ-スタイル" 再在TLP中把第一个字"フ"全部涂黑! (如下图) 存档,再次进入游戏!发现了没有。你涂黑的那个字没有了(如下图)
http://tkfiles.storage.msn.com/x1pbglk-vqL4BttSWvQa69zTq5NqpzVMxOzwI04atnUaAqWM6eurEa520ab8IAuicvg_NWEzV65pky9xqcnu5_bw7GML1_yZGvsPxDgZh8KrWMJkF_hPbge6xHmSouVePGfEj7WPnwnw3r_iP9sBX4oxw
呵呵 说明ROM的字库就在止。找到字库就好办了。下面继续
3. 找到字库,但是我们还不知道每个字对应码,假如你把“フリ-スタイル”翻译成"练习"。在TLP把“フ”改成"练" 把“リ”改成"习"其他的全部涂黑,的确你可以在局部达到汉化。但是在别的句中也出现“フ”和“リ”时,那就...... 试想:如果我们能随心所欲的控制字母的出现,那我们就可以。。。。嘿嘿
下面我们就来找码表: 还是那句话“フリ-スタイル”。为了方面,在TLP中我们以“イ”为开头,算出“スタイル”在字库中的每个顺序。(为什么这样做我下面会讲到) 算出:ス=11 タ=14 イ=1 ル=35 用工具Translhextion相对搜索打开ROM,选取菜单的SEARCH->Value scan Relative 这时会出现一个窗口,在Values框内输入我们算出的顺序:11,14,1,35(输入一个数字按Add value添加)之后SCAN......... 之后Loading…………………………… 之后在右边框内会出现地址(如下图) 不多只有六个(输入的顺序数字最好能大于3,不然出现的地址够你找了,),我们一个个试,找出“スタイル”所在的地址。
找啊找,找啊找。终于在74913处找到所在地(10000) 嘿嘿。。。。。。。 为了证明真假,再做个实验。把BE C1 B4 D6改成BE BE BE BE 存档,进入游戏,啊。。。。。。。。。。。(如下图) 兴奋一下,你找到码表了!恭喜。 其实有一个超简单的方法。就是打开菜单Seach->Find输入 “FREE” 就行!怎么样!找到的地址是不是就是在1000附近!而我们知道“FREE STYLE”就在“フリ-スタイル”的下面,那不就说明“フリ-スタイ”的码表就在这附近!改改试试就找到嘛(不要扔臭鸡蛋。。。) 而为何要数字库中字母的顺序?这是因为在用Translhextion相对搜索时,原理就是在ROM中找出第一个和第二个相差3,第二个和第三个相差-13。。。。。。。。。(11 14 1 35 )我们数顺序就是找出他们的相差值,让Translhextion找出ROM中所有这样的地址。像上面我们就找到了五个不同地址(有一个地址相同),而我们找到的那个地址中BE C1 B4 D6 就是相差+3,-13 +34。 4. 找到码表还没有完,你还没有把每个字对应码做出来。这步教大家怎么做字符对照表。知道BE=ス,就好办“ス”在字库的顺序是 11 那我可以肯定下一个BF=セ不信你试试。。。。。现在你看出了什么苗头了吧。我们根据BE=ス就可以把ROM中的每个字的对应码推出来!(应该懂十六进制吧!) 如果你为了正确,你也可以一个个试,再进入游戏查看! 推完之后,那我们就要把它编成册了,保存成 .TBL文件。这样码表就做好了。但那些没有用到的十六进制怎么办?(会不会有人问)那就要你试出它们所代表的意思尽量完善 又进一步了。。嘿嘿 OK,先休息。下次我再讲怎样把游戏中的文本提出来. 9月3日 NDS(L)开发之PALib(2)输入输出输入/输出
目前我们谈论的输出系统只指基本的文本系统...下面,我们会看到不同的输入系统:按钮、笔和键盘... 输出:文本 事实上,文本对每个DS游戏都很重要。想象一下,一个没有大量文本或使用说明的游戏。自己建立一个文本函数可能很难,但这就是PAlib所做的。PAlib带有许多方便的文本函数。 想要初始化文本,用use PA_InitText (bool screen, u8 bg_select) 第1个参数是屏幕(1=上屏,0=下屏),第2个是背景(0-3)。对于每个屏幕上的简单文本函数,使用相同的背景。 简单文本(simple text) 创建简单的文本很简单,否则就不会叫做简单的文本。使用PA_OutputSimpleText(bool screen, u16 x, u16 y, const char *text)。参数screen表示所用的屏幕。x表示x坐标,0-31。y表示y坐标,0-19。text表示,就是文本了。 这儿有些例子代码...
如果你想删掉一些文本,只需要用空格改写它们就行了,如PA_OutputSimpleText(0, 0, 0, " "); 方框文本(box text) 简单文本很有用,但经常它不能停下来。有时,你需要文本换行,限制在屏幕上的一个方框里。这就是PA_BoxText()所做的工作。它的参数如下: 1.screen -- 所使用的屏幕(0或1 ) 2.basex -- 方框左上角的x坐标 3.basey -- 方框左上角的y坐标 4.maxx -- 方框右下角的x坐标 5.maxy -- 方框右下角的y坐标 6.text -- 要输出的文本 7.limit -- 一次显示文本的最大数量(可以用来缓慢显示文本) 这个函数返回实际输出的文本个数。 为了缓慢显示文本,只需要将limit每次增加1。当返回的数字不发生变化时,就可以停止了(因为没有更多的文本,或已达到极限)。这时,你可以停止增加limit。 如果你有很长的一段话,需要知道能输出文本的最大数量。这时,可以用这个公式... CODE:
u8 maxChar = (maxx - basex)*(maxy - basey);
它会工作的 高级文本(advanced text) 现在你已经知道了如何在屏幕上显示一些基本的文本,下来是最重要的文本函数:PA_OutputText(bool screen, u16 x, u16 y, const char *text, arguments...)。如你所见,它和第1个简单文本函数区别不大,除了很重要的参数列表。它允许你在屏幕上直接显示变量和字符串,这对调试很有用! 你可以看一下Text/Text的一些例子... 显示整数 下面是显示笔位置的示例代码...(你很快会看到如何使用笔...) CODE:
PA_OutputText(1,0,0,"Stylus X : %d Stylus Y : %d", Stylus.X, Stylus.Y);
首先看到的是%d...它用来显示整数(S32..)。如果在文本中写入%d,它会在你所给的参数中寻找参数(这里是Stylus.X和Stylus.Y)。如果有几个%d,它会按参数出现的顺序来...因此第1个"%d"表示Stylus.X,第2个表示Stylus.Y。 显示浮点数 显示浮点数与显示整数差不多...只有2个地方不同: 1.使用%f代替%d 2.加入你想在小数点后显示几位数字... 就象这样: CODE:
float test = 4.678;
PA_OutputText(1,0,0,"Float value : %f3", test); 看,不难吧!这会显示浮点数:4.678 显示字符串 最后一个如何显示字符串...这很有用,例如可以在文本加入玩家的名字,产生个性化的信息!对于字符串,只要使用%s就行了! 就象这样: CODE:
char name[10] = "Mollusk";
PA_OutputText(1,0,0,"Hi %s", &name); 看,不难吧!它会显示Hi Mollusk。一个重要的事情:你的字符串,基本上是一个字符数组,最后一个必须是0...如果不是,就会一直输出下来直到碰到0为止,这会花一些时间...因此如果你是把字符一个一个地加入到字符串中的话,就象是"a",下来是"b"等等...记住最后一个是0。 文本的颜色 有三种选择文本颜色的方法: PA_SetTextCol 你可以在任何位置使用这个简单的函数PA_SetTextCol(screen, r, g, b)来改变字体的颜色。它在可以如你所愿设置1屏的颜色...所有屏幕上的文本都会变成一种颜色,即使你以前改变过颜色。r,g,b是什么? r代表红色...它是颜色中红色的数量,从0(没有红色)到31(红色最多)。 g代表绿色 b代表蓝色 下面有些例子: 蓝色:PA_SetTextCol(screen, 0, 0, 31) 红色:PA_SetTextCol(screen, 31, 0, 0) 白色:PA_SetTextCol(screen, 31, 31, 31) 黑色:PA_SetTextCol(screen, 0, 0, 0) 灰色:PA_SetTextCol(screen, 22, 22, 22) 你可以看一下Text/Text的例子 PA_SetTextTileCol PA_SetTextTileCol与PA_SetTextCol有点不同,因为它不改变已存在文本的颜色...它允许一个屏幕上有不同的颜色(这很不错)。PAliB例子是Text/TextColors CODE:
PA_SetTextTileCol(1, i); // Change the color on the top screen, values 0 to 6
PA_OutputSimpleText(1, 2, i, "Color test..."); // Screen 1 has different colors PA_SetTextTileCol(1, i);设置新的文本颜色为i...没有其它了。n可以取0-7,测试一下它所给的颜色... %cX 最后一个方法是在你的字符串使用%cX,X表示颜色的数字(0-7,就象以前一样)。这个方法的好处是你可以在一个字符串中有不同的颜色!以下例子再一次来源于TextColors: CODE:
PA_OutputText(0, 0, 0, "Color test...%c1another one, %c2again, %c3 again...");
如你所见,改变颜色只需写%cX。(如果你不相信就在模拟器上测试一下吧)。它很简单lol 定制字体&文本边框 PA_lib允许你很简单地定制字体和文本边框。你需要导入图像到工程中,它很难因为需要一些图像转换。如果你是按顺序来看这个wiki,可能会有点失望。 事实上,图像数据(如果jpg图像,gif,png...)不能直接用于DS硬件。你需要把它们转换成DS能理解的原始格式。 转换数据会在精灵(sprites)和背景教程中阐述。因此我建议你跳过定制字体和文本边框教程直到你学过用PAGfx转换(第4天)和平铺背景(第5天) 定制字体 定制文本边框 输入:按钮、笔、键盘 DS有三种基本的输入方式:用按钮(所有的...),笔,或PAlib的键盘 ..我猜最后一种方法可能用到麦克风,不过我们在后面的声音教程里再讨论... 按钮 使用按钮很简单!它会每帧自动更新,并允许你访问一个简单的结构(structure)。这个结构名字是Pad,它包含多个结构,取决于按的方式:Held(按住)、Released(释放)、Newpress(新按) 1.Held缺省是0,当按钮被按住时变成1 2.当按钮放开时Released变成1,只有1帧输出为1 3.按下时Newpress变成1,只有1帧为1 每一种按的结构(Held,Released,Newpress)包含所有按钮: 1. 方向键Left,Right,Up,Down 2. A,B,X,Y键 3. L,R键 4. 开始键Start,选择键Select 最后,要检查一个键,需要Pad.Checktype.Keyyoucheck,如果A键按住,就要检查Pad.Held.A!A键释放就要检查Pad.Released.A,新按A键检查Pad.Newpress.A... 就这样简单。这儿有个快速简单的例子(不能工作),只显示如何使用这些键:
简单吧? 如果你愿意,可以看看Input/Pad例子... 笔 笔的工作方式和按钮差不多...它每帧自动更新,使用一个结构名字是Stylus(简单...)。不同的变量是: 1. Held,Released,Newpress和按钮的变量一样... 2. X,Y表示笔的坐标 下面是基本的代码实例: if (Stylus.Held) { PA_SetSpriteXY(screen, sprite, Stylus.X, Stylus.Y); } 如你所想的那样,这个简单的代码检查笔是否按下。如果笔按在屏幕上,它会将精灵(sprite)的左上角放在笔的位置上...没有其它的了 如果你愿意,可以看看Input/Stylusexample例子... 键盘 使用PAlib的键盘很简单,就象你在Input/Keyboard例子中看到的那样... 键盘要工作,必须载入到一个给定的背景中(0-3),与文本及其它的背景都不一样...
我想,这是一个比较复杂的例子(相对其它例子而言...),让我们来一步一步地看。 程序开始是初始化文本,因为...我们需要显示一些文本! 下来是
第1个函数在下屏的背景2中载入键盘...你可以使用0-3的任何背景(没有内容)...每2个函数卷动键盘,让它好看一些。它把键盘放在(20,100)位置,不过你可以把它放在任何位置... PA_SetKeyboardColor(0, 1);改变键盘的颜色...选择你最喜欢的... letter = PA_CheckKeyboard();是最重要的函数!CheckKeyboard检查你是否用笔按下一个键,返回所按的字符,如果没按就返回0.
另一个重要的部分...如果按的键是一个字母,就加到当前文本中...由于文本中不止一个字母,所以nletter++! PA_OutputSimpleText(1, 8, 11, text);显示我们正输出的文本...我跳过一些代码(backspace键和回车),你自己解决吧。 编译并测试这个演示程序,可以在DualiS上运行!享受乐趣吧!! 手写识别 最后一个很有趣...你可以用2种方式: 1. 采用PAlib的Graffiti识别 2. 采用你自己定制的形状,象Lost Magic(http://en.wikipedia.org/wiki/Lost_Magic)或Pac_Pix(http://en.wikipedia.org/wiki/Pac-Pix)! PA Graffiti 这些代码可以让你使用Graffiti手写识别系统...随着时间的推移它会被改进。这些代码基于键盘例子,因此并不难。后面你能看到,背景上会有一些模糊的8位素材。 ![]() 代码来自Input/RecoGraffiti
一部分一部分来看...
这部分初始化文本和画布背景,后面你会学到更多... nletter = 0; 用来计算字母的个数
当你再次用笔时,这部分用来在屏幕上画图及擦除...稍后,稍后...
现在,我们到这儿了!这个代码检查字母!!!要想工作必须每帧都执行(象键盘一样,象键盘...)如果字母没有完成就返回0... 其它代码和键盘的例子一样,我不会再次讨论了... 定制图形 这个系统真的很好的地方在于你可以定制图形!加入图形只是几秒钟的事情,下面是个例子... 这些代码来自于Input/RecoAddShape
下面是注释:
这里我们告诉PALIB要识别的新的图形...看上去不那么直观...我如何得到它们?通过运行这个ROM,lol.你会看到更多。你所需要理解的就是一个图形由2个参数定义: 1.调用时返回的字母(或数字1-255) 2.字符串,如这个ROM所示...当用这些代码绘制一个图形时,会显示字符串,允许你拷贝使用它!很好。 其余的代码实际上与上一个例子很相象,因此我不会再多说了。只是有1行还是很重要:
程序会识别我们的图形 图形信息 后来我在lib的最后一个版本中增加了第三个例子...它把信息加入到图形识别中。信息很基本,但在特点的环境中很有用。信息保存在PA_RecoInfo结构中的Stylus.Released里。它包含: 1.Length,图画的总长度(像素) 2.startX和startY,第一笔的位置。这很有用,例如在一个游戏里可以来确认某个给定的物体或精灵(sprite)是否被激活。 3.endX和endY,最后一笔的位置。 4.minX, minY, maxX和maxY,界定图形。可以用来确认图形有多大及中心在哪里。 5.Angle,第一笔和最后一笔之间的角度...不是很常用。 下面是使用它的代码,只是从定制图形那个例子拷贝过来的,因此我只贴出改变的部分...这部分在一个无限循环里...
我不会再重复刚才所说的:-)我只是不喜欢重复我自己,lol。代码基本上是围绕图形画一个矩形:
... PA_OutputText(1, 4, 23, “Length : %d pixels “, PA_RecoInfo.Length); 用来显示长度。 没有其它的东西了...如果你发现一些很重要的东西没写,请写封mail给我(mailto:mollusk@palib.info)或在论坛上训斥... 哦,这个例子中没有使用Angle,因为它不常用... 9月2日 NDS(L)开发之PALib(1)安装和编译这个教程包含2部分:
1.安装devkitPro和PAlib,以及你可能需要的其它东西 2.编译一个hello world程序,并理解模板(template)是什么 安装 想要建立DS开发环境,你首先得下载并安装devkitPro : devkitPro updater (http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=160396)。现在,用这个比较好的安装程序来安装devkitPro。注意!你可以不选择PSP和GBA库,但不要动其它选项(MSYS,devkitarm,libnds ...)。如果省了一些东西,它会罢工的。如果你不能确定,那就选中全部,如果安装多了不会有问题的。 现在PAlib需要你安装.Net框架。PAGfx(图像转换),PAFS(文件系统),和VHaM(IDE)安装需要它。http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5 下一步,下载并安装PAlib(使用安装程序):PAlib Installer http://sourceforge.net/project/showfiles.php?group_id=142901&package_id=168612 把它安装到devkitPro的目录里,这样所有事情就完了。 对于devkitPro和PAlib,注意,不能安装到一个名字中含有空格的目录中(如:c:\DS Development\PA Lib)。同样,也不能安装桌面,因为桌面的目录是c:\Documents and Settings\... 现在完成了,进行下一步:) 编译测试 检查安装正确与否不需要大量的方法...它不难,来吧,希望它工作正常! 我们将要编译第一个例子。打开PAlibExamples\Text\Helloworld\,双击build.bat来编译...如果一切正常,会生成helloworld.ds.gba和helloworld.nds文件。 嘿,就这么简单! 现在,有2种方法来运行rom:使用模拟器(注意,有很多bug)或硬件(flashme/passme/wifime/wmb)。 模拟器 目前只有4种模拟器,不过现在我们只有其中2种。 HyperDs是第一种模拟器,从未公开发布,从未用过...lol Dualis(http://dualis.1emulation.com/),运行得很好。我经常用它。它对2D测试表现得很好,能支持大量选项。缺陷:R12版本有一个bug--当使用笔时会崩溃,因此只好使用R11版来测试...我个人把.nds文件与Dualis程序相关联,双击rom会执行它。 iDeaS(http://www.rascalboy.nzone.it/ideas.html)是另一个比较好的模拟器!它是第一个也是目前唯一一个支持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.bmp和logo_wifi.bmp --> 通过wifi传输ROM时用到的图像文件,不要在意它 build.bat --> 重要文件,用来建立(编译、生成)ROM clean.bat --> 当你想要发布源代码或完成编程时,clean.bat删除所有建立的文件和ROM。它会减小体积...基本上它会删除所有build.bat生成的文件。 project.vhw --> 它很cool--在VisualHam(我们将要用到的编辑器)中打开整个工程。 模板主要代码 现在,打开template.pnproj或进入source目录打开main.c。就像它的名字一样,main.c是你的主程序文件。它包含了ROM开始时默认载入的内容。main.c包含了运行PAlib所需的基本内容。如果你编译并运行这个ROM在模拟器或DS上,它不会做任何事情,只显示2个白屏...以下是第一次打开main.c所看到的:
解释代码! 如果你懂C语言,它的含义就很清楚了。对于其它人可能不会,因此我来一行一行地解释,尽管内容只有三样...
简单://意思是后面的文字是注释...当写下//,就是告诉编译器不要编译后面的内容...因此你可以随意写些东西做为内容!这行是告诉你可以把文件(图像等)包含在这儿。
意思是请把PAlib包含在我的代码中,我需要它。如果不写的话,就不能认别PAlib函数,并会得到错误信息。后面使用include的概念会很重要,它可以加入图像文件、其它重要的代码等。
看上去很古怪,但每个工程都要有:它是程序的开始,所有东西开始的地方。不要抱怨(int argc, char ** argv)是什么意思,不需要注意,你永远不会用到它:)只要知道{下面是执行的代码!
这2行在所有使用PAlib的工程中都能找到。第1行是通常的初始化。它为你的程序准备好使用精灵(sprites)、背景、文字、所有的东西。没有它PAlib就不会工作。高级用户可以修改第2行。基本上,VBL能将程序与屏幕同步,每秒60帧。如果不初始化VBL,程序要么运行很快(每秒100000帧,不能玩),要么完全不能工作(呆在第1帧)。一定在程序写上这2行。
当括号里不是0时(这里它是1),while命令执行后面的代码。这儿它永远是1,所以这是一个无限循环。为什么?如果没有这个循环,每行代码只执行一次,程序就会结束而不显示任何东西。它会让程序永远执行下去,或直到玩家关机。在每一个循环中,程序会计算出所有下一次所需的所有东西并画到屏幕上。
最后一个命令将无限循环与屏幕速率(60fps)同步。如果没有,程序会象前面说的那样比屏幕快很多。
上面这些是结束代码,永远会是这样,不要烦它,让它呆一边:P 现在,你了解模板的全部,继续来看如何显示文字! Hello World 简单的hello world,显示PAlib有多容易...不会深入DS编程的细节,只说明它确实很简单,以及可能是第2天了:P 这个文字系统使用背景,一个背景(每个屏幕有4层),你可以选择使用哪个屏幕和哪个背景。还可以用其它功能,如设置字体或改变颜色,但不是现在:P 在PAlibExamples/Text/HelloWorld中可以找到以下代码(或相似的版本)
如你所见,大部分代码与模板代码很相似。基本上,加了2行: CODE:
第1行用来初始化文字,载入字体到DS视频RAM中。没有它,输出的文字就象垃圾...会显示文字,但每个字母会是一个随机的图案...不太好:)PA_InitText 有2个参数:所用的屏幕(0表示DS机器的下屏,1表示上屏)和背景(0表示最上面的一层,1是下一层,2,3表示最下面的一层...)。 PA_OutputSimpleText(1,1,1,”Hello World !”), 就象它的名字一样,如果背景用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’ is not recognized as an internal or external command, operable program or batch file. A1.我猜可能devkitPro没有安装好,或一些包(MSys)没有安装...试着重安一次。记住,安装需要设好环境变量。同时,如果你下载后移动了任何目录,也可能不工作出现错误。请安装在一个目录中(c:/devkitpro/ preferably)并且不要移动它。 Q2.当我想编译一个例子,有以下错误:Devkitpro has reached an internal error, it must shut down” or something to that effect. A2.不确定为什么会发生,不过你可以这样处理。确保安装最新的Devkitpro安装程序并选择“Download only, don’t install”。做好之后,选择重新运行程序并选择“Download and install”。它不会重新下载文件,你不用担心。如果还不能工作,你可以单独执行每个EXE文件来达到同样的效果。 请看一个简单的文本输出例子: 9月1日 分享几个NDSL开发站点(英文为主)DS Linux :http://www.dslinux.org/ NDSTech Wiki : http://www.bottledlight.com/ds/ Drunken Coders : http://drunkencoders.com/index.php?system_id=1&page=News 1emulation : http://www.1emulation.com/ & http://www.1emulation.com/forums/ 一个PALIB的站:http://www.aaronrogers.com/nintendods PAlib - DS开发framework : 论坛 :http://teamnnc.free.fr/phpBB2/portal.php Wiki : http://www.palib.info/wiki/ 文档 :http://www.palib.info/Doc/PAlibDoc%20Eng/modules.html 其他相关网站: 任天堂GAL,关于任天堂的一切:http://www.nintendogal.com/ MAXCONSOLE,全主机的信息,关于NDS也不少:http://www.maxconsole.net/ DS Wiki http://tobw.net/dswiki/ NDS(L)开发平台的搭建我介绍两种主流平台的搭建 :
1.DevkitPro + PALib
2.Codewarrior for NDS + LibNDS
1. DevkitPro + PAlib 。 穷人的开发基地 。
没有办法 ,都是开源的 , 因此是最容易搭建的开发平台 。 当然,随之而来的自然就是对大型商业游戏的开发劣势 。 可提供的类库也太少 ,还需要PaLib一点一滴的努力 。
首先下载devkitPro 和 PAlib
1)首先安装DevkitPro ,注意 , 安装目录不能有空格 (真是变态),因此,我直接安装在了C:\DevkitPro目录下面 。
2)其次,安装PALib(开源的开发库,方便开发) , 安装到DevkitPro同级目录 。
如果你要用到命令行编译请执行3) ,也可暂时跳过 。
3)设置环境变量:在"我的电脑"右键->"属性"->"高级"->"环境变量"下边的"系统变量"下选择"新建",在变量名内输入"DEVKITARM"(无引号,下同),变量值内输入"/X/devkitpro/devkitARM"("X"为DEVKIT的安装盘,下同),再新建一个,变量名为"DEVKITPRO",变量值为"/X/devkitpro".然后选中"Path"编辑,在后面加入"X:\devkitpro\devkitarm\bin;X:\devkitpro\msys\bin"与前面用分号隔开,然后确定.
安装完成了,我们编译测试一下 :
4)编译例子:在DOS下进入x:\DEVKITPRO\nds-examples\,里面有很多例子,键入"make"编译,如果前面设好了的话,就可以得到NDS ROM了(后缀为".nds"的文件).烧到烧录卡中,就可以运行了.我用的是SC-CF卡,不用转换,直接拷进去运行.
2.Codewarrior for NDS + LibNDS 。官方推荐 。 Codewarrior , 做过掌上设备开发的都知道这个品牌 。 大名鼎鼎啊 。 当年开发Palm系统的时候我简直离不开CW9.0 。 而在各种掌上设备上的开发都是首推这款产品 。 OK,废话不多说了,我们先下一个泄漏出来的CW for NDS : 哎呀,不好意思,地址忘了, 有兴趣的问我要吧 。 下载来的只有一个CW IDE , 没有关系,到处可以找到LibNDS SDK (在安装过程需要) 。 我们可以到这里去下载: http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=151608 然后安装过程还需要提供任天堂官方模拟器Ensata安装地址 ,到网上自己去下吧 , 推荐安装Ensata v1.4d版本 。 然后安装过程完成 , 可以开始开发了 。 王者的利器 , 可惜这个泄漏出来的版本调试功能太弱 。 没有办法了。
8月24日 研究NDSL游戏ROM的汉化任天堂的NDSL确实是个好东西, 作为一款掌上游戏机,他的销售量已经突破2100万 。比PS2卖的还好 。于是乎,我也没有抵抗住他的迷人诱惑 , 入手了一款 。
机器已经玩了快两个月了。游戏可以慢慢玩 ,毕竟一边玩一边要查日语词典,所以进度比较慢 。
但是却喜欢上了NDSL上的游戏汉化工作和软件开发 。 也算是造福大众吧 ,目前正在研究这块儿 。
把收集到的汉化资料先放在这里,作为备份吧 。
|
|
|