
GBA
文章平均质量分 56
yusjoel
这个作者很懒,什么都没留下…
展开
-
[译文]使用VBA-SDL-H寻找图片
<br />原文地址:http://www.romhacking.net/docs/361/<br />工具下载:http://www.romhacking.net/utils/297/<br />ROM下载:这个自行baidu,我承认这方面比google强<br /> <br />某些没翻译的地方:<br />术语如sprite, char, tile。如果不懂也不用看这篇文章了。<br />其他如debugging console,翻译成调试控制台也很难过,知道意思就行了。<br /> <br />一个原创 2010-11-17 11:32:00 · 932 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 第一章 概述
<br />第一章:概述<br /> <br />GBA的处理器是一块任天堂定制的CPU。很多人称之为ARM7tdmi,也可以说是对的,不过ARM7只是一个核,还有其他很多东西在这块芯片上。另一个有趣的事情是ARM公司并没有制造这块芯片,他只是授权了设计。不过总的来说(我们不在意 ;)),GBA里面有个32位的ARM7tdmi。<br /> <br />这块CPU有两个指令集,ARM和THUMB。(现在只是一个概述,如果不明白这些东西也没关系。)<br /> <br />ARM指令集都是多功用的,大多都内置原创 2010-11-18 15:33:00 · 1490 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 第四章 分析第一个程序
<br />四章 分析第一个程序<br /> <br />今天我们会讨论一下第二章的那段程序,不过之前我们要再多学点指令。<br />我们要学的第一条指令是STR的另一种形式。我们能以32位方式工作,其实也能以16位,8位方式工作,不过你要确定你使用的地址是不是按照32位,16位对齐了。这里几个例子演示了如果读取和写入16位和8位的值:(我这里只用了寄存器寻址方式,其实都可以用)<br /><br />ldrh r0, [r1] LDR后面的H意思是halfword(半字,word=32,half=16,b原创 2010-11-18 19:22:00 · 1447 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 目录
原教材首页在:http://patater.com/gbaguy/gbaasm.htm作者GBAGuy写于2004年。译者说明:对ARM做了一些介绍,用来入门不错,比看ARM手册好很多。可惜的是最后一章THUMB太监了,不过估计也很简单,所以觉得没啥好写的。第五章讲图片模式,我觉得同题材的文章太多了,没必要翻译。第一章:概述(不断更新中。。)原创 2010-11-18 15:28:00 · 1039 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 第八章 BIOS
<br />第八章 BIOS<br /> <br />BIOS是一些GBA中预先写好的函数集。我们能使用指令SWI来调用它们。<br /> <br />SWI<br /> <br />SWI是SoftWare Interrupt(软件中断)。SWI的实质就是调用那些内置的函数,只要给出函数号就能工作了。比如:<br />mov r0, #0x10<br />swi 0x80000 @ SWI编号8是SQRT(SQuare RooT,开根号)。它会对r0开根号,然后把结果放到r0。<br />注意虽说SWI编原创 2010-11-18 22:55:00 · 1640 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 第七章 乘法
<br />还算幸运,GBA处理器有一些乘法指令。它们是:MUL, MLA, UMULL, UMLAL, SMULL, SMLAL。这些指令都能通过S来指明是否要影响状态标志。还有这些指令只能使用寄存器作为操作数,并且都没有位移部分。<br /> <br />指令MUL是最基本的。它进行一个32位的乘法,格式如下:<br />MUL DEST, OP1, OP2 @ DEST = OP1 * OP2。结果可能会大于32位,但是使用MUL指令的话,多出来的部分就丢失了。<br />指令MLA和MUL很相似,只原创 2010-11-18 20:27:00 · 1095 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 第三章 一些ARM指令
第3章 一些ARM指令今天我们开始学习一些ARM指令,不过之前有些事情你要记住(和执行速度有关):·对齐你的数据。使用.align命令,比如.align 4,.align 2。如果你使用了没有对齐的地址,CPU会做一些汗死人的操作绝对把速度降下来。·不访问内存的指令总是快一些,最大限度地使用寄存器,不要从内存载入数据。用MOV和ADD指令载入32位立即数,不要用LDR指令。指令LDR指令LDR还蛮多用途的,尽管它主要的功能是从内存中load(读取)一个值。它有多种寻址模式,有些我都不太清楚...你去翻手册吧原创 2010-11-18 16:37:00 · 1924 阅读 · 0 评论 -
[译文]GBAGuy的GBA ASM教材 第六章 更多指令
<br />第六章 更多指令<br /> <br />在这一章中,我们将探索更多的ARM指令,尤其是ADD,SUB,AND,ORR,EOR,BIC这些。这些指令非常相似,都包含一个位移指令,比如:<br /><br /><br />add r0, r1, r2, LSR# 2 @ r0 = r1 + (r2 逻辑右移 2)<br />bic r9, r7, r3, ROR#16 @ r9 = r7 &~ (r3 循环右移 16)<br /> <br />你不必非要位移,也可以简单地这样做:<br /><原创 2010-11-18 20:08:00 · 1052 阅读 · 0 评论