NDS开发学习笔记2_第1页
NDS开发学习笔记2_第2页
NDS开发学习笔记2_第3页
NDS开发学习笔记2_第4页
NDS开发学习笔记2_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NDS开发学习应用笔记-CALM刖言:无意中接触到NDS,说来也可笑,是因为一个问题,我看到“为什么国内出现不了破解不了PSP的高手”的文章,结果酷爱游戏的一个室友对此十分不屑,并表示NDS的破解乃是我国人民。带着怀疑,用手机上网查找证据,由此开始了解NDS,本着刨根问底的精神,又开始了解了任天堂的掌机历史,并扩散到整个掌机历史,我想这也是自己体内对游戏热爱的细胞的再次苏醒吧(再次想起小时候玩小霸王和山寨FC兼容机的热血沸腾)。在对Nintendo的历史摸清了之后,突然萌发了买一台回来自己玩玩的想法,就这样本人的第一台掌机,2004年最原始的NDS入手了~(现在是2012年了,190收了一个8成新的,FLASHMe刷过的,带一个EZ4的烧录卡和一个正版的火影卡带)。拿回来体验一下,竟然觉得如此神奇,2004年的东西何以如此强大,当时我初二,貌似每次周末回家还在玩电视游戏,还自以为是地认为自己已经玩遍了所有的电视游戏了£1。什么都要追新是我内心一直以来改不了的坏毛病,尤其是软件应用上总是要用最新版本的,操纵系统要用最新的(不过现在这个坏毛病仿佛已经好多了,自己是实用主义者了~),自然NDS游戏也要玩上最新的。摸索出了EZ4怎么玩后,对官网的简略非常失望,官方早已经停止了对£24的更新,那是2007的事情了吧,在国外的论坛上还翻出了一些写的非常好的帖子。试图Patch最新的补丁,无奈最新的还是2007年的,得了,还是MiniSD卡的,从淘宝入了个2G的卡,为得就是多装几个游戏~山重水复疑无路,这个时候自然是要去了解烧录卡市场了,把主流产品的信息一一了解后,怕自己财力不支,后来去淘宝试试运气吧,发现了35RMB的R4iSDHC银版,支持TF卡最大到32G,果断心动了。看到有店铺卖8G套装和16G套装的,卡里面带好了游戏,但是,贵啊!NM,还要服务费似的!果断自己拼,从马里奥在线入了R4iSDHC,看着一家数码店促销,便入了一个8GTF卡(注意TF卡就是MicroSD卡,两家公司合作的产品,叫法不同而已),后来用MyDiskTest测试,发现1G多的数据完整性校验出错,卖家态度好,本来想换一张卡,后来半价拿下(14RMB到手了,包邮~)。为了自己装备更齐全,又入了SSK的多合一读卡器。此时,万事俱备只欠东风了!~这个时候还着重了解了NDS刷机,固件,烧录卡的原理以及DLDI(用于跟不同的烧录卡文件系统接口,提供统一的访问途径,简化开发者烧录卡兼容性的工作)的相关信息。怀着忐忑的心情拿到NDS上测试,一开始出现卡带时有时无的情况,冏了~联系厂家,并加入一个玩家群,反馈说是接触不良,得了,再测试下,用卫生纸擦了金手指,擦泪,就好使了~先下了个四合一内核,开机的那一刹那,紧张!看到了开机画面,Happy!由于EZ4是GBA卡槽的,R4iSDHC是NDS卡槽的,因此我的NDS就成了双卡双引导双内核的了~就这样哥们过上了可以玩大部分NDS游戏的生活,当然包括最新的游戏,别看这机器是2004年的货,ARM9+ARM7的配置依然给力,玩最新的游戏一点不卡,这也与TF卡有关,我买的Class4的,就是用于高速数码相机的。接下来就是自然的收集喜欢的ROM的阶段了,自己超喜欢“忍着龙剑传”,开始游戏的时候更加感叹自己的这个小破玩意没白买~然后自己又出现了不踏实的症状了,表现为不管什么游戏就是打开玩几分钟,一点都没有那些高端玩家所说的游戏性啊神马的。不过,让我很兴奋的一件事情再次出现,讨好GF吧。急着去搜索女孩子喜欢的NDS游戏,果断在一个百度知道上面找到满意的答案,神马“心跳回忆”、“任天狗”、“海绵宝宝”之类,觉得挺high的~这个小玩意经过自己的打点和指导,GF一定会喜欢的吧~过了玩的阶段就是折腾了,早在了解历史的时候就想着这货解剖了之后是个神马模样,整个系统架构是怎么样的,零星地看到了一些关于性能指标的介绍,主要是CPU和Memory的。之后再想到了Dev了,不管什么玩意最终自己都会想着怎么去Dev,包括自己之前送给GF的Pad,哥们玩得不是Pad,而是Android体验和Dev。早就有了GBA的开发手册,不过,NM也太久远了吧,2001年的!得了,还是找找NDS的吧,最后发现了DevkitPro,集成了NDS和PSP开发,很好很强大,支持在线安装和离线安装两种方式,自己对PC的系统盘(C盘)一直照顾有佳,没办法,40G容量只剩1G不到了,而DevkitPro默认安装到C盘,而且看到网上教程说也必须安装到默认路径。不管那么多,先把离线安装包下了再说。不信那个邪,肯定可以更改路径的,要不然这软件也太脑残了点吧。果断安装到G盘(哥们电脑里面最大的一个盘,啥东西都喜欢放到这里现在),测试ok。不过关于安装的路径不能有空格的说法我是赞同的,因为官方的安装说明是提到了的。安装完了就是开发旅程了,DevkitPro包含了各种开发工具链、开发库、例程,其中libnds是开发NDS的核心库,不过现在对其又进行了封装的PAlib貌似更加流行,还可以把开发环境和Microsoft的VS绑定。下了PAlib的库和Manual,结果Manual里面说对libnds和ARM工具链的版本有要求,需要做替换操作,不过都提供了下载链接和详细的操作步骤,接下来就是体力活了。而这个开发文档的内容十分翔实,涵盖了NDS开发的方方面面,可以作为开发指导好好研读。好了,以上就是个人的初步想法了!个人对游戏开发一直很感兴趣,希望自己也能做出很酷很玄的游戏,想起了大二的时候玩过RPGMaker(也是为了讨好GF~),结果不了了之了。兴趣同样需要坚持,任何事情都不是一蹴而就的,因此要合理地规划时间,日积月累之后必将厚积薄发,收获硕果。以下开发学习笔记时间上应该不会很规律,顺应潮流,就用TimeLine+学习内容作为本文档的索引吧。2012-04-2216:19:05再次认识NDS2012-04-2310:46:10NDSDev信息搜集很开心的是,PAlib可以去死了,跟不上DevkitPro的步伐,按照软件工程的思想,其可以死矣!~试用了NoGBA和desmume模拟器,,很喜欢后者,尤其是Debug的功能十分强大!»站.侦.J. [desmume-0.9.『Win32][gcube]□[Nofcta2.6a]NDS开发以libnds为基础,找到了其doxygen生成的文档地址:/index.html另外,找到一个宝藏,Wikipedia提供的一个资源汇总:/dswiki/index.php?title=DSDevelopmentLinks#DevelopmentDocumentation好吧,Linux总是会来凑热闹的~:/这个Wiki信息量好大'/wiki/moin.cgi/MainPageForDSLinuxUsersForDevelopersDSLinuxFAQ(readthisfirst!)CompilingDSLinuxRunningHomebrewHowtocreatepatchesforDSLinuxRunningDSLinuxPortingHowtoUsingDSLinuxDebuggingHowtoUsingDSLinuxAsATerminalGuidetoSubversionrepositoryApplicationDirectoryShellScriptingGuideComiparisonofHomebrewHardwareDSLinuxToDolistHowtocontactthedevelopersHowyoucanhelipoutListofworkingwirelessroutersGlossary又发现了DSOrganize:/ndsdev/dsorganize/有一个outofdate的开发指南,先收着吧:/ds/index.php2012-04-2311:25:09创建了GoogleCode托管好吧,我还是邪恶地创建了GoogleCode的托管,又想起了之前的151项目(啥也没做,桑心啊!!~)。地址如下:/p/open-nds/dev-scene提供的精彩教程:/NDS/TutorialsDay1#Forwindows2012-04-2314:46:04开始开发学习之旅NDS综述:[edit]HardwareOverviewTheNintendoDSisrichinfeatures.Itpossessesoneofthemostadvanced2Drenderingsystemseverseenonaconsolesystem,abundantmemoryresources(many,manytimesthatoftheSNEStffl),dualprocessorscapableofoutperformingtheNintendo64(floatingpoint闽operationsaside),integratedwirelessnetworking,amodest3Dsystemwitheasytounderstandinterface,amicrophone,andtouchpadinput.Whatfollowsisabriefdescriptionofthesefeaturesandaforeshadowingofthethingsyoumightaccomplishwiththeknowledgegainedinthisguide.NDS的内存分布图,内存访问对于程序的高效执行太关键了:

MemoryMapARM9NameStartAddressStopAddressSizeWaitStateMain0x020000000x023FFFFF4MB?BIOSOxFFFFOOOOOxFFFFJFFF32KB?ITCM0x000000000x00007FFF32KB?□TCMOxOBOOOOOO0x0B003FFF1GKB?SharedWRAMBank00x030000000x03003FFF16KB?SharedWRAMBankL0x030040000x03007FFF16KB?ARM7Main0x020000000x023FFFFF4MEpBIOS0x000000000x00003FFF16KB?IWRAM0x038000000x0380FFFF64KB?SharedWRAMBank00x030000000x03003FFF16KB?SharedWRAMBankL0x030040000x03007FFF16KBpVideoRAMMainOAM0x070000000x070003FF1KB?SubOAM0x070004000x070007FF1KB?MainPalette0x050000000x050003FF1KBpSubPalette0x050004000x050007FF1KB?BankA0x068000000x0681FFFF128KB?BankB0x0682.00000x0683FFFF128KB?BankC0x068400000x0685FFFF128KBpBank□0x068600000x0687FFFF128KB?BankE0x068800000x0688FFFF64KB?BankF0x068900000x06983FFF16KB?BankG0x068940000x06897FFFL6KB?BankH0x068980000x0689FFFF32KB?BankIOxOGSAOOOO0x068A3FFF16KB?VirtualVideoRAMMainBackground0x060000000x0607FFFF512KBpSubBackground0x062.000000x0621FFFF128KBMainSprite0x064000000x0643FFFF256KB?SubSprite0x06600000OxOG&LFFFF128KB?主内存:〔edit]MainMemoryStartAddress::0x0200:0000EndAddress二0x023F:FFFFMirror: 0x0240:0000Sometimesreferredtosimplyasmainmemory,itisthe4megabyteblockofRAMwhichgenerallyholdsyourARM9executableaswellasthevastmajorityofallgamedata.BoththeARM7andtheARM9canaccessthismemoryatanytime.Anybusconflictsaredelegatedtotheprocessorwhichhaspriority(theARM7bydefaultbutchangeableviaacontrolregister)causingtheotherprocessortowaituntilthefirsthasfinisheditsoperation.AlthoughitispossibletoexecutebothARM7andARM9codefrommainRAMatthesametime,devkitProdefaultstoplacingtheARM7intothe64Koffastiwramforperformancereasons.OfficialgamesgenerallyplacebothARM7andARM9executablesintoMainMemoryafterwhichtheARM7copiesthemajorityofitsowncodetoiwram..ARM7快速内存:

[edit]ARM7FastRam(IWRAM)Start;Address:0x03800000EndAddress:0x0380FFFFTheARM7hasexclusiveaccessto64KBoffast32bitwidememory.ItisthisregionthatcontainstheARM7executableanddataWhendesigningARM7codeitwillbeinyourinteresttokeepthebinarysmall.算了,不贴图了,大家看链接吧:/NDS/TutorialsDay22DEngine模式:GraphicsModesMain2DEngineModeBGO0G10G20G3Mode0Text/3DTextTextTextMode1Text/3DTextTextRotationMode2Text/3DTextRotationRotationMode3Text/3DTextTextExtendedMode4Text/3DTextRotationExtendedModeEText/3DTextExtendedExtendedMode63DLargeBitmapFrameBufferDirectVRAMdisplayasabitmapSub2DEngineModeBGO0G10G20G3Mode0TextTextTextTextMode1TextTextTextRotationMode2TextTextRotationRotationMode3TextTextTextExtendedMode4TextTextRotationExtendedMode5TextTextExtendedExtended嗯,dev-scene上的NDS教程地址:http://dev-scene.Com/NDS/TutorialsDay#其中#指代数字1-5。2012-04-2409:47:53开始动手又找到一个不错的教程:/files/projects/manual/manual.html信息来源Wikipedia~:/wiki/LibndsWikipedia上关于homebrew(自制软件)的词条:

/wiki/NintendoDShomebrew我去~发现了个同样喜欢研究游戏机的童鞋,PC模拟大全:/dreamboyn81/home发现一个类似于PC上的RPGMaker的DS端软件VirtualGameMakerDS:/nintendo-ds/homebrew-applications/virtual-game-maker-ds-v24-alpha.html如果想深入开发的话,库的源码也可以适当参考,给出DevkitPro整理的文件列表:/projects/devkitpro/files/很开心的是找到了libnds在SourceForge上的官方文档和源代码:IQnibnri5-ctoc3-20110214]二)1一5-6JQ^hbndsHi±DC5-2di102i4.tarO^iibnds-^nL-11.5.6.tar看到了可以在NDS上实现Telnet登录BBS,简单查看了文档,发现是台湾的开发者做的。。。ComputerOrganizationandAssemblyLanguages2008FinalProjectDStelnetAtelnetclinetapplicationonNDSB96902112蔡德育B96902120施致诚Atthebegining,weusedthewififunctionsinthePAlibrarytoconnecttosomesites.ItcoulddownloadafilecorrectlyviaHTTP(port80),butwhenconnectingtoaBBS,therecv()callalwaysblocked.Laterwefoundthatifwesendsomethingbeforethefirstrecv(),itwouldwork.Theremightbeabugindswifilibrary.Wealsowroteatext-modesubroutineformanuallyconnectingtoanAP.AkeyboardisimplementedonthetouchscreenfortypingsiteaddressandbrowsingBBS.Thescreenissosmall,ifweresizeallthingstofitthescreen,thenmanywordswouldbeunrecognizable,sowedecidedtouse8x4font(8x8forCJKcharsacters).Textsoutsidethescreencanbeseenbyscrolling.Wehavefoundabitmapfontoninternet.Itwasttcformat,weusedFontCreatortoextractittottfformatfiles,thenusedMicrosoft'sTypographytooltoextract8x8bitmapfont.WeusewindowsAPItoconverttheencodingtobig5byfunctionsWindowsAPIandcodetableinUnicode祎完言十重,andfinallyconvertittoourformat(seefont_table.cfordetail).ThisfontcontainsTraditionalChinese,SimplifyedChineseandJapanesecharacters,mostofthesecharactersinbig5encodingwouldbedisplayedcorrectly.这个文档的参考资源给的很全面:ReferencesGoogle-/Wikipedia-http://en.wikipedia.orq/devkitPro-http://www.devkitpro.orq/libnds-/No$gbaGameboyAdvance/NintendoDSEmulator-HYPERLINK"http://nocas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论