Guest User

Untitled

a guest
Jul 13th, 2012
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.66 KB | None | 0 0
  1. --Mario
  2. local mariox = 0x94
  3. local marioy = 0x96
  4. local mtype = 0x19
  5. local marioside = 0x76
  6. --Camera
  7. local camx = 0x1A
  8. local camy = 0x1C
  9.  
  10. --Object Addresses
  11. local exbase = 0xE4
  12. local eybase = 0xD8
  13. local pagexbase = 0x14E0
  14. local pageybase = 0x14D4
  15. local otype = 0x9E
  16. local boxpointer = 0x1662
  17. local xoffbase = 0x03b56c
  18. local yoffbase = 0x03b5e4
  19. local xradbase = 0x03b5a8
  20. local yradbase = 0x03b620
  21.  
  22. local oactive = 0x14C8
  23.  
  24. --Invulnerable objects (ghost rings etc...)
  25. local inv_ybase = 0x1E02
  26. local inv_xbase = 0x1E16
  27. local inv_ypage = 0x1E2A
  28. local inv_xpage = 0x1E3E
  29. local itype = 0x1892
  30.  
  31. --Ghost snake
  32.  
  33. local ghosn_type = 0x17F0
  34. local ghosn_xbase = 0x1808
  35. local ghosn_xpage = 0x18EA
  36. local ghosn_ybase = 0x17FC
  37. local ghosn_ypage = 0x1814
  38.  
  39. --Ghost ship ghosts
  40.  
  41. local ghosh_type = 0x1892
  42. local ghosh_xbase = 0x1E16
  43. local ghosh_xpage = 0x1E3E
  44. local ghosh_ybase = 0x1E02
  45. local ghosh_ypage = 0x1E2A
  46.  
  47.  
  48.  
  49. --Projectiles
  50. local pxbase = 0x171F
  51. local pybase = 0x1715
  52. local pxpage = 0x1733
  53. local pypage = 0x1729
  54. local projtype = 0x170B
  55.  
  56. local function mario()
  57.     local x
  58.     local y
  59.     local yoffpoint = 0x03b65c
  60.     local yradpoint = 0x03b660
  61.     local i = 0
  62.    
  63.     x = memory.readword(mariox) - memory.readword(camx)
  64.     y = memory.readword(marioy) - memory.readword(camy)
  65.  
  66.    
  67.     if memory.readbyte(mtype) == 0 or memory.readbyte(0x73) ~= 0 then
  68.         i = 1
  69.     end
  70.     if memory.readbyte(0x01187a) ~= 0 then
  71.         i = i + 2
  72.     end
  73.    
  74.     local xoff = 0x02
  75.     local xrad = 0x0C
  76.     local yoff = memory.readbyte(yoffpoint+i)
  77.     local yrad = memory.readbyte(yradpoint+i)
  78.     local star = 0x011490
  79.     local invuln = 0x11497
  80.     gui.box(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,"#0000FF30","#0000FFFF")
  81.  
  82. end
  83.  
  84. local function projectiles()
  85.     local x
  86.     local y
  87.     local xoff
  88.     local yoff
  89.     local xrad
  90.     local yrad
  91.     local oend = 10
  92.     local pid
  93.    
  94.     for i = 0,oend,1 do
  95.        
  96.         pid = memory.readbyte(projtype + i)
  97.        
  98.         if pid ~= 0 and pid ~= 0x12 then
  99.            
  100.             x = memory.readbyte(pxbase+i) + (memory.readbyte(pxpage+i) * 256) - memory.readword(camx)
  101.             y = memory.readbyte(pybase+i) + (memory.readbyte(pypage+i) * 256) - memory.readword(camy)
  102.             xoff = memory.readbytesigned(0x02a4e7+pid)
  103.             yoff = memory.readbytesigned(0x02a4f3+pid)
  104.             xrad = memory.readbyte(0x02a4ff+pid)
  105.             yrad = memory.readbyte(0x02a50b+pid)
  106.            
  107.             gui.box(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,"#00000050","#000000FF")
  108.         end
  109.        
  110.     end
  111.    
  112. end
  113.  
  114.  
  115. local function objects()
  116.     local oend = 20
  117.     local x = 0
  118.     local y = 0
  119.     local boxid
  120.     local xoff
  121.     local yoff
  122.     local xrad
  123.     local yrad
  124.     local fill
  125.     local outl
  126.     local objtype
  127.     for i = 0,oend,1 do
  128.    
  129.        
  130.        
  131.         if memory.readbyte(oactive + i) == 8 or memory.readbyte(oactive + i) == 9 or memory.readbyte(oactive +i) == 0xA then
  132.        
  133.             objtype = memory.readbyte(otype + i)
  134.             boxid = bit.band(memory.readbyte(boxpointer+i),0x3F)
  135.             x = memory.readbyte(exbase + i) + (memory.readbyte(pagexbase + i) * 256) - memory.readword(camx)
  136.             y = memory.readbyte(eybase + i) + (memory.readbyte(pageybase + i) * 256) - memory.readword(camy)
  137.             xoff = memory.readbytesigned(xoffbase + boxid)
  138.             yoff = memory.readbytesigned(yoffbase + boxid)
  139.             xrad = memory.readbyte(xradbase + boxid)
  140.             yrad = memory.readbyte(yradbase + boxid)
  141.            
  142.             --Yoshi
  143.             if objtype == 0x35 then
  144.                 outl = "#00FF37FF"
  145.                 fill = "#00FF3730"
  146.             -- Power pickups
  147.             elseif objtype >= 0x74 and objtype <= 0x81 then
  148.                 outl = "#00F2FFFF"
  149.                 fill = "#00F2FF30"
  150.             else
  151.                 outl = "#FF0000FF"
  152.                 fill = "#FF000030"             
  153.             end
  154.            
  155.             if objtype == 0x29 then
  156.                 xoff = -1 * 0x08
  157.                 xrad = 0x10
  158.                 yoff = 0x08
  159.                 if memory.readbyte(0x1602 + i) == 0x69 then
  160.                     yoff = yoff + 0x0A
  161.                 end
  162.             end
  163.  
  164.             --gui.text(x,y-5,string.format("%X",exbase + i))    -- Debug
  165.             --gui.text(x,y-5,string.format("%X",objtype))   -- Debug
  166.             --gui.text(x,y-5,xoff .. "/" .. xrad .. " " .. yoff .. "/" .. yrad) -- Debug
  167.             --gui.text(x,y-5,string.format("%X",memory.readbyte(oactive + i))) -- Debug
  168.             if objtype ~= 0x8C then
  169.                 gui.box(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,fill,outl)
  170.             end
  171.            
  172.            
  173.         end
  174.        
  175.     end
  176.    
  177. end
  178.  
  179. local function invulns()
  180.  
  181.     local oend = 20
  182.     local page = 0
  183.     local boxid
  184.     local x
  185.     local y
  186.     local xoff
  187.     local yoff
  188.     local xrad
  189.     local yrad
  190.    
  191.     --Ghost rings/Ghost house
  192.     for i = 0,oend,1 do
  193.             if memory.readbyte(itype + i) == 0x04 or memory.readbyte(itype + i) == 0x03 then
  194.                 x = memory.readbyte(inv_xbase + i) + (memory.readbyte(inv_xpage + i) * 256) - memory.readword(camx)
  195.                 y = memory.readbyte(inv_ybase + i) + (memory.readbyte(inv_ypage + i) * 256) - memory.readword(camy)
  196.                 xoff = 2
  197.                 xrad = 12
  198.                 yoff = 3
  199.                 yrad = 10
  200.                 gui.box(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,"#FFFF0030","#FFFF00FF")
  201.             end            
  202.     end
  203.    
  204.     --Sunken ship ghosts
  205.    
  206.     for i = 0,oend,1 do
  207.         if memory.readbyte(ghosh_type +i) ~= 0 then
  208.             x = memory.readbyte(ghosh_xbase + i) + (memory.readbyte(ghosh_xpage +i) * 256) - memory.readword(camx)
  209.             y = memory.readbyte(ghosh_ybase + i) + (memory.readbyte(ghosh_ypage +i) * 256) - memory.readword(camy)
  210.             xoff = 2
  211.             xrad = 12
  212.             yoff = 3
  213.             yrad = 10
  214.             gui.box(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,"#FFFF0030","#FFFF00FF")
  215.         end
  216.     end
  217.    
  218.     --Ghost Snake
  219.     oend = 12
  220.     for i = 0,oend,1 do
  221.         if memory.readbyte(ghosn_type+i) ~= 0 then
  222.             x = memory.readbyte(ghosn_xbase + i) + (memory.readbyte(ghosn_xpage +i) * 256) - memory.readword(camx)
  223.             y = memory.readbyte(ghosn_ybase + i) + (memory.readbyte(ghosn_ypage +i) * 256) - memory.readword(camy)
  224.             xoff = 2
  225.             xrad = 12
  226.             yoff = 3
  227.             yrad = 10
  228.             gui.box(x+xoff,y+yoff,x+xoff+xrad,y+yoff+yrad,"#FFFF0030","#FFFF00FF")
  229.         end
  230.     end
  231.    
  232.    
  233.    
  234. end
  235.  
  236. gui.register(function()
  237.     mario()
  238.     objects()
  239.     invulns()
  240.     projectiles()
  241. end)
Advertisement
Add Comment
Please, Sign In to add comment