Nw BBS 壬天堂世界

 找回密码
 注册
搜索
热搜: 资料集合
查看: 14859|回复: 20
收起左侧

[金手指] GBA合金弓单头L键随意换木仓ROM补丁

 关闭 [复制链接]
发表于 2004-11-6 16:01:33 | 显示全部楼层 |阅读模式
snk的程序员真是bt [wdb2]
rom塞得满满的,好不容易才找了快空地把程序塞进去..........
测试中~
有bug在这儿贴出来大家讨论。

GBA合金弓单头L键随意换木仓ROM补丁

[ Last edited by vicente on 2005-6-13 at 12:59 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2004-11-6 16:55:30 | 显示全部楼层
不能操作……
卡住了,没办法玩……
回复

使用道具 举报

 楼主| 发表于 2004-11-6 16:58:56 | 显示全部楼层
什么地方?
回复

使用道具 举报

发表于 2004-11-6 18:08:55 | 显示全部楼层
楼主完善一下放出来,我就给你置顶了~

鼓励一下,论坛需要这样的人才~~~~

楼主加油
回复

使用道具 举报

发表于 2004-11-6 19:09:01 | 显示全部楼层
什么地方?
任何地方……
就是画面就卡住,操作不能
回复

使用道具 举报

 楼主| 发表于 2004-11-6 21:12:24 | 显示全部楼层
汗,我这儿好好的,我下的ROM的CRC32是09980880,你的ROM正确吗,
回复

使用道具 举报

发表于 2004-11-6 23:15:48 | 显示全部楼层
经过我的测试,可以使用,就是换木仓的时候图像不会变,一直是某个大木仓的图形,而且子弓单使用完以后换木仓就可以实现子弓单无限,置顶鼓励~~


楼主辛苦了~~~
回复

使用道具 举报

发表于 2004-11-6 23:18:49 | 显示全部楼层
我能用,很正常!!!!谢谢楼主,真是太方便了,呵呵....
回复

使用道具 举报

 楼主| 发表于 2004-11-7 00:32:35 | 显示全部楼层
不过那个空间只能把补丁文件保持一个月~

源程序及简单的分析思路我也发过来吧。
1.很容易用低阶搜索找到保存当前子弓单状态码的地址。[0200006d]
2.在no$gba中以[02000054][02000055][0200006d]为中断即可以中断在换木仓函数中,
进而可以找到其入口地址。
08012bd2 0000 lsl r0,r0,0h
08012bd4>b5f0 push r4-r7,lr (这儿就是~)
08012bd6 4657 mov r7,r10
08012bd8 464e mov r6,r9
08012bda 4645 mov r5,r8
08012bdc b4e0 push r5-r7
08012bde b084 add sp,-10h
08012be0 0600 lsl r0,r0,18h
08012be2 0e00 lsr r0,r0,18h
08012be4 4682 mov r10,r0
08012be6 0609 lsl r1,r1,18h
08012be8 0e0d lsr r5,r1,18h
08012bea 2d12 cmp r5,12h
08012bec d86d bhi 8012ccah
08012bee 4824 ldr r0,=20048a0h
-------------
在程序中查找带有这个地址(08012bd4)的跳转,可以发现之前都r1赋值了,
我们可以猜测r1是这个函数的参数。
3.以按键寄存器地址[04000130h]变化为中断条件(比如r0 = 04000130h),可以发现
在[03004448],[0300444c]这个地址中,前者保存了按键按下时瞬间的值,之后马上又变回0;
后者保存当前按键的状态值。
4.以r0,=3004448h为中断条件可以中断在这儿:
下面是我修改后的程序,
080063b8 220d mov r2,0dh
080063ba 0300 lsl r0,r0,0ch
080063bc>4804 ldr r0,=3004448h
080063be 8801 ldrh r1,[r0]
080063c0 2008 mov r0,8h
080063c2 4008 and r0,r1
080063c4 0400 lsl r0,r0,10h
080063c6 0c00 lsr r0,r0,10h
080063c8 4240 neg r0,r0
080063ca b507 push r0-r2,lr (跳转到我的子过程之前,push r0-r2及lr)
080063cc f077fa36 bl 807d83ch (只用用中程跳转!找空白地址找得好苦>_<)
080063d0 4448 add r0,r9
080063d2 0300 lsl r0,r0,0ch

5.通过分析可以知道当l,r,a分别按下时[03004448]中保存的值分别为0200,0001,0200
接下来用测试程序可以知道换木仓函数的参数r1的取值只能为2,3,4,5,6,a,c,d,e,f
继续~
0807d83c>1c0a mov r2,r1
0807d83e 0000 lsl r0,r0,0h
0807d840 0a12 lsr r2,r2,8h
0807d842 2a02 cmp r2,2h (比较是否按了一下l键)
0807d844 d002 beq 807d84ch
0807d846 bc07 pop r0-r2
0807d848 0fc0 lsr r0,r0,1fh
0807d84a bd00 pop pc
0807d84c 4801 ldr r0,=200006dh (这个地址保存了当前木仓的状态值)
0807d84e 8802 ldrh r2,[r0]
0807d850 2105 mov r1,5h
0807d852 e001 b 807d858h
0807d854 006d lsl r5,r5,1h (这二行是数据200006d,无作用....)
0807d856 0200 lsl r0,r0,8h
0807d858 0412 lsl r2,r2,10h (清除r2高位上的无用数据)
0807d85a 0c12 lsr r2,r2,10h
0807d85c 46c0 nop
0807d85e 2a02 cmp r2,2h (之后是一个一个比较就行了!~)
0807d860 d100 bne 807d864h
0807d862 2103 mov r1,3h
0807d864 2a03 cmp r2,3h
0807d866 d100 bne 807d86ah
0807d868 2104 mov r1,4h
0807d86a 2a04 cmp r2,4h
0807d86c d100 bne 807d870h
0807d86e 2105 mov r1,5h
0807d870 2a05 cmp r2,5h
0807d872 d100 bne 807d876h
0807d874 2106 mov r1,6h
0807d876 2a06 cmp r2,6h
0807d878 d100 bne 807d87ch
0807d87a 210a mov r1,0ah
0807d87c 2a0a cmp r2,0ah
0807d87e d100 bne 807d882h
0807d880 210c mov r1,0ch
0807d882 2a0c cmp r2,0ch
0807d884 d100 bne 807d888h
0807d886 210d mov r1,0dh
0807d888 2a0d cmp r2,0dh
0807d88a d100 bne 807d88eh
0807d88c 210e mov r1,0eh
0807d88e 2a0e cmp r2,0eh
0807d890 d100 bne 807d894h
0807d892 210f mov r1,0fh
0807d894 2a0f cmp r2,0fh
0807d896 d100 bne 807d89ah
0807d898 2102 mov r1,2h
0807d89a 2a02 cmp r2,2h
0807d89c d100 bne 807d8a0h
0807d89e 2103 mov r1,3h
0807d8a0 f795f998 bl 8012bd4h (调用换木仓函数)
0807d8a4 bc07 pop r0-r2
0807d8a6 0fc0 lsr r0,r0,1fh
0807d8a8 bd00 pop pc
回复

使用道具 举报

发表于 2004-11-7 11:32:12 | 显示全部楼层
- -好像调出来秘密武器了。。。像是超级手木仓似的。。。连发啊。。。其他武器调不出来了(在激光木仓之后的就是超级手木仓/重手木仓- -|||。。。没有别的了)。
回复

使用道具 举报

发表于 2004-11-11 13:31:47 | 显示全部楼层
用NOGBA玩吃到面包后立刻自动退出。怎么办?
回复

使用道具 举报

发表于 2004-11-13 07:37:47 | 显示全部楼层
连射手抢??不就是在设定里调出B见连射么??
回复

使用道具 举报

the DACK BIBLE 该用户已被删除
发表于 2004-11-13 12:45:33 | 显示全部楼层
谢谢了~~~我的变态欲望(EVA暴走)终于爆发了
回复

使用道具 举报

nahoo 该用户已被删除
发表于 2004-11-18 23:12:22 | 显示全部楼层
楼主的这个我没有测试,不过赞叹楼主L键改木仓的想法。GBA版合金弓单头的子弓单模式我也研究过,只是不懂编程,也不懂修改rom,纯属个人的一点体会,写出来与大家共享。

合金弓单头有关子弓单的地址一共有9位,下面举例说明:
00 FF 02 01 14 00 00 FF FF
在这9位地址中,第1位00指的是子弓单的发射速度,最快为00,所以该位可以锁定为0;第2位与子弓单无关,没有分析;第3位02指子弓单的种类,相信楼主也研究过,理论上从00到0F共16种,但是我测试的时候有些代码似乎并没有对应的子弓单(没有认真测试 ),现在的02是霰弓单木仓,是威力最大的木仓了;第4、5、6、7位与子弓单无关,没有分析;最后两位就是子弓单的数量了,FF FF是10进制的65535,在游戏中代表子弓单无限。

这样说来,修改子弓单所需要修改的就只有4个地址了,而且由于子弓单的种类与数量地址非常接近,也就非常便于寻找。上文中的实例是我认为最强的组合了,以最快的速度发射无限的霰弓单,真的很爽,而且由于速度很快,子弓单追子弓单,屏幕上显示子弓单的位置会有花屏现象,但是决不会花版。实际效果也非常的好,打BOSS卡片简直轻而易举,第5关的BOSS在没有发射大激光之前就能够被干掉了(BOSS一定特冤)。只是这样的修改会产生副作用,即在游戏的过程中如果吃到其他的子弓单,将会造成只开木仓,没有子弓单打出的空壳弓单,这是只要进出一下坦克或是进出一下场景就可以恢复了。

还是第一次写这种修改的心得,而且由于不会编程,文中肯定有很多不正确的地方,还希望能够跟达人多多取经,多多交流。
回复

使用道具 举报

发表于 2004-11-20 10:42:31 | 显示全部楼层
楼上的朋友很厉害嘛~~~

修改BC路过的说~~~

其实,我是来仰慕小兰的
回复

使用道具 举报

发表于 2004-11-21 19:19:26 | 显示全部楼层
有一个小问题就是在乘上坦克后换子弓单的话坦克就是透明的
回复

使用道具 举报

deepexe 该用户已被删除
发表于 2004-11-23 18:32:41 | 显示全部楼层
let me c c sin
回复

使用道具 举报

deepexe 该用户已被删除
发表于 2004-11-23 18:35:53 | 显示全部楼层
显示表情弓单出窗口
回复

使用道具 举报

fb123990 该用户已被删除
发表于 2006-4-6 11:43:08 | 显示全部楼层
有些ROM玩不了~~
回复

使用道具 举报

231377523 该用户已被删除
发表于 2007-7-31 20:59:02 | 显示全部楼层
到底怎么使用啊 ?
请LZ 帮忙下 好好教我下 ,可以么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|Nw壬天堂世界 ( 京ICP备05022083号-1 京公网安备11010202001397号 )

GMT+8, 2024-11-16 18:47 , Processed in 0.029327 second(s), 5 queries , Redis On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表