Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/Assets/Lua/Genesis/Splatterhouse 2 (JPN).lua
2 views
1
--Splatterhouse 2 (JPN) Collision box viewer v1.0
2
--Author Pasky
3
--For use with Bizhawk
4
5
6
local cx = 0
7
local player = false
8
local attack = false
9
local weapon = false
10
local function camera()
11
cx = mainmemory.read_u16_be(0x9E)
12
end
13
14
local function drawAxis(x1,y1,x2,y2)
15
local x = ((x2 - x1) / 2) + x1
16
local y = ((y2 - y1) / 2) + y1
17
local xrad = (x2 - x1) / 2
18
local yrad = (y2 - y1) / 2
19
gui.drawLine(x-xrad,y,x+xrad,y)
20
gui.drawLine(x,y-yrad,x,y+yrad)
21
end
22
23
local function touch_collision()
24
25
local A6 = bit.band(emu.getregister("M68K A6"),0xFFFF)
26
local e = {0,0,0,0}
27
local p = {0,0,0,0}
28
29
for i = 0,3,1 do
30
e[i] = mainmemory.read_s16_be(A6 - 0x0A - (i * 2))
31
p[i] = mainmemory.read_s16_be(A6 - 0x02 - (i * 2))
32
end
33
gui.drawBox(e[0]-cx,e[2],e[1]-cx,e[3],0xFFFF0000,0x40FF0000)
34
if player == false then
35
gui.drawBox(p[0]-cx,p[2],p[1]-cx,p[3],0xFF0000FF,0x400000FF)
36
if mainmemory.read_u16_be(0xEA) > 0 then
37
drawAxis(p[0]-cx,p[2],p[1]-cx,p[3])
38
end
39
player = true
40
end
41
end
42
43
local function attack_collision()
44
local A6 = bit.band(emu.getregister("M68K A6"),0xFFFF)
45
local a = {0,0,0,0}
46
for i = 0,3,1 do
47
a[i] = mainmemory.read_s16_be(A6 - 0x1A - (i * 2))
48
end
49
if attack == false then
50
gui.drawBox(a[0]-cx,a[2],a[1]-cx,a[3],0xFFFFFFFF,0x40FFFFFF)
51
attack = true
52
end
53
end
54
55
local function weapon_collision()
56
local A6 = bit.band(emu.getregister("M68K A6"),0xFFFF)
57
local w = {0,0,0,0}
58
for i = 0,3,1 do
59
w[i] = mainmemory.read_s16_be(A6 - 0x12 - (i * 2))
60
end
61
if weapon == false then
62
gui.drawBox(w[0]-cx,w[2],w[1]-cx,w[3],0xFFFFFFFF,0x40FFFFFF)
63
weapon = true
64
end
65
end
66
67
local function reset()
68
player = false
69
attack = false
70
weapon = false
71
end
72
73
event.onmemoryexecute(touch_collision,0x14508)
74
event.onmemoryexecute(attack_collision,0x143E0)
75
event.onmemoryexecute(weapon_collision,0x1420A)
76
77
while true do
78
camera()
79
emu.frameadvance()
80
reset()
81
end
82