caitsith2

FFIV lua script

Oct 9th, 2011 (edited)
724
0
Never
10
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 41.43 KB | None | 0 0
  1. -- ========================================================================= --
  2. -- Final Fantasy IV LUA script (SFC/SNES)                                    --
  3. -- By: Pasky13                                                               --
  4. --                                                                           --
  5. -- ! ! ! IMPORTANT WARNING ! ! !                                             --
  6. -- ANY COMMENTS BELOW PROMOTING "LEAKED EXPLOITS," CRYPTO SWAPS, OR          --
  7. -- "MAKING $13,000" ARE SPAM FROM COMPROMISED ACCOUNTS.                      --
  8. --                                                                           --
  9. -- 1. DO NOT COPY/PASTE ANY LINKS FROM THE COMMENTS. THEY ARE SCAMS.         --
  10. -- 2. PLEASE CLICK THE 'REPORT' BUTTON ON ANY SPAM COMMENTS YOU SEE.         --
  11. --    Reporting helps Pastebin ban the compromised accounts used by bots.    --
  12. -- ========================================================================= --
  13.  
  14. -- Globals
  15.  
  16.   char_atbm  = {0, 0, 0, 0, 0}
  17.   enemy_atbm = {0, 0, 0, 0, 0, 0, 0, 0}
  18.  
  19.   -- Change this to the amount of groups you want displayed at a time
  20.   groupmax = 5  
  21.  
  22.   TableEnemyFormation = { "Imp x3",
  23.                           "FloatEye x2",
  24.                           "Eagle x2, FloatEye x1",
  25.                           "Eagle x3",
  26.                           "Imp x3, Sword Rat x1",
  27.                           "SwordRat x2, Imp x2",
  28.                           "Imp x4",
  29.                           "Larva x3",
  30.                           "SandMoth x2, Larva x2",
  31.                           "Sand Man x4",
  32.                           "SandPede x1, Sand Man x2",
  33.                           "SandWorm x1",
  34.                           "Evilshell x3 WaterBug x1",
  35.                           "Pike x3",
  36.                           "CaveToad x3",
  37.                           "Pike x2, Evilshell x2",
  38.                           "Zombie x4",
  39.                           "Pike x2, Evilshell x2, WaterBug x2",
  40.                           "Jelly x4",
  41.                           "TinyMage x2, WaterHag x4",
  42.                           "CaveToad x4",
  43.                           "CaveToad x2, Mad Toad x2",
  44.                           "Aligator x1, Pike x2",
  45.                           "Aligator x2",
  46.                           "Zombie x6",
  47.                           "Aligator x1, WaterBug x2",
  48.                           "Mad Toad x4",
  49.                           "TinyMage x4",
  50.                           "Imp x8",
  51.                           "SwordRat x2, Imp x2, TinyMage x2",
  52.                           "SandWorm x1, Sandpede x1",
  53.                           "SandWorm x2",
  54.                           "Imp x3, Imp Captain x1",
  55.                           "Turtle x1, Imp x2",
  56.                           "Cream x4",
  57.                           "Basilisk x1, Imp x3",
  58.                           "Turtle x2",
  59.                           "Weeper x1, Turtle x1, Basilisk x1",
  60.                           "Basilisk x1, Turtle x1",
  61.                           "Weeper x2",
  62.                           "Skelton x4",
  63.                           "Spirit x2",
  64.                           "Gargoyle x1, Cocktrice x1",
  65.                           "Bomb x3",
  66.                           "Cocktrice x3",
  67.                           "Gargoyle x2",
  68.                           "GrayBomb x2, Bomb x2",
  69.                           "Spirit x2, Skelton x2",
  70.                 "Unknown",
  71.                           "Red Bone x1, Skelton x3",
  72.                           "GrayBomb x2, Bomb x4",
  73.                           "Spirit x3, Skelton x2, Red Bone x1",
  74.                           "Imp Captain x3, Needler x1",
  75.                           "Imp Captain x3, Needler x3",
  76.                           "Imp Captain x4, Imp x2",
  77.                           "SwordRat x3, Needler x3",
  78.                           "Raven x1",
  79.                 "Unknown",
  80.                           "Needler x2, SwordRat x2",
  81.                           "Raven x1 Cockatrice x3",
  82.                           "Spirit x3, Soul x1",
  83.                           "Soul x2, Red Bone x2",
  84.                           "Skelton x3, Red Bone x2",
  85.                           "Lilith x1, Red Bone x2",
  86.                           "Ghoul x1, Red Bone x2, Skelton x2",
  87.                           "Spirit x2, Soul x2, Red Bone x2",
  88.                           "Zombie x2, Ghoul x2",
  89.                           "Ghoul x2, Soul x2",
  90.                           "Revenant x1, Ghoul x3",
  91.                           "Zombie x3, Ghoul x2, Revenant x2",
  92.                           "Lilith x1",
  93.                           "Soul x2, Ghoul x2, Revenant x2",
  94.                           "Soul x3, Ghoul x1, Revenant x1",
  95.                           "Lilith x2",
  96.                           "Piranha x2, FangShel x1, Evilshell x1",
  97.                           "Pike x3, Piranha x3",
  98.                           "Crocdile x1, Piranha x2",
  99.                           "FangShel x3, Aligator x1, Crocdile x1",
  100.                           "Piranha x2, ElecFish x2",
  101.                           "Crocdile x1, ElecFish x3",
  102.                           "AquaWorm x1, Piranha x3",
  103.                           "Hydra x2",
  104.                           "Crocdile x2",
  105.                           "AquaWorm x1, ElecFish x3",
  106.                           "AquaWorm x1, Hydra x1, Crocdile x1",
  107.                           "Guard x2",
  108.                           "Guard x1, Hydra x2",
  109.                           "AquaWorm x2",
  110.                           "StingRat x3, Treant x2",
  111.                           "Panther x1, StingRat x3",
  112.                           "Cannibal x1, Treant x2",
  113.                           "Python x1, StingRat x2",
  114.                           "Ogre x1, Panther x2",
  115.                           "Ogre x2",
  116.                           "Cave Bat x3",
  117.                           "Panther x2",
  118.                           "Mage x2",
  119.                           "CaveNaga x1, Ogre x1",
  120.                           "CaveNaga x1, Python x2",
  121.                           "Ogre x3",
  122.                           "VampGirl x1, Cave Bat x3",
  123.                           "Mage x1, Panther x1, Ogre x1",
  124.                           "Panther x2, Ogre x2",
  125.                           "CaveNaga x2, Python x2",
  126.                           "VampGirl x2, Cave Bat x3",
  127.                           "Panther x2, Ogre x1, CaveNaga x1",
  128.                           "VampGirl x1, Cave Bat x6",
  129.                           "Marion x1, (Summon Puppet x1), Puppet x2",
  130.                           "Marion x1, (Summon Puppet x1), Puppet x3",
  131.                           "Centaur x1, IceBeast x2",
  132.                           "Centaur x2, IceBeast x2",
  133.                           "Centaur x3",
  134.                           "Centaur x1, Gremlin x2",
  135.                           "Slime x4",
  136.                           "Ice Lizard x1, Slime x3",
  137.                           "Jelly x1, Slime x2, Cream x1",
  138.                           "Gremlin x2, Ice Lizard x2",
  139.                           "Carapace x2, Ice Lizard x2",
  140.                           "SwordMan x2",
  141.                           "SwordMan x1, Ice Lizard x2",
  142.                           "Swordman x2, Ice Lizard x 2",
  143.                           "SwordMan x1, IceBeast x2",
  144.                           "EpeeGirl x2, SwordMan x2",
  145.                           "EpeeGirl x3",
  146.                           "Witch x1, EpeeGirl x1, Swordman x1",
  147.                           "EpeeGirl x1, Ice Lizard x1, IceBeast x1",
  148.                           "Witch x1, EpeeGirl, x1, Centaur x1",
  149.                           "Witch x1, IceBeast x2, EpeeGirl x1",
  150.                           "Witch x1, SwordMan x2, EpeeGirl x1",
  151.                           "Witch x1, EpeeGirl x2",
  152.                           "Imp x1",
  153.                           "Imp x1",
  154.                           "Imp x1",
  155.                           "Imp x1",
  156.                           "Imp x1",
  157.                 "Unknown",
  158.                           "Roc x1, Roc Baby x2",
  159.                           "Roc x1, Roc Baby x3",
  160.                           "HugeCell x4",
  161.                           "HugeCell x3",
  162.                           "GiantBat x3",
  163.                           "GiantBat x4",
  164.                           "GiantBat x3, Cave Bat x3",
  165.                           "Ironback x2",
  166.                           "Ironback x1, Armadilo x1, BlackLiz x1",
  167.                           "Ironback x2, BlackLiz x2",
  168.                           "Skull x3",
  169.                           "Skull x4",
  170.                           "Red Bone x3, Skull x2",
  171.                           "Staleman x1",
  172.                           "Staleman x1, Skull x2",
  173.                           "Staleman x1, Skull x2, Red Bone x2",
  174.                           "Mad Ogre x2",
  175.                           "Mad Ogre x3",
  176.                           "Mad Ogre x4",
  177.                           "BlackCat x2",
  178.                           "BlackCat x3",
  179.                           "Lamia x1, BlackCat x1, Mad Ogre x1",
  180.                           "Mad Ogre x1, BlackCat x2",
  181.                           "Mad Ogre x2, BlackCat x2",
  182.                           "Egg(Lamia x1)",
  183.                           "Lamia x2",
  184.                           "Lamia x3",
  185.                           "Lamia x1, Mad Ogre x1",
  186.                           "BlackCat x2, Lamia x1",
  187.                           "BlackCat x2, Lamia x2",
  188.                           "Balloon x3",
  189.                           "Balloon x4",
  190.                           "Mad Ogre x1, BlackCat x1, Balloon x2",
  191.                           "Grudger x1, Mad Ogre x1, Balloon x2",
  192.                           "Grudger x2",
  193.                           "Grudger x3",
  194.                           "Balloon x3, Grudger x1",
  195.                           "Grudger x2, Lamia x1",
  196.                           "BladeMan x3",
  197.                           "BlackCat x1, BladeMan x1, Mad Ogre x1",
  198.                           "Blademan x1, Balloon x3, BlackCat x1",
  199.                           "Mad Ogre x1, BladeMan x1, BlackCat x1",
  200.                           "Egg(Green Dragon x1)",
  201.                           "Sorcerer x1, (Summon Mad Ogre x1), BladeMan x2",
  202.                           "Sorcerer x1, (Summon BlackCat x1), BladeMan x2",
  203.                           "Sorcerer x1, (Summon BladeMan x1), BladeMan x2",
  204.                           "Sorcerer x1, (Summon Green Dragon x1), BladeMan x2",
  205.                           "Imp x1",
  206.                           "Searcher x1, (Summon Machine x1)",
  207.                           "Searcher x1, (Summon Machine x1), Machine x2",
  208.                           "Machine x2, Beamer x1",
  209.                           "Machine x2, Beamer x2",
  210.                           "Searcher x1, (Summon Horseman x1), Machine x2",
  211.                           "Horseman x1, Machine x2",
  212.                           "MacGiant x1",
  213.                           "MacGiant x1",
  214.                           "Horseman x1, Beamer x2",
  215.                           "Horseman x1, Beamer x1, Machine x1",
  216.                           "Searcher x1, (Summon MacGiant x1)",
  217.                           "MacGiant x1, Horseman x1",
  218.                           "Searcher x1, (Summon Horseman x1), Beamer x2",
  219.                           "Machine x2, Beamer x3",
  220.                           "Horseman x2",
  221.                           "D.Machin x1",
  222.                           "Searcher x1, (Summon D.Machin x1), Beamer x2",
  223.                           "MacGiant x1, Machine x1, Beamer x1",
  224.                           "MacGiant x1, Horseman x1, Beamer x1",
  225.                           "Imp x1",
  226.                           "Machine x3, Beamer x2",
  227.                           "Beamer x1, Machine x2, Horseman x1",
  228.                           "MacGiant x2",
  229.                           "Imp x1",
  230.                           "Imp x6",
  231.                           "SwordRat x6",
  232.                           "FlameDog x2, BlackLiz x2",
  233.                           "Horseman x1, Machine x2",
  234.                           "Horseman x1, Juclyote x2",
  235.                           "Horseman x2",
  236.                           "EvilMask",
  237.                           "Imp x1",
  238.                 "Unknown",
  239.                 "Unknown",
  240.                 "Unknown",
  241.                 "Unknown",
  242.                 "Unknown",
  243.                 "Unknown",
  244.                 "Unknown",
  245.                 "Unknown",
  246.                 "Unknown",
  247.                 "Unknown",
  248.                 "Unknown",
  249.                 "Unknown",
  250.                 "Unknown",
  251.                 "Unknown",
  252.                 "Unknown",
  253.                 "Unknown",
  254.                 "Unknown",
  255.                 "Unknown",
  256.                 "Unknown",
  257.                 "Unknown",
  258.                 "Unknown",
  259.                 "Unknown",
  260.                 "Unknown",
  261.                 "Unknown",
  262.                 "Unknown",
  263.                 "Unknown",
  264.                 "Unknown",
  265.                 "Unknown",
  266.                 "Unknown",
  267.                 "Unknown",
  268.                 "Unknown",
  269.                 "Unknown",
  270.                 "Unknown",
  271.                 "Unknown",
  272.                 "Unknown",
  273.                 "Unknown",
  274.                 "Unknown",
  275.                 "Unknown",
  276.                 "Unknown",
  277.                 "Unknown",
  278.                 "Unknown",
  279.                           "Armadillo x2",
  280.                           "Dark Imp x3, Armadillo x1, BlackLiz x1",
  281.                           "Armadillo x1, Tortise x2",
  282.                           "Dark Imp x4",
  283.                           "Tortise x1, Dark Imp x2",
  284.                           "Tortise x2, Armadillo x1, Black Liz x1",
  285.                           "BlackLiz x3",
  286.                           "Marion x1, (Summon EvilDoll x1), EvilDoll x2",
  287.                           "Marion x1, (Summon EvilDoll x1), EvilDoll x3",
  288.                           "FlameDog x2",
  289.                           "FlameDog x3",
  290.                           "FlameDog x4",
  291.                           "FlameMan x1, FlameDog x2",
  292.                           "FlameMan x2, FlameDog x2",
  293.                           "BlackLiz x2",
  294.                           "BlackLiz x3",
  295.                           "Egg(BlackLiz x1)",
  296.                           "Tortoise x2, BlackLiz x1",
  297.                           "Tortoise x2, BlackLiz x2",
  298.                           "Tofu x4",
  299.                           "Tofu x6",
  300.                           "Chimera x1, Tofu x3",
  301.                           "Chimera x1",
  302.                           "Chimera x2",
  303.                           "Chimera x1, FlameMan x1",
  304.                           "Chimera x1, FlameMan x2",
  305.                           "Chimera x1, FlameDog x2",
  306.                           "Stoneman x1, Medusa x1",
  307.                           "Medusa x2",
  308.                           "Stoneman x2",
  309.                           "Alert x1, (Summon Chimera x1)",
  310.                           "Alert x1, (Summon Stoneman x1)",
  311.                           "Alert x1, (Summon Naga x1)",
  312.                           "Alert x1, (Summon FlameDog x1)",
  313.                 "Unknown",
  314.                 "Unknown",
  315.                 "Unknown",
  316.                 "Unknown",
  317.                 "Unknown",
  318.                           "Egg(Lamia x1), Q. Lamia x1",
  319.                           "Egg(Lamia x3), Q. Lamia x1",
  320.                           "Q. Lamia x1, Egg(Lamia x1), BlackCat x1",
  321.                           "Q. Lamia x1, Egg(Lamia x1), Lamia x2",
  322.                           "Ironman x1",
  323.                           "Ironman x2",
  324.                           "Ironman x1, BladeMan x2",
  325.                           "Green Dragon x1",
  326.                           "BladeMan x1, BlackCat x1, Q. Lamia x1",
  327.                           "Ironman x1, Blackcat x2",
  328.                           "Sorcerer x1, (Summon Q. Lamia x1), BlackCat x2",
  329.                           "Sorcerer x1, (Summon Ironman x1), BlackCat x2",
  330.                           "Sorcerer x1, (Summon Q. Lamia x1), BlackCat x2",
  331.                           "Grudger x2, BladeMan x2",
  332.                           "Grudger x1, BladeMan x2",
  333.                           "Grudger x1, BlackCat x2, BladeMan x1",
  334.                           "Centpede x1",
  335.                           "TrapRose x1, Centpede x2",
  336.                           "TrapRose x2",
  337.                           "RocLarva x4",
  338.                           "RockMoth x2",
  339.                           "RockMoth x2, RocLarva x2",
  340.                           "TrapRose x1, RockMoth x2",
  341.                           "TrapRose x1, RockMoth x2, RocLarva x2",
  342.                           "ToadLady x1, TinyToad x3",
  343.                           "ToadLady x1, TinyToad x6",
  344.                           "Marlboro x2",
  345.                           "Marlboro x3",
  346.                           "Marlboro x1, Ghost x2",
  347.                           "Ghost x3",
  348.                           "Ghost x4",
  349.                           "Marlboro x1, Ghost x1, DarkTree x1",
  350.                           "Ghost x3, DarkTree x2",
  351.                           "DarkTree x2, Marlboro x1, Ghost x1",
  352.                           "Centpede x1, Marlboro x2",
  353.                           "DarkTree x2, Marlboro x2",
  354.                           "Red Eye x2",
  355.                           "Red Eye x3",
  356.                           "Hooligan x1, Red Eye x1",
  357.                           "Hooligan x1",
  358.                           "Hooligan x2",
  359.                           "Warrior x2, Fiend x2",
  360.                           "Warrior x2, Fiend x4",
  361.                           "Conjurer x1, (Summon Imp x1)",
  362.                           "Conjurer x1, (Summon RockMoth x1)",
  363.                           "Conjurer x1, (Summon Arachne x1)",
  364.                           "Conjurer x1, (Summon HugeNaga x1)",
  365.                           "Conjurer x1, (Summon Clapper x1)",
  366.                           "Arachne x1",
  367.                           "Arachne x2",
  368.                           "Clapper x1",
  369.                           "Clapper x2",
  370.                 "Unknown",
  371.                 "Unknown",
  372.                 "Unknown",
  373.                 "Unknown",
  374.                           "Were Bat x4",
  375.                           "Were Bat x3",
  376.                           "VampLady x1, Were Bat x3",
  377.                           "VampLady x1, Were Bat x6",
  378.                           "VampLady x2, Were Bat x3",
  379.                           "Yellow Dragonragon x1",
  380.                           "Screamer x2",
  381.                           "Mantcore x1, Screamer x1",
  382.                           "HugeNaga x2",
  383.                           "Screamer x1, HugeNaga x1",
  384.                           "HugeNaga x1, Screamer x2",
  385.                 "Unknown",
  386.                 "Unknown",
  387.                 "Unknown",
  388.                 "Unknown",
  389.                 "Unknown",
  390.                           "MoonCell x2, Pudding x2",
  391.                 "Unknown",
  392.                           "Juclyote x2, MoonCell x2, Grenade x1",
  393.                           "Procyote x1, Juclyote x2",
  394.                           "Procyote x1, Pudding x2",
  395.                           "Juclyote x1, Procyote x2",
  396.                           "Red Worm x1, Procyote x1, Juclyote x1",
  397.                           "Red Worm x2",
  398.                           "H.Ito",
  399.                           "K.Higuchi",
  400.                           "K.Aoki",
  401.                           "A.Matsui",
  402.                           "K.Yoshii",
  403.                           "H.Nakada",
  404.                           "Takahashi",
  405.                 "Unknown",
  406.                           "Warlock x1",
  407.                           "Warlock x1, Kary x1",
  408.                           "Warlock x1, Kary x2",
  409.                           "RedGiant x1",
  410.                           "Warlock x1, Kary x1, RedGiant x1",
  411.                           "RedGiant x2",
  412.                           "Warlock x2, RedGiant x1",
  413.                           "Dragon Bone x1",
  414.                           "Ging-Ryu x1",
  415.                           "Dragon Bone x1, Warlock x1",
  416.                           "King-Ryu x2",
  417.                           "Warlock x3",
  418.                           "Blue Dragon x1",
  419.                           "FatalEye x1",
  420.                           "Blue Dragon x2",
  421.                           "Ging-Ryu x1, RedGiant x1",
  422.                           "FatalEye x2",
  423.                           "D.Fossil x1",
  424.                           "King-Ryu x1",
  425.                           "King-Ryu x1, Ging-Ryu x1",
  426.                           "Tricker x1",
  427.                           "Tricker x1",
  428.                           "PinkPuff x5",
  429.                           "EvilMask x1",
  430.                 "Unknown",
  431.                           "Red D. x1",
  432.                           "Red D. x2",
  433.                           "Red D. x1, Behemoth x1",
  434.                           "EvilMask x1",
  435.                           "Behemoth x2",
  436.                           "EvilMask x2",
  437.                           "Red D. x3",
  438.                 "Unknown",
  439.                           "Breath x1",
  440.                           "Mind x1",
  441.                           "Behemoth x1",
  442.                 "Unknown",
  443.                 "Unknown",
  444.                 "Unknown",
  445.                 "Unknown",
  446.                 "Unknown",
  447.                 "Unknown",
  448.                 "Unknown",
  449.                 "Unknown",
  450.                 "Unknown",
  451.                 "Unknown",
  452.                 "Unknown",
  453.                 "Unknown",
  454.                 "Unknown",
  455.                 "Unknown",
  456.                 "Unknown",
  457.                 "Unknown",
  458.                 "Unknown",
  459.                 "Unknown",
  460.                 "Unknown",
  461.                 "Unknown",
  462.                 "Unknown",
  463.                 "Unknown",
  464.                 "Unknown",
  465.                           "Pudding x4",
  466.                           "Pudding x2, Grenade x2",
  467.                           "Balloon x2, Grenade x2",
  468.                           "Slime x1, Tofu x1, Pudding x1",
  469.                           "Red Worm x1, Grenade x3",
  470.                 "Unknown",
  471.                 "Unknown",
  472.                 "Unknown",
  473.                 "Unknown",
  474.                 "Unknown",
  475.                 "Unknown",
  476.                 "Unknown",
  477.                 "Unknown",
  478.                 "Unknown",
  479.                 "Unknown",
  480.                 "Unknown",
  481.                 "Unknown",
  482.                 "Unknown",
  483.                 "Unknown",
  484.                 "Unknown",
  485.                 "Unknown",
  486.                 "Unknown",
  487.                 "Unknown",
  488.                 "Unknown",
  489.                 "Unknown",
  490.                 "Unknown",
  491.                 "Unknown",
  492.                 "Unknown",
  493.                 "Unknown",
  494.                           "TrapRose x1, GlomWing x2, Crawler x2",
  495.                           "Medusa x1, Gorgon x1, Stoneman x1",
  496.                           "Talantla x1, BlackCat x2",
  497.                           "Egg(BlackLiz x1)",
  498.                           "Egg(Lamia x1)",
  499.                           "Egg(HugeNaga x1)",
  500.                           "Egg(Green Dragon x1)",
  501.                           "Egg(Yellow Dragon x1)"
  502.                         }
  503.  
  504.  
  505. local function retrievegroup(formation)
  506.  
  507.     if formation < 0x1DF then
  508.         return TableEnemyFormation[formation+1]
  509.     else
  510.         return "Unknown"
  511.     end
  512.    
  513. end
  514.  
  515. local function ecords_y(y)
  516.     local ex = bit.lshift(bit.band(y,0x0F),3) +0x0C - 0x16
  517.     return ex
  518. end
  519.  
  520. local function ecords_x(x)
  521.     local ey = bit.rshift(bit.band(x,0xF0),1) + 8 + 0x10
  522.     return ey
  523.  end
  524.  
  525. local function rndbattle()
  526.  
  527.     local steps = 0
  528.     local encounter = false
  529.     local val1 = 0
  530.     local val2 = 0
  531.     local val3 = 0
  532.     local val4 = 0
  533.     local val5 = 0
  534.     local rollover = false
  535.     local area = memory.readbyte(0x7E1700)
  536.  
  537.     if area == 0 then
  538.         -- Earth world map
  539.         while encounter == false do
  540.  
  541.             steps = steps +1
  542.  
  543.             val1 = bit.band(bit.rshift(memory.readbyte (0x7E1707),2),0xF8)
  544.             val2 = bit.rshift(memory.readbyte(0x7E1706),5) + val1
  545.             val3 = memory.readbyte(0x0EC300 + val2)
  546.             val4 = memory.readbyte(0x14EE00+((memory.readbyte(0x7E0686)+steps)) % 0x100)
  547.  
  548.             if (memory.readbyte(0x7E0686) + steps) % 0x100 == 0
  549.                 then rollover = true
  550.             end
  551.  
  552.             if rollover == true then
  553.                 val5 = (val4 + (memory.readbyte(0x7E17EF)) + 0x11) % 0x100
  554.             else
  555.                 val5 = (val4 + memory.readbyte(0x7E17EF)) % 0x100
  556.             end
  557.  
  558.             if val5 < val3 then
  559.                 gui.text(145,3,"(Earth world map)",0x0000FFFF)
  560.                 encounter = true
  561.             end
  562.  
  563.             if steps > 500 then
  564.                 encounter = true
  565.                 steps = 0
  566.                 gui.text(145,3,"(No Encounters)",0x0000FFFF)
  567.             end
  568.  
  569.         end
  570.        
  571.     elseif area == 1 then
  572.     -- Underground
  573.  
  574.             while encounter == false do
  575.  
  576.             steps = steps +1
  577.  
  578.             val1 = (memory.readbyte(0x7E0686) + steps) % 0x100
  579.             val2 = memory.readbyte(0x14EE00 + val1)
  580.  
  581.             if val1 == 0 then
  582.                 rollover =  true
  583.             end
  584.  
  585.             if rollover == true then
  586.                 val3 = val2 + ((memory.readbyte (0x7E17EF)+0x11) % 0x100)
  587.             else
  588.                 val3 = val2 + memory.readbyte (0x7E17EF)
  589.             end
  590.  
  591.             val3 = val3 % 0x100
  592.             val4 = memory.readbyte(0x0EC340)
  593.  
  594.             if val3 < val4 then
  595.                 gui.text(145,3,"(Underworld world map)",0x0000FFFF)
  596.                 encounter = true
  597.             end
  598.  
  599.             if steps > 500 then
  600.                 encounter = true
  601.                 gui.text(145,3,"(No Encounters)",0x0000FFFF)
  602.                 steps = 0
  603.             end
  604.  
  605.         end
  606.  
  607.     elseif area == 2 then
  608.     -- Moon
  609.         while encounter == false do
  610.  
  611.             steps = steps +1
  612.  
  613.             val1 = (memory.readbyte(0x7E0686) + steps) % 0x100
  614.             val2 = memory.readbyte(0x14EE00 + val1)
  615.  
  616.             if val1 == 0 then
  617.                 rollover = true
  618.             end
  619.  
  620.             if rollover == true then
  621.                 val3 = val2 + ((memory.readbyte(0x7E17EF) + 0x11)%0x100)
  622.             else
  623.                 val3 = val2 + memory.readbyte (0x7E17EF)
  624.             end
  625.  
  626.             val3 = val3 % 0x100
  627.             val4 = memory.readbyte(0x0EC341)
  628.  
  629.             if val3 < val4 then
  630.                 gui.text(145,3,"(Moon world map)",0x0000FFFF)
  631.                 encounter = true
  632.             end
  633.  
  634.             if steps > 500 then
  635.                 encounter = true
  636.                 gui.text(145,3,"(No Encounters)",0x0000FFFF)
  637.                 steps = 0
  638.             end
  639.  
  640.         end
  641.  
  642.     elseif area > 2 then
  643.     -- Dungeon
  644.  
  645.         while encounter == false do
  646.  
  647.             steps = steps +1
  648.  
  649.             val1 = memory.readbyte(0x7E1702)
  650.  
  651.             if memory.readbyte(0x7E1701) > 0 then
  652.                 val1 = val1 + 0x100
  653.             end
  654.  
  655.             val2 = memory.readbyte(0x0EC342+ val1)
  656.             val3 = memory.readbyte(0x7E0686) + steps
  657.             val3 = val3 % 0x100
  658.             val4 = memory.readbyte(0x14EE00 + val3)
  659.  
  660.             if val3 == 0 then
  661.                 rollover = true
  662.             end
  663.  
  664.             if rollover == true then
  665.                 val5 = val4 + ((memory.readbyte(0x7E17EF) + 0x11) % 0x100)
  666.             else
  667.                 val5 = val4 + memory.readbyte(0x7E17EF)
  668.             end
  669.  
  670.             val5 = val5 % 0x100
  671.  
  672.             if val5 < val2 then
  673.                 gui.text(145,3,"(Dungeon)",0x0000FFFF)
  674.                 encounter = true
  675.             end
  676.  
  677.             if steps > 500 then
  678.                 encounter = true
  679.                 gui.text(145,3,"(No Encounters)",0x0000FFFF)
  680.                 steps = 0
  681.             end
  682.  
  683.         end
  684.  
  685.     end
  686.  
  687.     return steps
  688.  
  689. end
  690.  
  691. local function enemygroup(num)
  692.  
  693.     local area = memory.readbyte(0x7E1700)
  694.     local group = nil
  695.     local x = 0
  696.     local x2 = 0
  697.     local val1 = 0
  698.     local val2 = 0
  699.     local val3 = 0
  700.     local rollover = false
  701.     local rollover2 = false
  702.     local i = 0
  703.  
  704.     if area == 0 then
  705.     -- Earth world map
  706.         for i=0, num do
  707.  
  708.             val1 = bit.band(bit.rshift(memory.readbyte(0x7E1707),2), 0xF8)
  709.             x = (bit.rshift(memory.readbyte(0x7E1706),5) + val1)  % 0x100
  710.             val2 = bit.lshift(memory.readbyte(0x0ec542+x),3)
  711.             x2 = (memory.readbyte(0x7E0687) + i) % 0x100
  712.  
  713.             if (memory.readbyte(0x7E0687) + i) % 0x100 == 0xFF then
  714.                 rollover = true
  715.             end
  716.  
  717.             if rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) == 0xFF then
  718.                 val3 = memory.readbyte(0x7E17EE) +0x11
  719.             elseif rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) ~= 0xFF then
  720.                 val3 = memory.readbyte(0x14EE00 + x2) + ((memory.readbyte(0x7E17EE) + 0x11)  % 0x100)
  721.             elseif rollover == false then
  722.                 val3 = memory.readbyte(0x14EE00 + x2) + memory.readbyte(0x7E17EE)
  723.             end
  724.  
  725.             val3 = val3 % 0x100
  726.             --val3 = (memory.readbyte(0x14ee00+x2) + memory.readbyte(0x7E17EE)) % 0x100
  727.  
  728.             if val3 > 0xFC  then
  729.                 val2 = val2 + 7
  730.             elseif val3 > 0xEC then
  731.                 val2 = val2 + 6
  732.             elseif val3 > 0xCC then
  733.                 val2 = val2 + 5
  734.             elseif val3 > 0xAC then
  735.                 val2 = val2 + 4
  736.             elseif val3 > 0x81 then
  737.                 val2 = val2 + 3
  738.             elseif val3 > 0x56 then
  739.                 val2 = val2 + 2
  740.             elseif val3 > 0x2B then
  741.                 val2 = val2 + 1
  742.             end
  743.  
  744.             val2 = memory.readbyte(0xEC796+val2)
  745.  
  746.             if memory.readbyte(0x7E1701)  > 0 then
  747.                 val2 = val2 + 0x100
  748.             end
  749.  
  750.             group = val2
  751.  
  752.         end
  753.  
  754.     elseif area == 1 then
  755.         -- Underground world map
  756.  
  757.         for i=0, num do
  758.  
  759.             val1 = bit.band(bit.rshift(memory.readbyte(0x7E1707),3),0xFC)
  760.             x = bit.rshift(memory.readbyte(0x7E1706),5)
  761.             x = (x + val1)  % 0x100
  762.             val2 = bit.lshift(memory.readbyte(0x0ec582+x),3)
  763.             x2 = (memory.readbyte(0x7E0687) + i)  % 0x100
  764.  
  765.             if memory.readbyte(0x7E0687) == 0xFF then
  766.                 rollover = true
  767.             end
  768.  
  769.             if rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) == 0xFF then
  770.                 val3 = memory.readbyte(0x7E17EE) +0x11
  771.             elseif rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) ~= 0xFF then
  772.                 val3 = memory.readbyte(0x14EE00 + x2) + ((memory.readbyte(0x7E17EE) + 0x11)  % 0x100)
  773.             elseif rollover == false then
  774.                 val3 = memory.readbyte(0x14EE00 + x2) + memory.readbyte(0x7E17EE)
  775.             end
  776.  
  777.             val3 = val3 % 0x100
  778.  
  779.             if val3 > 0xFC  then
  780.                 val2 = val2 + 7
  781.             elseif val3 > 0xEC then
  782.                 val2 = val2 + 6
  783.             elseif val3 > 0xCC then
  784.                 val2 = val2 + 5
  785.             elseif val3 > 0xAC then
  786.                 val2 = val2 + 4
  787.             elseif val3 > 0x81 then
  788.                 val2 = val2 + 3
  789.             elseif val3 > 0x56 then
  790.                 val2 = val2 + 2
  791.             elseif val3 > 0x2B then
  792.                 val2 = val2 + 1
  793.             end
  794.  
  795.             val2 = memory.readbyte(0xEC796+val2)
  796.  
  797.             if memory.readbyte(0x7E1701) > 0 then
  798.                 val2 = val2 + 0x100
  799.             end
  800.  
  801.             group = val2
  802.  
  803.         end
  804.  
  805.     elseif area == 2 then
  806.     --Moon world map
  807.         for i = 0, num do
  808.  
  809.             if memory.readbyte(0x7E1707) > 0x20 then
  810.                 x = 2
  811.             end
  812.  
  813.             if memory.readbyte(0x7E1706) > 0x20 then
  814.                 x = x + 1
  815.             end
  816.  
  817.             if (memory.readbyte(0x7E0687) + i) %0x100 == 0xFF then
  818.                 rollover = true
  819.             end
  820.  
  821.             val2 = memory.readbyte(0x0EC592 + x)
  822.             val2 = bit.lshift(val2,3)
  823.             x2 = (memory.readbyte(0x7E0687) + i) % 0x100
  824.  
  825.             if rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) == 0xFF then
  826.                 val3 = memory.readbyte(0x7E17EE) +0x11
  827.             elseif rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) ~= 0xFF then
  828.                 val3 = memory.readbyte(0x14EE00 + x2) + ((memory.readbyte(0x7E17EE) + 0x11)  % 0x100)
  829.             elseif rollover == false then
  830.                 val3 = memory.readbyte(0x14EE00 + x2)+ memory.readbyte(0x7E17EE)
  831.             end
  832.  
  833.             val3 = val3 % 0x100
  834.  
  835.             if val3 > 0xFC  then
  836.                 val2 = val2 + 7
  837.             elseif val3 > 0xEC then
  838.                 val2 = val2 + 6
  839.             elseif val3 > 0xCC then
  840.                 val2 = val2 + 5
  841.             elseif val3 > 0xAC then
  842.                 val2 = val2 + 4
  843.             elseif val3 > 0x81 then
  844.                 val2 = val2 + 3
  845.             elseif val3 > 0x56 then
  846.                 val2 = val2 + 2
  847.             elseif val3 > 0x2B then
  848.                 val2 = val2 + 1
  849.             end
  850.  
  851.             val2 = memory.readbyte(0x0EC796+val2)
  852.  
  853.             if memory.readbyte(0x7E1701) > 0 then
  854.                 val2 = val2 + 0x100
  855.             end
  856.  
  857.             group = val2
  858.  
  859.         end
  860.  
  861.     elseif area > 2 then
  862.  
  863.         for i=0, num do
  864.         --Dungeon
  865.             val1 = memory.readbyte(0x7E1702)
  866.  
  867.             if memory.readbyte(0x7E1701) > 0 then
  868.                 val1 = val1 + 0x100
  869.             end
  870.  
  871.             val2 = bit.lshift(memory.readbyte(0x0EC596+val1),3)
  872.             val3 = memory.readbyte(0x14EE00 + ((memory.readbyte(0x7E0687)+i)%0x100))
  873.  
  874.             if memory.readbyte(0x7E0687) == 0xFF then
  875.                 rollover = true
  876.             end
  877.  
  878.             if rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) == 0xFF then
  879.                 val3 = (memory.readbyte(0x7E17EE)+0x11) % 0x100
  880.             elseif rollover == true and ((memory.readbyte(0x7E0687)+i)%0x100) ~= 0xFF then
  881.                     val3 = val3 + ((memory.readbyte(0x7E17EE) + 0x11) % 0x100)
  882.             elseif rollover == false then
  883.                 val3 = val3 + memory.readbyte(0x7E17EE)
  884.             end
  885.  
  886.             val3 = val3 % 0x100
  887.  
  888.             if val3 > 0xFC  then
  889.                 val2 = val2 + 7
  890.             elseif val3 > 0xEC then
  891.                 val2 = val2 + 6
  892.             elseif val3 > 0xCC then
  893.                 val2 = val2 + 5
  894.             elseif val3 > 0xAC then
  895.                 val2 = val2 + 4
  896.             elseif val3 > 0x81 then
  897.                 val2 = val2 + 3
  898.             elseif val3 > 0x56 then
  899.                 val2 = val2 + 2
  900.             elseif val3 > 0x2B then
  901.                 val2 = val2 + 1
  902.             end
  903.  
  904.             val4 = memory.readbyte(0x0EC816 + val2)
  905.  
  906.             if memory.readbyte(0x7E1701) > 0 then
  907.                 val4 = val4 + 0x100
  908.             end
  909.  
  910.             group = val4
  911.  
  912.         end
  913.  
  914.     end
  915.  
  916.     return group
  917.  
  918. end
  919.  
  920. local function predictgroup()
  921.     gui.text(3,13,"Encounter Groups:",0xABFF93FF)
  922.     for i = 0, groupmax-1 do
  923.         if i == 0 then
  924.             gui.text(3,23,"1: " .. retrievegroup(enemygroup(i)) .. " (0x" .. string.format("%X",enemygroup(i)) .. ")",0xABFF93FF)
  925.         else
  926.             gui.text(3,23+(10 * i),i+1 .. ": " .. retrievegroup(enemygroup(i)) .. " (0x" .. string.format("%X",enemygroup(i)) .. ")",0xFFFFFF7F)
  927.         end
  928.     end
  929.  end
  930.  
  931. local function enemygroupexists(num)
  932.  
  933.    local area = memory.readbyte(0x7E1700)
  934.    local group = 0
  935.    local x = 0
  936.    local x2 = 0
  937.    local val1 = 0
  938.    local val2 = 0
  939.    local val3 = 0
  940.    local rollover = false
  941.    local rollover2 = false
  942.    local i = 0
  943.    local j = 0
  944.    
  945.    if area == 0 then
  946.    -- Earth world map
  947.      
  948.          val1 = bit.band(bit.rshift(memory.readbyte(0x7E1707),2), 0xF8)
  949.          x = (bit.rshift(memory.readbyte(0x7E1706),5) + val1)  % 0x100
  950.          val2 = bit.lshift(memory.readbyte(0x0ec542+x),3)
  951.  
  952.          for j = val2, val2+7 do
  953.             if num == memory.readbyte(0xEC796+j) then
  954.                group = 1
  955.             end
  956.             if memory.readbyte(0x7E1701)  > 0 then
  957.                if num == (memory.readbyte(0xEC796+j)+0x100) then
  958.                   group = 1
  959.                end
  960.             end
  961.          end
  962.  
  963.    elseif area == 1 then
  964.       -- Underground world map
  965.  
  966.          val1 = bit.band(bit.rshift(memory.readbyte(0x7E1707),3),0xFC)
  967.          x = bit.rshift(memory.readbyte(0x7E1706),5)
  968.          x = (x + val1)  % 0x100
  969.          val2 = bit.lshift(memory.readbyte(0x0ec582+x),3)
  970.          
  971.          
  972.          for j = val2, val2+7 do
  973.             if num == memory.readbyte(0xEC796+j) then
  974.                group = 1
  975.             end
  976.             if memory.readbyte(0x7E1701)  > 0 then
  977.                if num == (memory.readbyte(0xEC796+j)+0x100) then
  978.                   group = 1
  979.                end
  980.             end
  981.          end
  982.  
  983.    elseif area == 2 then
  984.    --Moon world map
  985.  
  986.          if memory.readbyte(0x7E1707) > 0x20 then
  987.             x = 2
  988.          end
  989.          
  990.          if memory.readbyte(0x7E1706) > 0x20 then
  991.             x = x + 1
  992.          end
  993.          
  994.          val2 = memory.readbyte(0x0EC592 + x)
  995.          val2 = bit.lshift(val2,3)
  996.          
  997.          for j = val2, val2+7 do
  998.             if num == memory.readbyte(0xEC796+j) then
  999.                group = 1
  1000.             end
  1001.             if memory.readbyte(0x7E1701)  > 0 then
  1002.                if num == (memory.readbyte(0xEC796+j)+0x100) then
  1003.                   group = 1
  1004.                end
  1005.             end
  1006.          end
  1007.  
  1008.    elseif area > 2 then
  1009.  
  1010.       --Dungeon
  1011.          val1 = memory.readbyte(0x7E1702)
  1012.          
  1013.          if memory.readbyte(0x7E1701) > 0 then
  1014.             val1 = val1 + 0x100
  1015.          end
  1016.          
  1017.          val2 = bit.lshift(memory.readbyte(0x0EC596+val1),3)  
  1018.          
  1019.          for j = val2, val2+7 do
  1020.             if num == memory.readbyte(0xEC816+j) then
  1021.                group = 1
  1022.             end
  1023.             if memory.readbyte(0x7E1701)  > 0 then
  1024.                if num == (memory.readbyte(0xEC796+j)+0x100) then
  1025.                   group = 1
  1026.                end
  1027.             end
  1028.          end
  1029.  
  1030.    end
  1031.  
  1032.    return group
  1033.  
  1034. end
  1035.  
  1036. local function findenemy(e,x)
  1037.  
  1038.     local c = 0
  1039.     local i = 0
  1040.     local result  = ": "
  1041.  
  1042.     if enemygroupexists(e) == 0 then
  1043.         result = "(Enemy not present in area)"
  1044.         return result
  1045.     end
  1046.  
  1047.     while c ~= x  do
  1048.         if enemygroup(i) == e then
  1049.             c = c +1
  1050.  
  1051.             if c ~= x then
  1052.                 result = result .. i .. ","
  1053.             else
  1054.                 result = result .. i
  1055.             end
  1056.  
  1057.         end
  1058.  
  1059.       i = i + 1
  1060.  
  1061.       if i >= 500 and c == 0 then
  1062.          result = "(Enemy not present in next 500 battles)"
  1063.          c = x
  1064.       end
  1065.     end
  1066.  
  1067.     result = retrievegroup(e) .. " (" .. string.format("%X",e) .. ")" .. result
  1068.     return result
  1069.  
  1070. end
  1071.  
  1072. local function drawatb_e(x,y,atb,e)
  1073.     gui.box(x-3, y-4, x+17, y-1, 0x00000000, 0x000000FF)
  1074.  
  1075.     if atb == 0 then
  1076.         enemy_atbm[e] = 0
  1077.         gui.box(x-3, y-4, x+17, y-1, 0xFF0000C0, 0000000000)
  1078.  
  1079.     else
  1080.         if enemy_atbm[e] == 0 then
  1081.             enemy_atbm[e] = atb
  1082.         end
  1083.  
  1084.         gui.box(x-3, y-4, (x-3)+20-((20/enemy_atbm[e])*atb), y-1, 0xFF0000C0, 0000000000)
  1085.         --gui.text(x,y, enemy_atb[e] .. "/" .. enemy_atbm[e])
  1086.  
  1087.     end
  1088. end
  1089.  
  1090. local function drawatb_c(x,y,atb,c)
  1091.     gui.box(x-3, y-4, x+17, y-1, 0x00000000, 0x000000FF)
  1092.  
  1093.     if atb == 0 then
  1094.         char_atbm[c] = 0
  1095.         gui.box(x-3, y-4, x+17, y-1, 0xFFFF00C0, 0000000000)
  1096.  
  1097.     else
  1098.         if char_atbm[c] == 0 then
  1099.             char_atbm[c] = atb
  1100.         end
  1101.        
  1102.         gui.box(x-3, y-4, (x-3)+20-((20/char_atbm[c])*atb), y-1, 0xFFFF00C0, 0000000000)
  1103.         --gui.text(x,y, character_atb[c] .. "/" .. char_atbm[c])
  1104.  
  1105.     end
  1106. end
  1107.  
  1108. -- For who knows what reason, the data of the characters are not in order, so this fix it
  1109. local function fix(character)
  1110.     fix_order = {3, 1, 5, 2, 4}
  1111.     return fix_order[character]
  1112. end
  1113.  
  1114. while true do
  1115.  
  1116.     character_atb = {}
  1117.     character_x = {}
  1118.     character_y = {}
  1119.    
  1120.     for c=1, 5 do
  1121.         character_atb[fix(c)] = memory.readbyte(0x7E2A07 + 0x15*(c-1))
  1122.         character_x[fix(c)]   = memory.readbyte(0x7EEFC5 + 0x10*(c-1))
  1123.         character_y[fix(c)]   = memory.readbyte(0x7EEFC6 + 0x10*(c-1))
  1124.     end
  1125.  
  1126.  
  1127.     enemy_atb = {}
  1128.     enemy_cur_hp = {}
  1129.     enemy_max_hp = {}
  1130.     enemy_xy = {}
  1131.  
  1132.     for e=1, 8 do
  1133.         enemy_atb[e]    = memory.readbyte(0x7E2A70 + 0x15*(e-1))
  1134.         enemy_cur_hp[e] = memory.readword(0x7E2287 + 0x80*(e-1))
  1135.         enemy_max_hp[e] = memory.readword(0x7E2289 + 0x80*(e-1))
  1136.         enemy_xy[e]     = memory.readbyte(0x7E29A5 + 0x01*(e-1))
  1137.     end
  1138.  
  1139.     battle = memory.readbyte(0x7E0201)
  1140.     attack = memory.readbyte(0x7E3581) -- normal 00, back 08
  1141.  
  1142.     if battle ~= 0x85 then
  1143.  
  1144.         for c=1, 5 do
  1145.             drawatb_c(character_x[c], character_y[c], character_atb[c], c)
  1146.         end
  1147.  
  1148.         for e=1, 8 do
  1149.             if enemy_cur_hp[e] > 0 then
  1150.                 gui.text( ecords_x(enemy_xy[e]), ecords_y(enemy_xy[e]), e .. " " .. enemy_cur_hp[e] .. "/" .. enemy_max_hp[e] )
  1151.                 drawatb_e(ecords_x(enemy_xy[e]), ecords_y(enemy_xy[e]), enemy_atb[e], e)
  1152.             end
  1153.         end
  1154.  
  1155.     else
  1156.    
  1157.         for i=1,5 do
  1158.             char_atbm[i] = 0
  1159.         end
  1160.  
  1161.         for i=1,8 do
  1162.             enemy_atbm[i] = 0
  1163.         end
  1164.  
  1165.         gui.text(  3, 3, "Steps until random battle: ")
  1166.         gui.text(111, 3, rndbattle(), 0xFFFF00FF)
  1167.         gui.text(125, 3, "("..string.format("%X",memory.readbyte(0x7E0686)) .. ")")
  1168.  
  1169.         if rndbattle() ~= 0 then
  1170.             predictgroup()
  1171.         end
  1172.  
  1173.         -- Uncomment to find a specific enemy group, the way its implemented slows the emulator down tremendously if its a rare spawn or a high amount is desired
  1174.         -- format is findenemy(ENEMY VALUE,NEXT NUMBER OF ENCOUNTERS)
  1175.         -- I.E. findenemy(0x196,5) will look for the next 5 pink puff encounters
  1176.         --gui.text(5,100,findenemy(0x196,2))
  1177.     end
  1178.  
  1179.     snes9x.frameadvance()
  1180.  
  1181. end
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
Add Comment
Please, Sign In to add comment