Advertisement
Rolanmen1

EP Script for Fire Emblem

Jul 9th, 2011
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.31 KB | None | 0 0
  1. Save = savestate.create()
  2. savestate.save(Save)
  3. BattleCheck = 1000
  4. Phase = 0x0202BC07
  5. rngbase = 0x03000000
  6. key1 = {}
  7. key1['A'] = true
  8. jump = {}
  9.  
  10. php = 0x0203E064
  11. phit = 0x0203E0C6
  12. pdmg = 0x0203E0CA
  13. pcrt = 0x0203E0CE
  14. ehp = 0x0203E062
  15. ehit = 0x0203E0C4
  16. edmg = 0x0203E0C8
  17. ecrt = 0x0203E0CC
  18.  
  19. function nextrng(r1, r2, r3)
  20.     return AND(XOR(SHIFT(r3, 5), SHIFT(r2, -11), SHIFT(r1, -1), SHIFT(r2, 15)),0xFFFF)
  21. end
  22.  
  23. function rngsim(n)
  24.     local rngbase=0x03000000
  25.     local result = { memory.readword(rngbase+4), memory.readword(rngbase+2), memory.readword(rngbase+0) }
  26.     for i = 4, n do
  27.         result[i] = nextrng(result[i-3],result[i-2],result[i-1])
  28.     end
  29.     return result
  30. end
  31.  
  32. function printstats(n)
  33.     if n == 255 then
  34.         n = "---"
  35.     end
  36.     return n
  37. end
  38.  
  39. function stats()
  40.     gui.text(0,16,"Player")
  41.     gui.text(0,24,"HP: " .. printstats(memory.readbyte(php)))
  42.     gui.text(0,32,"Hit: " .. printstats(memory.readbyte(phit)))
  43.     gui.text(0,40,"Damage: " .. printstats(memory.readbyte(pdmg)))
  44.     gui.text(0,48,"Crit: " .. printstats(memory.readbyte(pcrt)))
  45.     gui.text(0,64,"Enemy")
  46.     gui.text(0,72,"HP: " .. printstats(memory.readbyte(ehp)))
  47.     gui.text(0,80,"Hit: " .. printstats(memory.readbyte(ehit)))
  48.     gui.text(0,88,"Damage: " .. printstats(memory.readbyte(edmg)))
  49.     gui.text(0,96,"Crit: " .. printstats(memory.readbyte(ecrt)))
  50.     local nsim = 20
  51.     rngs = rngsim(35)
  52.     for i = 1, nsim do
  53.         gui.text(228, 8*(i-1), string.format("%3d", rngs[i]/655.36))
  54.     end
  55.     gui.text(210,0,"RNG1:")
  56.     gui.text(210,8,"RNG2:")
  57.     gui.text(210,16,"RNG3:")
  58.     gui.text(194,24,"Next RNs:")
  59. end
  60.  
  61. skips = -1
  62.  
  63. while skips ~= BattleCheck do
  64.     skips = skips + 1
  65.     savestate.load(Save)
  66.     for n = 1,skips,1 do
  67.         Rtemp = nextrng(memory.readword(rngbase+4), memory.readword(rngbase+2), memory.readword(rngbase+0))
  68.         memory.writeword(rngbase+4, memory.readword(rngbase+2))
  69.         memory.writeword(rngbase+2, memory.readword(rngbase+0))
  70.         memory.writeword(rngbase+0, Rtemp)
  71.     end
  72.     R = {}
  73.     for Rl = 0,4,2 do
  74.         R[Rl/2] = memory.readword(rngbase+Rl)
  75.     end
  76.     while memory.readbyte(Phase) == 128 do
  77.         joypad.set(1,key1)
  78.         key1.start = (not key1.start) or nil
  79.         gui.text(0,0, string.format('%d of %d done.', skips, BattleCheck))
  80.         jump = input.get()
  81.         if jump.Q then
  82.             Phase = 0
  83.         elseif jump.W then
  84.             Phase = 0
  85.             skips = skips - 2
  86.         end
  87.         stats()
  88.         emu.frameadvance()
  89.     end
  90. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement