mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-04-03 20:53:40 -07:00
Merge branch 'ArchipelagoMW:main' into main
This commit is contained in:
Binary file not shown.
@@ -61,36 +61,42 @@
|
||||
found_text: "Found?"
|
||||
TooltipLabel:
|
||||
id: receiving
|
||||
sort_key: 'receiving'
|
||||
text: root.receiving_text
|
||||
halign: 'center'
|
||||
valign: 'center'
|
||||
pos_hint: {"center_y": 0.5}
|
||||
TooltipLabel:
|
||||
id: item
|
||||
sort_key: 'item'
|
||||
text: root.item_text
|
||||
halign: 'center'
|
||||
valign: 'center'
|
||||
pos_hint: {"center_y": 0.5}
|
||||
TooltipLabel:
|
||||
id: finding
|
||||
sort_key: 'finding'
|
||||
text: root.finding_text
|
||||
halign: 'center'
|
||||
valign: 'center'
|
||||
pos_hint: {"center_y": 0.5}
|
||||
TooltipLabel:
|
||||
id: location
|
||||
sort_key: 'location'
|
||||
text: root.location_text
|
||||
halign: 'center'
|
||||
valign: 'center'
|
||||
pos_hint: {"center_y": 0.5}
|
||||
TooltipLabel:
|
||||
id: entrance
|
||||
sort_key: 'entrance'
|
||||
text: root.entrance_text
|
||||
halign: 'center'
|
||||
valign: 'center'
|
||||
pos_hint: {"center_y": 0.5}
|
||||
TooltipLabel:
|
||||
id: found
|
||||
sort_key: 'found'
|
||||
text: root.found_text
|
||||
halign: 'center'
|
||||
valign: 'center'
|
||||
|
||||
@@ -22,6 +22,10 @@ SOFTWARE.
|
||||
|
||||
local SCRIPT_VERSION = 1
|
||||
|
||||
-- Set to log incoming requests
|
||||
-- Will cause lag due to large console output
|
||||
local DEBUG = false
|
||||
|
||||
--[[
|
||||
This script expects to receive JSON and will send JSON back. A message should
|
||||
be a list of 1 or more requests which will be executed in order. Each request
|
||||
@@ -271,10 +275,6 @@ local base64 = require("base64")
|
||||
local socket = require("socket")
|
||||
local json = require("json")
|
||||
|
||||
-- Set to log incoming requests
|
||||
-- Will cause lag due to large console output
|
||||
local DEBUG = false
|
||||
|
||||
local SOCKET_PORT_FIRST = 43055
|
||||
local SOCKET_PORT_RANGE_SIZE = 5
|
||||
local SOCKET_PORT_LAST = SOCKET_PORT_FIRST + SOCKET_PORT_RANGE_SIZE
|
||||
@@ -330,18 +330,28 @@ function unlock ()
|
||||
client_socket:settimeout(0)
|
||||
end
|
||||
|
||||
function process_request (req)
|
||||
local res = {}
|
||||
request_handlers = {
|
||||
["PING"] = function (req)
|
||||
local res = {}
|
||||
|
||||
if req["type"] == "PING" then
|
||||
res["type"] = "PONG"
|
||||
|
||||
elseif req["type"] == "SYSTEM" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["SYSTEM"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "SYSTEM_RESPONSE"
|
||||
res["value"] = emu.getsystemid()
|
||||
|
||||
elseif req["type"] == "PREFERRED_CORES" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["PREFERRED_CORES"] = function (req)
|
||||
local res = {}
|
||||
local preferred_cores = client.getconfig().PreferredCores
|
||||
|
||||
res["type"] = "PREFERRED_CORES_RESPONSE"
|
||||
res["value"] = {}
|
||||
res["value"]["NES"] = preferred_cores.NES
|
||||
@@ -354,14 +364,21 @@ function process_request (req)
|
||||
res["value"]["PCECD"] = preferred_cores.PCECD
|
||||
res["value"]["SGX"] = preferred_cores.SGX
|
||||
|
||||
elseif req["type"] == "HASH" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["HASH"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "HASH_RESPONSE"
|
||||
res["value"] = rom_hash
|
||||
|
||||
elseif req["type"] == "GUARD" then
|
||||
res["type"] = "GUARD_RESPONSE"
|
||||
local expected_data = base64.decode(req["expected_data"])
|
||||
return res
|
||||
end,
|
||||
|
||||
["GUARD"] = function (req)
|
||||
local res = {}
|
||||
local expected_data = base64.decode(req["expected_data"])
|
||||
local actual_data = memory.read_bytes_as_array(req["address"], #expected_data, req["domain"])
|
||||
|
||||
local data_is_validated = true
|
||||
@@ -372,39 +389,83 @@ function process_request (req)
|
||||
end
|
||||
end
|
||||
|
||||
res["type"] = "GUARD_RESPONSE"
|
||||
res["value"] = data_is_validated
|
||||
res["address"] = req["address"]
|
||||
|
||||
elseif req["type"] == "LOCK" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["LOCK"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "LOCKED"
|
||||
lock()
|
||||
|
||||
elseif req["type"] == "UNLOCK" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["UNLOCK"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "UNLOCKED"
|
||||
unlock()
|
||||
|
||||
elseif req["type"] == "READ" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["READ"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "READ_RESPONSE"
|
||||
res["value"] = base64.encode(memory.read_bytes_as_array(req["address"], req["size"], req["domain"]))
|
||||
|
||||
elseif req["type"] == "WRITE" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["WRITE"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "WRITE_RESPONSE"
|
||||
memory.write_bytes_as_array(req["address"], base64.decode(req["value"]), req["domain"])
|
||||
|
||||
elseif req["type"] == "DISPLAY_MESSAGE" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["DISPLAY_MESSAGE"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "DISPLAY_MESSAGE_RESPONSE"
|
||||
message_queue:push(req["message"])
|
||||
|
||||
elseif req["type"] == "SET_MESSAGE_INTERVAL" then
|
||||
return res
|
||||
end,
|
||||
|
||||
["SET_MESSAGE_INTERVAL"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "SET_MESSAGE_INTERVAL_RESPONSE"
|
||||
message_interval = req["value"]
|
||||
|
||||
else
|
||||
return res
|
||||
end,
|
||||
|
||||
["default"] = function (req)
|
||||
local res = {}
|
||||
|
||||
res["type"] = "ERROR"
|
||||
res["err"] = "Unknown command: "..req["type"]
|
||||
end
|
||||
|
||||
return res
|
||||
return res
|
||||
end,
|
||||
}
|
||||
|
||||
function process_request (req)
|
||||
if request_handlers[req["type"]] then
|
||||
return request_handlers[req["type"]](req)
|
||||
else
|
||||
return request_handlers["default"](req)
|
||||
end
|
||||
end
|
||||
|
||||
-- Receive data from AP client and send message back
|
||||
|
||||
@@ -322,7 +322,7 @@ function processBlock(block)
|
||||
end
|
||||
end
|
||||
end
|
||||
if #itemsBlock ~= itemIndex then
|
||||
if #itemsBlock > itemIndex then
|
||||
wU8(ITEM_INDEX, #itemsBlock)
|
||||
end
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
# A. This is a .yaml file. You are allowed to use most characters.
|
||||
# To test if your yaml is valid or not, you can use this website:
|
||||
# http://www.yamllint.com/
|
||||
# You can also verify your Archipelago settings are valid at this site:
|
||||
# You can also verify that your Archipelago options are valid at this site:
|
||||
# https://archipelago.gg/check
|
||||
|
||||
# Your name in-game. Spaces will be replaced with underscores and there is a 16-character limit.
|
||||
# Your name in-game, limited to 16 characters.
|
||||
# {player} will be replaced with the player's slot number.
|
||||
# {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
|
||||
# {number} will be replaced with the counter value of the name.
|
||||
|
||||
Reference in New Issue
Block a user