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