其实,反汇编很简单,但最好还是看一下每个功能
第一步,下载 No$GBA debug版,注意是后缀是debug;
第二步,ROM,烈火之剑的ROM.
这两样东西,都能用搜索引擎搜索到
第三步
①
注意绿色方框的地址,写断点("调试"→"设置带条件的断点"或 ctrl + B)设置成 "[06013000..06013020]!"(注:不包括双引号,因为每个Tile 20字节大小,所以设置为区域断点)
②不要关了精灵对话框,时刻注意它的改变,切换回不显示任何文本的状态如下图
(注:其中会中断几步,那些都不是要显示文本的);
③,按R键,其中会中断很多次例如下图
看指令和寄存器状态,指令上一步是,
streqh r3,[r1],2h;此指令,把寄存器R3的值写入[r1]中.(注:以后[]里面都表示存储器地址);
虽然是写入该地址数据指令,但看r3的值为0,所以现在这段程序还不是显示文本的
<提示:你可以按F7单步跟踪,你会发现此段是把区域的Tile清空>
④点击游戏的屏幕或F9或"运行"→"运行",会发现又断在刚才那个地方,注意了,你要时刻注意这精灵对话框,看里面的变化
⑤因为运行过头了,所以变成现在这种情况
注意绿色的六个寄存器状态,和绿色的代码,
08005C8C E7D1 b 8005C32h ;
08005C8E B001 add sp,4h ;
08005C90 BC03 pop r0,r1 ;
08005C92 7882 ldrb r2,[r0,2h] ;
08005C94 1852 add r2,r2,r1 ;
08005C96 7082 strb r2,[r0,2h] ;
08005C98 BCF8 pop r3-r7 ;
08005C9A 4698 mov r8,r3 ;
08005C9C 46A1 mov r9,r4 ;
08005C9E 46AA mov r10,r5 ;
08005CA0 46B3 mov r11,r6 ;
08005CA2 46BC mov r12,r7 ;
08005CA4 BCF0 pop r4-r7 ;
08005CA6 BC01 pop r0 ;
08005CA8 4700 bx r0 ;
08005CAA 6838 ldr r0,[r7] ;
08005CAC 4310 orr r