Guest User

kung fu master / spartan x gb luascript bizhawk 1.11.7

a guest
Oct 10th, 2016
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.42 KB | None | 0 0
  1. -- Luascript for Bizhawk 1.11.7
  2. -- by mugg1991 9th Oct 2016
  3. -- Spartan X (J).gb
  4.  
  5. ObjectNameTable = {
  6. [-1]="   Unknown",
  7. [0]="      Thug",
  8. [1]="     Asian",
  9. [2]=" ChainThug",
  10. [3]="  Lv1 Boss",
  11. [4]="  SmokeTop",
  12. [5]="SmokeBottm",
  13. [6]="SmokeRight",
  14. [7]=" SmokeLeft",
  15. [8]=" Spike Bag",
  16. [9]="    Barrel",
  17. [10]="  Lv2 Boss",
  18. [11]=" Lava ball",
  19. [12]="  Lv3 Boss",
  20. [13]="  Lv4 Boss",
  21. [14]="  Lv5 Boss",
  22. [15]="  Shuriken",
  23. [67]="  Lv1 Boss",
  24. [128]="      Bomb",
  25. [129]="      Bomb",
  26. [130]="     Drink",
  27. [131]="     Drink",
  28. [132]="     Heart",
  29. [133]="     Heart",
  30. [134]="     Heart",
  31. [135]="     Heart",
  32. [136]="      1-Up",
  33. [137]="      1-Up",
  34. [138]="      1-Up",
  35. [139]="      1-Up",
  36. [140]="      1-Up",
  37. [141]="      1-Up",
  38. [142]="      1-Up",
  39. [143]="      1-Up"
  40. }
  41.  
  42. ItemDropTable = {
  43. [0]=3,
  44. [1]=20,
  45. [2]=50,
  46. [3]=90,
  47. [4]=4,
  48. [5]=8,
  49. [6]=16
  50. }
  51.  
  52. memory.usememorydomain("System Bus")
  53.  
  54. function text(x, y, text, col1, col2)
  55.     if col2==nil then col2=0x00000000 end
  56.     gui.pixelText(x, y, text,col1,col2)
  57. end
  58.  
  59. function box(x,y,x2,y2,col1,col2)
  60.     gui.drawBox(x,y,x2,y2,col1,col2)
  61. end
  62.  
  63. function line(x,y,x2,y2,col)
  64.     gui.drawLine(x,y,x2,y2,col)
  65. end
  66.  
  67. function pixel(x,y,col)
  68.     gui.drawPixel(x,y,col)
  69. end
  70.  
  71. function img(x,y,path)
  72.     gui.drawImage(path,x,y)
  73. end
  74.  
  75. local drawFramecountAndInput = function(x,y)
  76.  
  77.     if movie.mode()=="PLAY" then
  78.         text(x-6, y,emu.framecount().."/"..movie.length(),0xFFFFFFFF)
  79.     else
  80.         text(x-6, y,emu.framecount(),0xFFFFFFFF)
  81.     end
  82.        
  83.     text(x-6, y+8,emu.lagcount(),0xFFF08080)
  84.  
  85.     if emu.islagged() then
  86.         text(x+8, y+8,"*",0xFFF08080)
  87.     end
  88.    
  89.     local inputtable = {}
  90.    
  91.     if movie.mode()=="INACTIVE" then
  92.         inputtable = joypad.getimmediate()
  93.     elseif movie.mode()=="PLAY" or movie.mode()=="RECORD" then
  94.         inputtable = movie.getinput(emu.framecount()-1)
  95.     end
  96.    
  97.     local buttons = {["Up"]="^", ["Down"]="v", ["Left"]="<", ["Right"]=">", ["Select"]="s", ["Start"]="S", ["A"]="A", ["B"]="B", ["L"]="L", ["R"]="R", ["Power"]=""}
  98.     local s = ""
  99.    
  100.     for k,v in pairs(inputtable) do
  101.         if v==true then
  102.             s=s..buttons[k]
  103.         end
  104.     end
  105.     text(x+20,y+8,s,0xFFffffff)
  106.  
  107. end
  108.  
  109. event.onexit(function()
  110.     client.SetGameExtraPadding(0,0,0,0)
  111.     client.SetClientExtraPadding(0,0,0,0)
  112. end)
  113.  
  114. client.SetGameExtraPadding(142,0,0,0)
  115.  
  116. while true do
  117.  
  118.     --all this about string formatting is to a) cut long float number short, b) to keep "," instead of "."
  119.     playerxsubstring=   tonumber(string.sub(memory.read_u8(0xc703)/255,3,5))
  120.     playerysubstring=   tonumber(string.sub(memory.read_u8(0xc705)/255,3,5))
  121.     if playerxsubstring==nil then playerxsubstring="000" end
  122.     if playerysubstring==nil then playerysubstring="000" end
  123.     playerx=    memory.read_u8(0xc704) .. "," .. string.format("%03d",playerxsubstring)
  124.     playery=    memory.read_u8(0xc706) .. "," .. string.format("%03d",playerysubstring)
  125.     playerhp=   memory.read_u8(0xc717)
  126.     level=      memory.read_u8(0xffbb)+1
  127.     leveltime=  tonumber(memory.read_u8(0xc73f) .. memory.read_u8(0xc73e) .. memory.read_u8(0xc73d) .. memory.read_u8(0xc73c))
  128.  
  129.     -- background gradient
  130.     for s=1,18,1 do
  131.         col=0x80606060 - s*0x07000000
  132.         box(-5+4*s,-1,4*s,160,0x00000000,col)
  133.     end
  134.    
  135.     -- framecount, lag, input
  136.     drawFramecountAndInput(87,2)
  137.  
  138.     -- stuff
  139.     text(8,2,"Lv      t",0xFFD0A020)
  140.     text(20,2,level,0xFFA0A0A0)
  141.     text(50,2,leveltime,0xFFA0A0A0)
  142.    
  143.     for z=0,6,2 do
  144.         text(8,10+z*4,string.format("%03d",memory.read_u8(0xc200+z)) .. " ".. string.format("%03d",memory.read_u8(0xc201+z)),0xFFA0A0A0)
  145.     end
  146.    
  147.     -- item drop display
  148.     for g=0,6,1 do
  149.         text(46+g*14,32,string.format("%02d",ItemDropTable[g]-memory.read_u8(0xd00a+g)),0xFFA0A0A0)
  150.     end
  151.    
  152.     text(46,23,"B",0xFFD0A020)
  153.     text(60,23,"hp",0xFFD0A020)
  154.     text(74,23,"H",0xFFD0A020)
  155.     text(87,23,"1up",0xFFD0A020)
  156.     text(103,23,"hp",0xFFD0A020)
  157.     text(117,23,"B",0xFFD0A020)
  158.     text(131,23,"H",0xFFD0A020)
  159.  
  160.     if level==1 or level==2 then
  161.         box(44,22,55,40,0x00000000,0xB0000000) 
  162.         box(100,22,140,40,0x00000000,0xB0000000)
  163.     elseif level==3 then
  164.         box(100,22,140,40,0x00000000,0xB0000000)       
  165.     elseif level==4 or level==5 or level==6 then
  166.         box(44,22,100,40,0x00000000,0xB0000000)
  167.     else
  168.         box(44,22,140,40,0x00000000,0xB0000000)
  169.     end
  170.    
  171.     box(41,21,140,41,0xFF503030)
  172.     box(40,20,141,42,0x40503030)
  173.    
  174.     -- enemy display
  175.     text(50,46,"X        Y        HP",0xFF606060)  
  176.     text(2,54,"    Player",0xFF606060)             
  177.     text(50,54,playerx,0xFFA0A0A0)
  178.     text(86,54,playery,0xFFA0A0A0) 
  179.     text(122,54,playerhp,0xFFA0A0A0)   
  180.    
  181.     objectCounter=0
  182.     if leveltime~=0 then
  183.         for n=0,7,1 do
  184.             enemystate= memory.read_u8(0xc0e0-n*32)
  185.             if enemystate ~= 0xFF then 
  186.            
  187.                 objectCounter=objectCounter+1
  188.                
  189.                 --all this about string formatting is to a) cut long float number short, b) to keep "," instead of "."
  190.                 enemyxsubstring=    tonumber(string.sub(memory.read_u8(0xc0ea-n*32)/255,3,5))
  191.                 enemyysubstring=    tonumber(string.sub(memory.read_u8(0xc0eb-n*32)/255,3,5))
  192.                 if enemyxsubstring==nil then enemyxsubstring="000" end
  193.                 if enemyysubstring==nil then enemyysubstring="000" end
  194.                 enemyx=     memory.read_u8(0xc0e2-n*32)
  195.                 enemyy=     memory.read_u8(0xc0e3-n*32)
  196.                 enemyxstring=   enemyx .. "," .. string.format("%03d",enemyxsubstring)
  197.                 enemyystring=   enemyy .. "," .. string.format("%03d",enemyysubstring)
  198.                 enemytype=  memory.read_u8(0xc0e1-n*32)
  199.                 enemyhp=    memory.read_u8(0xc0e9-n*32)
  200.                 --enemyxspeed=  memory.read_u8(0xc0ed-n*32)
  201.                 --enemyyspeed=  memory.read_u8(0xc0ef-n*32)
  202.                
  203.                 if ObjectNameTable[enemytype]==nil then
  204.                     enemytype=-1
  205.                 end
  206.  
  207.                 text(2,54+objectCounter*8,ObjectNameTable[enemytype],0xFF606060)   
  208.                 text(50,54+objectCounter*8,enemyxstring,0xFFA0A0A0)
  209.                 text(86,54+objectCounter*8,enemyystring,0xFFA0A0A0)
  210.                 text(122,54+objectCounter*8,enemyhp,0xFFA0A0A0)    
  211.  
  212.                 --draw hitboxes
  213.                 --[[
  214.                 right=  memory.read_u8(0xc0e4-n*32)
  215.                 down=   memory.read_u8(0xc0e5-n*32)
  216.                 left=   memory.read_u8(0xc0e6-n*32)
  217.                 up= memory.read_u8(0xc0e7-n*32)
  218.                 enemyy=enemyy-16
  219.                 enemyx=enemyx-24
  220.                 line(142+enemyx,enemyy,142+enemyx+right,enemyy,0xFFFF0000)
  221.                 line(142+enemyx,enemyy,142+enemyx-left,enemyy,0xFFFF0000)
  222.                 line(142+enemyx,enemyy,142+enemyx,enemyy-up,0xFFFF0000)
  223.                 line(142+enemyx,enemyy,142+enemyx,enemyy+down,0xFFFF0000)
  224.                 --]]
  225.             end
  226.         end
  227.     end
  228.    
  229.     text(8,66+objectCounter*8,"Actors: "..objectCounter,0xFFD0A020)
  230.    
  231.     box(4,43,136,76+objectCounter*8,0xFF005050)
  232.     for p=0,4,1 do
  233.         line(0+p,43,0+p,76+objectCounter*8,0xFF005050)
  234.         line(137+p,43,137+p,76+objectCounter*8,0xFF005050)
  235.     end
  236.    
  237.     emu.frameadvance()
  238.  
  239. end
Advertisement
Add Comment
Please, Sign In to add comment