绿宝石随机经验源码
仅可给非802及其改版的非反编译绿宝石版本使用,请用ARMIPS编译源码,使用前请先修改版本,写入地址等信息
.gba
.thumb
.create "test.gba",0x8000000
.close
.open "绿宝石.gba","test.gba",0x8000000
.org 0x08E3CF68
.func randomexp
ldr r0,=(0x0806F5CC|1)
bl call_bx
lsl r0,r0,#0x10
cmp r6,#0x0
beq goto
ldr r2,=(change|1)
bx r2
.endfunc
.pool
.func goto
ldr r2,=(0x0804A4FC|1)
bx r2
.endfunc
.pool
.func call_bx
bx r0
.endfunc
.pool
.org 0x0804A4AA
mul r0,r2
mov r2,r0
ldr r0,=(randomexp|1)
bx r0
change:
mov r2,#0x0
.pool
.close change:
mov r2,#0x0
.pool
真的大丈夫? jiangzhengwenjz 发表于 2021-5-3 23:30
change:
mov r2,#0x0
.pool
没看懂大佬意思,不过我貌似写错了个地方,那个lsl应该改成mov r1,r0 744865306 发表于 2021-5-4 15:12
没看懂大佬意思,不过我貌似写错了个地方,那个lsl应该改成mov r1,r0
啊,应该这样
.gba
.thumb
.create "test.gba",0x8000000
.close
.open "绿宝石.gba","test.gba",0x8000000
.org 0x08F80000
.func randomexp
ldr r0,=(0x0806F5CC|1)
bl call_bx
mov r1,r0
ldr r2,=(change|1)
bx r2
.endfunc
.pool
.func call_bx
bx r0
.endfunc
.pool
.org 0x0804A4AA
mul r0,r2
mov r2,r0
ldr r0,=(randomexp|1)
bx r0
change:
mov r0,r1
.pool
.close 744865306 发表于 2021-5-4 20:55
啊,应该这样
.gba
我不是说你的mov有问题,我也根本没看你的程序,只是想说,你指望mov r0, r1后面运行哪条指令呢? jiangzhengwenjz 发表于 2021-5-5 09:15
我不是说你的mov有问题,我也根本没看你的程序,只是想说,你指望mov r0, r1后面运行哪条指令呢?
我只是把mov r1,r0给恢复回来啊,跳转的时候不是会覆盖掉r0嘛?(萌新不懂,大概弄错了) 744865306 发表于 2021-5-5 12:16
我只是把mov r1,r0给恢复回来啊,跳转的时候不是会覆盖掉r0嘛?(萌新不懂,大概弄错了)
我建议你仔细调试你的程序,随便看了看,就感觉有很多问题
1) mov r0, r1,后面直接.pool(等价于写入.long randomexp|1),根本没法正常运行的
2) mov r1, r0 和 mov r0, r1,引入r1的意义何在?
3) 从随机exp原理角度说(这个属于我瞎猜因为没看原本代码),生成exp数量的期望也未免太不合理了?不考虑是什么怪兽,平均都有个几万经验(?),那就没有实际意义
4) mov r2, r0,ROM里的函数都是遵循标准的calling convention的,也就是调用一个函数前后应该默认r0, r1, r2, r3, r12会被当作临时寄存器使用(值会发生变化),那你把数值存在r2里的意义是什么呢?(如果只是随便塞入无用的指令那当我没说) 路过回复看,好奇 有人知道全随机怎么做吗?
页:
[1]