Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Crash Huge Adventure lua v2.2.1-beta Virtual Boy Advance
- -- This is Community Work Please Help
- -- Join in add updates of your own and add your name
- -- Values found by: Spikestuff, Got4n, Dica
- -- Script Edited by: Spikestuff, Ilari, Dica, TASEditor, RGamma, Warepire, ThunderAxe
- function TableMerge(t1,t2)
- local t3 = {}
- for k,v in pairs(t1) do
- t3[k] = v
- end
- for k,v in pairs(t2) do
- t3[k] = v
- end
- return t3
- end
- auto = 0
- x_pos = 0
- y_pos = 0
- x_pos_bonus = 0
- y_pos_bonus = 0
- spd_average_start = 0
- spd_average_frames = 0
- x_speed_average = 0
- y_speed_average = 0
- real_speed_average = 0
- while true do
- area = memory.readbyte(0x3001644)
- areab = memory.readbyte(0x200000E)
- mask = memory.readbyte(0x200009C)
- lvl = memory.readbyte(0x200000E)
- ex = memory.readbyte(0x2003AB8)
- x_pos_prev = x_pos
- y_pos_prev = y_pos
- x_pos = memory.readlong(0x2010A14)
- y_pos = memory.readlong(0x2010A18)
- x_speed = x_pos - x_pos_prev
- y_speed = y_pos - y_pos_prev
- real_speed = math.sqrt(x_speed*x_speed + y_speed*y_speed) -- do not trust during jumps!
- old_y_speed = memory.readwordsigned(0x02010A78)
- old_x_speed = memory.readwordsigned(0x02010A74)
- x_pos_prev_bonus = x_pos_bonus
- y_pos_prev_bonus = y_pos_bonus
- x_pos_bonus = memory.readlong(0x2010E2C)
- y_pos_bonus = memory.readlong(0x2010E30)
- x_speed_bonus = x_pos_bonus - x_pos_prev_bonus
- y_speed_bonus = y_pos_bonus - y_pos_prev_bonus
- real_speed_bonus = math.sqrt(x_speed_bonus*x_speed_bonus + y_speed_bonus*y_speed_bonus) -- do not trust during jumps!
- old_x_speed_bonus = memory.readwordsigned(0x2010E8C)
- old_y_speed_bonus = memory.readwordsigned(0x2010E90)
- spd_average_frames = spd_average_frames + 1
- x_speed_average = ( (x_speed_average * (spd_average_frames -1) ) +x_speed) / spd_average_frames
- y_speed_average = ( (y_speed_average * (spd_average_frames -1) ) +y_speed) / spd_average_frames
- real_speed_average = ( (real_speed_average * (spd_average_frames -1) ) +real_speed) / spd_average_frames
- if ex > 0 and ex <= 3 or area == 1 or area == 5 or area == 8 or area == 9 or area == 11 or area == 13 or area == 14 or area == 15 or area == 17 then
- auto = 0
- else
- if input.get()["i"] or input.get()["I"] then
- auto = 1
- elseif input.get()["o"] or input.get()["O"] then
- auto = 0
- elseif input.get()["m"] or input.get()["M"] then -- Reset Speed Average Calc
- spd_average_start = emu.framecount()
- spd_average_frames = 0
- x_speed_average = 0
- y_speed_average = 0
- real_speed_average = 0
- end
- end
- if auto == 1 then -- Automatic Slide Spin Script. Still needs to be worked on.
- direction = memory.readbytesigned(0x030007E0)
- dir = nil
- action = nil
- if area ~= 6 then -- Normal
- sli_spi_timer = memory.readwordsigned(0x2010DDC)
- spin_or_slide = memory.readbyte(0x2010A1E)
- is_sliding = spin_or_slide == 20
- gui.text(2,24,"Automatic Mode","yellow")
- if direction == 16 then -- right
- dir = {right = true}
- elseif direction == 32 then -- left
- dir = {left = true}
- end
- if math.abs(old_x_speed) >= 256 and sli_spi_timer == 0 and old_y_speed == 0 and not is_sliding then
- action = {R = true}
- elseif sli_spi_timer == 10 and is_sliding then
- action = {B = true}
- end
- if action ~= nil and dir ~= nil then
- joypad.set(1, TableMerge(action, dir))
- end
- else -- Bonus Round
- sli_spi_timer = memory.readwordsigned(0x020111F4)
- spin_or_slide = memory.readbyte(0x2010E36)
- is_sliding = spin_or_slide == 20
- gui.text(2,24,"Automatic Mode","orange")
- if direction == 16 then -- right
- dir = {right = true}
- elseif direction == 32 then -- left
- dir = {left = true}
- end
- if math.abs(old_x_speed_bonus) >= 256 and sli_spi_timer == 0 and old_y_speed_bonus == 0 and not is_sliding then
- action = {R = true}
- elseif sli_spi_timer == 10 and is_sliding then
- action = {B = true}
- end
- if action ~= nil and dir ~= nil then
- joypad.set(1, TableMerge(action, dir))
- end
- end
- end
- if area == 11 or area == 13 or area == 14 or area == 15 or area == 16 or area == 17 then else
- if area == 5 or area == 9 then
- gui.text(2,32,memory.readwordsigned(0x3003F34),"orange")
- else
- if area == 2 and areab == 3 or area == 18 then
- gui.text(2,120,memory.readwordsigned(0x3001404),"yellow")
- else
- gui.text(2,120,memory.readwordsigned(0x300082C),"yellow")
- end end end
- if area == 9 then -- N.Gin Fight
- bhealth = memory.readbyte(0x3004130)
- thealth = memory.readbyte(0x30040B0)
- lhealth = memory.readshort(0x30041B0)
- rhealth = memory.readshort(0x3004230)
- if bhealth ~= 255 and bhealth ~= -1 then
- gui.text(18,48,"Bomb: " .. (bhealth+1)/2) end
- if lhealth ~= 0 or rhealth ~= 0 then
- gui.text(6,56,"Rockets: " .. (lhealth/2) .. "/" .. (rhealth/2)) end
- if thealth ~= 255 and thealth ~= -1 then
- gui.text(10,64,"Turret: " .. (thealth+1)/2) end
- end
- if area == 8 then -- Dingodile Fight
- dshi = memory.readbyte(0x2003EFC)
- gui.text(2,24,"Shield: " .. ((dshi == 1) and "ON" or "OFF - " .. memory.readbyte(0x20118CC))); else
- end
- if area == 7 then -- Tiny Fight
- tatt = memory.readbyte(0x2011FDC)
- gui.text(2,24,"Can Hit: " .. ((tatt == 8) and "YES - " .. memory.readbyte(0x02011FF4) or "NO")); else
- end
- if area == 16 then
- slide_count = 0
- aku = memory.readbyte(0x200009C)
- gui.text(2,9,"Mask Level: " .. aku,"yellow") else
- end
- if area == 2 and areab == 3 then else
- if area == 11 or area == 13 or area == 14 or area == 15 or area == 16 or area == 17 then else
- if area == 6 then --Bonus
- gui.text(2,32,"Pixel X: " .. x_pos_bonus)
- gui.text(2,40,"Pixel Y: " .. y_pos_bonus)
- gui.text(2,48,"Speed X: " .. x_speed_bonus)
- gui.text(2,56,"Speed Y: " .. y_speed_bonus)
- gui.text(2,64,"RealSpd: " .. real_speed_bonus)
- gui.text(2,128,"Slide Time: 22/" .. memory.readwordsigned(0x20111F4),"orange")
- gui.text(2,136," Spin Time: 23/" .. memory.readwordsigned(0x20111F4),"orange")
- else
- if area == 5 or area == 9 then -- Flying Cooldown
- cdwn = memory.readbyte(0x30014E0)-1
- if cdwn ~= -1 then
- gui.text(2,40,"Cooldown: " .. cdwn)
- end
- else
- if area == 10 then -- Neo Cortex and Mega Mix
- gui.box(0,142,240,160,"black")
- gui.text(116,143,"Pixel X: " .. x_pos)
- gui.text(116,151,"Pixel Y: " .. y_pos)
- gui.text(188,143,"Speed X: " .. x_speed)
- gui.text(188,151,"Speed Y: " .. y_speed)
- gui.text(128,134,"Slide: 22| " .. memory.readwordsigned(0x2010DDC).. " |23 :Spin","yellow")
- gui.text(2,134,"Real Speed: " .. real_speed)
- else -- Normal
- gui.text(2,32,"Pixel X: " .. x_pos)
- gui.text(2,40,"Pixel Y: " .. y_pos)
- gui.text(2,48,"Speed X: " .. x_speed)
- gui.text(2,56,"Speed Y: " .. y_speed)
- gui.text(2,64,"RealSpd: " .. real_speed)
- gui.text(2,72,"Avg.F.S: " .. spd_average_start) -- Average Frame Start
- gui.text(2,80,"S.X Avg: " .. x_speed_average) -- Speed X Average
- gui.text(2,88,"S.Y Avg: " .. y_speed_average) -- Speed Y Average
- gui.text(2,96,"R.S.Avg: " .. real_speed_average) -- Real Speed Average
- if area == 1 or area == 8 then
- gui.text(2,136," Spin Dur.: 24/" .. memory.readwordsigned(0x2010DDC),"green")
- else
- gui.text(2,128,"Slide Time: 22/" .. memory.readwordsigned(0x2010DDC),"yellow")
- gui.text(2,136," Spin Time: 23/" .. memory.readwordsigned(0x2010DDC),"yellow") end
- end end end end end
- if not movie.active() then
- gui.drawbox(0,0,78,8, "red")
- gui.text(2,1, "MOVIE NOT RECORDING")
- else
- gui.text(2,1,"RR: " .. movie.rerecordcount())
- end
- vba.frameadvance() end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement