Advertisement
Guest User

GBA Crash 1 speed hud.lua

a guest
Mar 13th, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.00 KB | None | 0 0
  1. --speed hud values v1.1.2 by ThunderAxe31 for GBA Crash Bandicoot - The Huge Adventure
  2.  
  3. x_max = 1224
  4. x_middle = 496
  5. y_max = 1536
  6. y_middle = 0
  7.  
  8. player_x_addr = 0x010A14
  9. player_y_addr = 0x010A18
  10. framecount = 0
  11. player_x = 0
  12. player_x_old = 0
  13. speed_x = 0
  14. player_y = 0
  15. player_y_old = 0
  16. speed_y = 0
  17. x = {}
  18. y = {}
  19.  
  20. function round(x)
  21.   if x%2 ~= 0.5 then
  22.     return math.floor(x+0.5)
  23.   end
  24.   return x-0.5
  25. end
  26.  
  27. function decide_color(speed, middle, maxi)
  28.     if speed == nil then
  29.         return
  30.     end
  31.    
  32.     speed = math.abs(speed)
  33.     maxi = math.abs(maxi)
  34.    
  35.     if speed > maxi then
  36.         color = 0x000000FF
  37.     elseif speed < middle then --if 0: red; if middle: white
  38.         local value = math.floor(0xFF*(speed/middle))
  39.         color = 0xFF0000 + value*0x101
  40.     else --if middle: white; if maxi: green
  41.         local value = math.floor(0xFF*(1-(speed-middle)/(maxi-middle)))
  42.         color = 0x00FF00 + value*0x10001
  43.     end
  44.     return color+0xFF000000
  45. end
  46.  
  47. if memory.usememorydomain("EWRAM") then
  48.    
  49.     player_x = memory.read_u32_le(player_x_addr)
  50.     player_y = memory.read_u32_le(player_y_addr)
  51.     console.log("Starting script at frame: " .. emu.framecount() .. " with X: " .. player_x .. ", Y: " .. player_y)
  52.     emu.frameadvance()
  53.    
  54.     while true do
  55.         if framecount > emu.framecount() then
  56.             x = {}
  57.             y = {}
  58.         end
  59.        
  60.         player_x_old = player_x
  61.         player_x = memory.read_u32_le(player_x_addr)
  62.         player_y_old = player_y
  63.         player_y = memory.read_u32_le(player_y_addr)
  64.        
  65.         speed_x = player_x -player_x_old
  66.         speed_y = player_y -player_y_old
  67.        
  68.         for i=25, 1, -1 do
  69.             x[i]=x[i-1]
  70.             y[i]=y[i-1]
  71.             gui.pixelText(0, 0+i*6, x[i], decide_color(x[i], x_middle, x_max))
  72.             gui.pixelText(219, 0+i*6, y[i], decide_color(y[i], y_middle, y_max))
  73.         end
  74.        
  75.         x[0] = speed_x
  76.         y[0] = speed_y
  77.        
  78.         gui.pixelText(0, 0, x[0], decide_color(x[0], x_middle, x_max))
  79.         gui.pixelText(219, 0, y[0], decide_color(y[0], y_middle, y_max))
  80.        
  81.         framecount = emu.framecount()
  82.        
  83.         emu.frameadvance()
  84.     end
  85. else
  86.     console.log("Error: failed to set EWRAM memory domain")
  87. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement