-
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathsprite hitbox lua.lua
87 lines (59 loc) · 2.93 KB
/
sprite hitbox lua.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
local consoleType = emu.getState()["consoleType"]
if consoleType ~= "Nes" then
emu.displayMessage("Script", "This script only works on the NES.")
return
end
function Main()
gamestateaddr = emu.getLabelAddress("_gameState")
gamestate = emu.read(gamestateaddr.address, gamestateaddr.memType, false)
if gamestate ~= 0x02 then
return
end
dualaddr = emu.getLabelAddress("_dual")
dual = emu.read(dualaddr.address, dualaddr.memType, false)
playerxaddr = emu.getLabelAddress("_player_x")
playeryaddr = emu.getLabelAddress("_player_y")
genericaddr = emu.getLabelAddress("_Generic")
playerminiaddr = emu.getLabelAddress("_mini")
gamemodeaddr = emu.getLabelAddress("_mini")
player_x = emu.read(playerxaddr.address + 1, playerxaddr.memType, false)
player_y = emu.read(playeryaddr.address + 1, playeryaddr.memType, false)
player_mini = emu.read(playerminiaddr.address, playerminiaddr.memType, false)
gamemode = emu.read(gamemodeaddr.address, gamemodeaddr.memType, false)
player_width = emu.read(genericaddr.address + 2, genericaddr.memType, false)
player_height = emu.read(genericaddr.address + 3, genericaddr.memType, false)
emu.drawRectangle(player_x, player_y + ((0x10 - player_height) >> 1), player_width, player_height, 0xffff00, false)
if dual == 1 then
player_x = emu.read(playerxaddr.address + 3, playerxaddr.memType, false)
player_y = emu.read(playeryaddr.address + 3, playeryaddr.memType, false)
emu.drawRectangle(player_x, player_y + ((0x10 - player_height) >> 1), player_width, player_height, 0xffff00, false)
end
actives = emu.getLabelAddress("_activesprites_active")
types = emu.getLabelAddress("_activesprites_type")
widths = emu.getLabelAddress("_sprite_widths")
heights = emu.getLabelAddress("_sprite_heights")
offsetsx = emu.getLabelAddress("_sprite_x_offset")
offsetsy = emu.getLabelAddress("_sprite_y_offset")
xs = emu.getLabelAddress("_activesprites_realx")
ys = emu.getLabelAddress("_activesprites_realy")
scrollxtable = emu.getLabelAddress("_scroll_x")
scrollytable = emu.getLabelAddress("_scroll_y")
for i=0,15 do
sprActive = emu.read(actives.address + i, actives.memType, false)
if sprActive > 0 then
sprType = emu.read(types.address + i, types.memType, false)
width = emu.read(widths.address + sprType, widths.memType, false)
height = emu.read(heights.address + sprType, heights.memType, false)
x = emu.read(xs.address + i, xs.memType, false)
xoffset = emu.read(offsetsx.address + sprType, offsetsx.memType, true)
y = emu.read(ys.address + i, ys.memType, false)
yoffset = emu.read(offsetsy.address + sprType, offsetsy.memType, true)
if height < 0xfc then
emu.drawRectangle(x + xoffset, y + yoffset, width, height, 0x7f0000ff, true)
else
emu.drawRectangle(x + xoffset, y + yoffset, 16, 16, 0x7fffffff, true)
end
end
end
end
emu.addEventCallback(Main, emu.eventType.startFrame)