744865306 发表于 2021-5-3 07:01:41

绿宝石随机经验源码


仅可给非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

jiangzhengwenjz 发表于 2021-5-3 23:30:06

change:
      mov r2,#0x0
.pool

真的大丈夫?

744865306 发表于 2021-5-4 15:12:11

jiangzhengwenjz 发表于 2021-5-3 23:30
change:
      mov r2,#0x0
.pool


没看懂大佬意思,不过我貌似写错了个地方,那个lsl应该改成mov r1,r0

744865306 发表于 2021-5-4 20:55:41

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

jiangzhengwenjz 发表于 2021-5-5 09:15:22

744865306 发表于 2021-5-4 20:55
啊,应该这样

.gba


我不是说你的mov有问题,我也根本没看你的程序,只是想说,你指望mov r0, r1后面运行哪条指令呢?

744865306 发表于 2021-5-5 12:16:32

jiangzhengwenjz 发表于 2021-5-5 09:15
我不是说你的mov有问题,我也根本没看你的程序,只是想说,你指望mov r0, r1后面运行哪条指令呢?

我只是把mov r1,r0给恢复回来啊,跳转的时候不是会覆盖掉r0嘛?(萌新不懂,大概弄错了)

jiangzhengwenjz 发表于 2021-5-5 13:33:09

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喵 发表于 2021-6-21 16:06:28

路过回复看,好奇

kodaiwanjia 发表于 2021-8-20 07:09:11

有人知道全随机怎么做吗?
页: [1]
查看完整版本: 绿宝石随机经验源码