summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-09-13 16:09:33 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2020-09-13 16:09:33 -0400
commitacabb9ad777afe32c60764bca76e21267f6afd41 (patch)
tree43e89c3e95a99e7a91e41632c84d631d0e3dd9fe /tools
parentb3d9d3f7b08c0996235294e5284d295ba661be6b (diff)
parent5819dc6e474684cd2550c93dd432139ce14d2795 (diff)
Merge branch 'master' of https://github.com/mid-kid/pokepicross
Diffstat (limited to 'tools')
-rwxr-xr-xtools/charmap.py31
-rwxr-xr-xtools/dump_string.py42
-rwxr-xr-xtools/messages.py104
3 files changed, 30 insertions, 147 deletions
diff --git a/tools/charmap.py b/tools/charmap.py
deleted file mode 100755
index d318a61..0000000
--- a/tools/charmap.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python3
-
-from sys import argv
-
-def parse_charmap(file):
- charmap = {}
- constants = {}
- for line in open(file):
- split = line.split("#")[0].split("=")
- if len(split) != 2:
- continue
-
- char = "=".join(split[0:-1]).strip()
- value = int(split[-1].strip(), 0) & 0xFFFF
-
- if char.startswith("'") and char.endswith("'"):
- charmap[char[1:-1]] = value
- else:
- constants[char] = value
- return charmap, constants
-
-if __name__ == "__main__":
- charmap, constants = parse_charmap(argv[1])
-
- for char in charmap:
- value = charmap[char]
- print("charmap \"%s\", %d" % (char, value))
-
- for constant in constants:
- value = constants[constant]
- print("%s EQU %d" % (constant, value))
diff --git a/tools/dump_string.py b/tools/dump_string.py
index 1641944..caf361b 100755
--- a/tools/dump_string.py
+++ b/tools/dump_string.py
@@ -5,6 +5,11 @@ from charmap import parse_charmap
file = open("DMGAKVJ0.1", "rb").read()
+multistring = False
+if argv[1] == "-m":
+ argv.pop(1)
+ multistring = True
+
bank = int(argv[1], 16)
addr = int(argv[2], 16)
count = 1
@@ -28,19 +33,32 @@ for x in range(count):
if bank > 0:
addr += 0x4000
- print("[message_%02x_%04x]" % (bank, addr))
+ print("[string_%02x_%04x]" % (bank, addr))
while True:
- value = file[offset] | (file[offset + 1] << 8)
- offset += 2
+ if multistring:
+ if file[offset] == 0:
+ offset += 1
+ print("\n.db 0\n")
+ break
+ val = file[offset] | (file[offset + 1] << 8)
+ print(".dw %d" % val)
+ offset += 2
+
+ while True:
+ value = file[offset] | (file[offset + 1] << 8)
+ offset += 2
+
+ if value == 0xffff:
+ break
+ elif value == 0xfffe:
+ print()
+ continue
+
+ if value in charmap:
+ print(charmap[value], end="")
+ else:
+ print("<%02x>" % value, end="")
- if value == 0xffff:
+ if not multistring:
print("\n")
break
- elif value == 0xfffe:
- print()
- continue
-
- if value in charmap:
- print(charmap[value], end="")
- else:
- print("<%02x>" % value, end="")
diff --git a/tools/messages.py b/tools/messages.py
deleted file mode 100755
index 089bbdd..0000000
--- a/tools/messages.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env python3
-
-from sys import argv, stderr, exit
-from charmap import parse_charmap
-
-def err(s):
- print("ERROR:", s.rstrip(), file=stderr)
- exit(1)
-
-charmap, constants = parse_charmap(argv[1])
-
-filename = argv[2]
-
-def convert_message(message):
- while True:
- if message.endswith("\r\n"):
- message = message[:-2]
- continue
- if message.endswith("\n"):
- message = message[:-1]
- continue
- break
-
- values = []
- in_braces = False
- constant = ""
- for char in message:
- if char == "{" and not in_braces:
- in_braces = True
- constant = ""
- continue
- if char == "}" and in_braces:
- in_braces = False
- if constant in constants:
- values.append(constants[constant])
- elif constant in charmap:
- values.append(charmap[constant])
- else:
- err("%s: Unrecognized constant %s" % (filename, constant))
- continue
-
- if in_braces:
- constant += char
- continue
-
- if char == "\r":
- continue
- if char == "\n":
- values.append(0xfffe)
- continue
-
- if char in charmap:
- values.append(charmap[char])
- else:
- err("%s: Unrecognized character '%s'" % (filename, char))
-
- values.append(0xffff)
- return " dw " + ", ".join(["$%04x" % val for val in values])
-
-name = None
-message = None
-for i, line in enumerate(open(filename)):
- if i == 0 and not line.startswith(".org"):
- print("SECTION \"%s\", ROMX" % filename)
-
- if line.startswith("#"):
- continue
-
- if line.startswith("[") and line.endswith("]\n"):
- if name is not None or message is not None:
- print("\n%s::" % name)
- print(convert_message(message))
- name = line[1:-2]
- message = ""
- continue
-
- if line.startswith(".org "):
- split = line.split(" ", 1)
- if len(split) < 2:
- continue
- split = split[1].strip().split(":")
- if len(split) != 2:
- continue
- bank = split[0]
- addr = split[1]
-
- if name is not None or message is not None:
- print("\n%s::" % name)
- print(convert_message(message))
- name = None
- message = None
-
- if i != 0:
- print()
- print("SECTION \"%s %s:%s\", ROMX[$%s], BANK[$%s]" %
- (filename, bank, addr, addr, bank))
- continue
-
- if message is not None:
- message += line
-
-if name is not None and message is not None:
- print("\n%s::" % name)
- print(convert_message(message))