LttPClient: add snes write command

This commit is contained in:
Fabian Dill 2021-11-02 11:11:57 +01:00
parent 10837e75b2
commit e4838f6d2b
2 changed files with 13 additions and 0 deletions

View File

@ -479,6 +479,7 @@ async def process_server_cmd(ctx: CommonContext, args: dict):
elif cmd == "Bounced":
tags = args.get("tags", [])
# we can skip checking "DeathLink" in ctx.tags, as otherwise we wouldn't have been send this
if "DeathLink" in tags and ctx.last_death_link != args["data"]["time"]:
ctx.on_deathlink(args["data"])

View File

@ -80,6 +80,18 @@ class LttPCommandProcessor(ClientCommandProcessor):
else:
return False
def _cmd_snes_write(self, address, data):
"""Write the specified byte (base10) to the SNES' memory address (base16)."""
if self.ctx.snes_state != SNESState.SNES_ATTACHED:
self.output("No attached SNES Device.")
return False
snes_buffered_write(self.ctx, int(address, 16), bytes([int(data)]))
asyncio.create_task(snes_flush_writes(self.ctx))
self.output("Data Sent")
return True
class Context(CommonContext):
command_processor = LttPCommandProcessor
game = "A Link to the Past"