dobrograd-13-06-2022/garrysmod/addons/feature-wire/lua/wire/gates/highspeed.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

44 lines
1.2 KiB
Lua

GateActions("Highspeed")
GateActions["highspeed_write"] = {
name = "Highspeed Write",
inputs = { "Clk", "Memory", "Address", "Data" },
inputtypes = { "NORMAL", "WIRELINK", "NORMAL", "NORMAL" },
output = function(gate, Clk, Memory, Address, Data)
if not Memory then return 0 end
if not Memory.WriteCell then return 0 end
if Clk <= 0 then return 0 end
Address = math.floor(Address)
if Address < 0 then return 0 end
return Memory:WriteCell(Address, Data) and 1 or 0
end,
label = function(Out, Clk, Memory, Address, Data)
return string.format("Clock:%s Memory:%s Address:%s Data:%s = %s", Clk, Memory, Address, Data, Out)
end
}
GateActions["highspeed_read"] = {
name = "Highspeed Read",
inputs = { "Clk", "Memory", "Address" },
inputtypes = { "NORMAL", "WIRELINK", "NORMAL" },
output = function(gate, Clk, Memory, Address)
if Clk <= 0 then return gate.Memory or 0 end
Address = math.floor(Address or -1)
if not Memory or not Memory.ReadCell or Address < 0 then
gate.Memory = 0
return 0
end
gate.Memory = Memory:ReadCell(Address)
return gate.Memory or 0
end,
label = function(Out, Clk, Memory, Address)
return string.format("Clock:%s Memory:%s Address:%s = %s", Clk, Memory, Address, Out)
end
}
GateActions()