From 732acf1d4f85b82ed20a69e66224b89db9a06f3f Mon Sep 17 00:00:00 2001 From: Rangi Date: Sat, 12 Mar 2022 22:50:42 -0500 Subject: Allow `{patch offset length}` (necessary for pokegold) --- tools/make_patch.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'tools/make_patch.c') diff --git a/tools/make_patch.c b/tools/make_patch.c index a67a4a399..d83ffc76c 100644 --- a/tools/make_patch.c +++ b/tools/make_patch.c @@ -214,6 +214,9 @@ void interpret_command(char *command, const struct Symbol *current_hook, const s // Use the arguments if (!strcmp(command, "patch") || !strcmp(command, "PATCH") || !strcmp(command, "patch_") || !strcmp(command, "PATCH_")) { + if (argc > 2) { + error_exit("Error: Invalid arguments for command: \"%s\"", command); + } if (!current_hook) { error_exit("Error: No current patch for command: \"%s\"", command); } @@ -224,8 +227,13 @@ void interpret_command(char *command, const struct Symbol *current_hook, const s if (fseek(new_rom, current_offset, SEEK_SET)) { error_exit("Error: Cannot seek to \"vc_patch %s\" in the new ROM\n", current_hook->name); } - const struct Symbol *current_hook_end = symbol_find_cat(symbols, current_hook->name, "_End"); - int length = current_hook_end->offset - current_offset; + int length; + if (argc == 2) { + length = parse_number(argv[1], 0); + } else { + const struct Symbol *current_hook_end = symbol_find_cat(symbols, current_hook->name, "_End"); + length = current_hook_end->offset - current_offset; + } buffer_append(patches, &(struct Patch){current_offset, length}); bool modified = false; if (length == 1) { -- cgit v1.2.3