Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- script for Aero the Acro-Bat 2
- -- by r57shell
- local scroll_x = 0
- local scroll_y = 0
- function draw_trig(base)
- if base ~= 0xFFFFFF then
- if memory.readwordunsigned(base) <= 0x8000 then
- local posx = memory.readwordunsigned(base+2)
- local posy = memory.readwordunsigned(base+4)
- local posxa = AND(posx,0xFFE0)
- if posx ~= posxa then
- posx()
- end
- local posya = AND(posy,0xFFE0)
- local x1 = AND(posxa+scroll_x-0x180,0xFFFF)+320/2
- if x1 >= 0x8000 then
- x1 = -(0x10000-x1)
- end
- local x2 = x1+0x1F
- local x3 = AND(posxa+scroll_x+0x40,0xFFFF)+320/2
- if x3 >= 0x8000 then
- x3 = -(0x10000-x3)
- end
- local x4 = x3+0x1F
- local y1 = AND(posya-scroll_y-0x120,0xFFFF)+224/2
- if posy ~= posya then
- y1 = y1+0x20
- end
- if y1 >= 0x8000 then
- y1 = -(0x10000-y1)
- end
- local y2 = y1+0x160+0x1F
- if posy ~= posya then
- y2 = y2-0x20
- end
- gui.box(x1,y1,x2,y2,"#00ff0000")
- gui.box(x3,y1,x4,y2,"#ff000000")
- end
- draw_trig(memory.readwordunsigned(base+6)+0xFF0000)
- draw_trig(memory.readwordunsigned(base+8)+0xFF0000)
- end
- end
- function draw_yet(base)
- if base ~= 0xFFFFFF then
- if memory.readwordunsigned(base) <= 0x8000 then
- local posx = memory.readwordunsigned(base+2)
- local posy = memory.readwordunsigned(base+4)
- local posxa = AND(posx,0xFFE0)
- local posya = AND(posy,0xFFF0)
- if posx ~= posxa then
- posx()
- end
- if posy ~= posya then
- posx()
- end
- local x1 = AND(posxa+scroll_x-0x180,0xFFFF)+320/2
- if x1 >= 0x8000 then
- x1 = -(0x10000-x1)
- end
- local x2 = x1+0x180+0x40+0x1F
- local y1 = AND(posy-scroll_y+0x40,0xFFFF)+224/2
- if y1 >= 0x8000 then
- y1 = -(0x10000-y1)
- end
- local y2 = y1+0xF
- local y3 = AND(posy-scroll_y-0x120,0xFFFF)+224/2
- if y3 >= 0x8000 then
- y3 = -(0x10000-y3)
- end
- local y4 = y3+0xF
- gui.box(x1,y1,x2,y2,"#00ff0000")
- gui.box(x1,y3,x2,y4,"#ff000000")
- end
- draw_yet(memory.readwordunsigned(base+10)+0xFF0000)
- draw_yet(memory.readwordunsigned(base+12)+0xFF0000)
- end
- end
- function draw_enemy(base)
- local x = memory.readwordunsigned(base+8)
- local y = memory.readwordunsigned(base+12)
- local x1 = x-1
- local x2 = x+1
- local y1 = y-1
- local y2 = y+1
- if memory.readword(base+0x14) >= 0 then
- local bbox = memory.readlongunsigned(base+0x38)
- x1 = x+memory.readword(bbox+0)
- x2 = x1+memory.readword(bbox+2)-1
- y1 = y+memory.readword(bbox+4)
- y2 = y1+memory.readword(bbox+6)-1
- end
- gui.box(x1-AND(-scroll_x,0xFFFF), y1-scroll_y, x2-AND(-scroll_x,0xFFFF)+2, y2-scroll_y+2,"#ff000000")
- end
- function draw_enemies()
- local base = memory.readwordunsigned(0xFF3662)+0xFF0000
- while base ~= 0xFFFFFF do
- draw_enemy(base)
- base = memory.readwordunsigned(base+2)+0xFF0000
- end
- end
- function draw_bullet(base)
- local x = memory.readwordunsigned(base+0x1C)
- local y = memory.readwordunsigned(base+0x20)
- local x1 = x
- local x2 = x+12
- local y1 = y
- local y2 = y+12
- gui.box(x1-AND(-scroll_x,0xFFFF), y1-scroll_y, x2-AND(-scroll_x,0xFFFF)+2, y2-scroll_y+2,"#ff000000")
- end
- function draw_bullets()
- local base = memory.readwordunsigned(0xFF3BDA)+0xFF0000
- while base ~= 0xFFFFFF do
- draw_bullet(base)
- base = memory.readwordunsigned(base+2)+0xFF0000
- end
- end
- function draw_aero()
- local state = memory.readword(0xFF3688)
- local dir = memory.readword(0xFF368A)
- local x = memory.readwordunsigned(0xFF0176)
- local y = memory.readwordunsigned(0xFF017A)
- local x1 = x-12
- local x2 = x
- local y1 = y
- local y2 = y+12
- if state == 2 or state == 3 then
- x1 = x-16-dir
- x2 = x1+32
- y1 = y+0x18
- y2 = y1+16
- end
- if state == 1 then
- x1 = x-16-dir
- x2 = x1+32
- y1 = y+4
- y2 = y1+16
- end
- gui.box(x1-AND(-scroll_x,0xFFFF), y1-scroll_y, x2-AND(-scroll_x,0xFFFF)+2, y2-scroll_y+2,"#00ffff00")
- gui.box(x-1-AND(-scroll_x,0xFFFF), y+9-1-scroll_y, x+1-AND(-scroll_x,0xFFFF), y+9+1-scroll_y,"#00ffff00")
- end
- function draw_cell(px, py, val)
- if val ~= 0 and AND(val,0x1000) ~= 0 then
- local color = "#00ffff00"
- local v2 = AND(val, 0x1FF)
- local tt = memory.readbyte(0xFFFB9C+v2)
- local cc = "#00CC00AA"
- local v3 = memory.readbyteunsigned(0xFFF99C+v2)
- local offs = memory.readlongunsigned(0xFFD9D8)
- local mask = memory.readwordunsigned(offs+32*v3)
- local j = 1
- if memory.readlong(0x97F6+tt*4) == 0xB238 then
- cc = "#00ffffaa"
- end
- for k = 0, 15 do
- mask = memory.readwordunsigned(offs+32*v3+k*2)
- if mask == 0 then
- elseif mask == 0xFFFF then
- gui.drawline(px+k,py+0,px+k,py+15,cc)
- color = nil
- else
- j = 1
- for i = 0, 15 do
- if AND(mask, j) ~= 0 then
- gui.setpixel(px+k,py+15-i, cc)
- end
- j = j * 2
- end
- color = nil
- end
- end
- if tt == 0x49 or tt == 0x1D then
- color = "#FF0000AA"
- end
- if color then
- gui.box(px, py, px+15, py+15, color)
- end
- end
- end
- function draw_cells()
- local mw = memory.readwordunsigned(0xFFCE56)
- local sx = AND(-scroll_x,0xFFFF)
- for x = AND(-scroll_x,0xFFE0),AND(-scroll_x,0xFFE0)+10*32,32 do
- for y = AND(scroll_y,0xFFE0),AND(scroll_y,0xFFE0)+10*32,32 do
- local px = x - sx
- local py = y - scroll_y
- local idx = memory.readwordunsigned(0xFF5900+(x/16)+(y/32)*mw)
- local addr = 0xFFA400 + AND(idx,0x3FF)*8
- draw_cell(px, py, memory.readword(addr))
- draw_cell(px+16, py, memory.readword(addr+2))
- draw_cell(px, py + 16, memory.readword(addr+4))
- draw_cell(px+16, py + 16, memory.readword(addr+6))
- end
- end
- end
- gui.register(function ()
- gui.box(320/2-1,224/2-1,320/2+1,224/2+1,"#ff000000")
- scroll_x = memory.readwordunsigned(0xFFD114)
- scroll_y = memory.readwordunsigned(0xFFD074)
- draw_trig(memory.readwordunsigned(0xFFCB02)+0xFF0000)
- draw_yet(memory.readwordunsigned(0xFFCB04)+0xFF0000)
- draw_enemies()
- draw_bullets()
- draw_aero()
- draw_cells()
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement