shithub: pokecrystal

Download patch

ref: ce187ca03f3f26610d485cd523caeb39319a2607
parent: e6165edadfe5e801679305eaba8b3895f360cba7
parent: ac391b7b8e52e24e6669b68471175eb033c199e0
author: Bryan Bishop <kanzure@gmail.com>
date: Sat May 11 06:58:35 EDT 2013

Merge pull request #129 from yenatch/master

preprocessor print macro + fix make lzs target

--- a/extras/gfx.py
+++ b/extras/gfx.py
@@ -1440,6 +1440,7 @@
 						to_png(os.path.join(root, name), None, os.path.join(root, os.path.splitext(name)[0]+'.pal'))
 					else:
 						to_png(os.path.join(root, name))
+					os.touch(os.path.join(root, name))
 	
 	# only monster and trainer pics for now
 	for root, dirs, files in os.walk('../gfx/pics/'):
@@ -1450,11 +1451,14 @@
 					to_png(os.path.join(root, name), None, os.path.join(root, 'normal.pal'))
 				else:
 					to_png(os.path.join(root, name))
+				os.touch(os.path.join(root, name))
+	
 	for root, dirs, files in os.walk('../gfx/trainers/'):
 		for name in files:
 			if debug: print os.path.splitext(name), os.path.join(root, name)
 			if os.path.splitext(name)[1] == '.2bpp':
 				to_png(os.path.join(root, name), None, os.path.join(root, name[:-5]+'.pal'))
+				os.touch(os.path.join(root, name))
 
 
 def mass_decompress(debug=False):
@@ -1479,6 +1483,7 @@
 				else:
 					with open(os.path.join(root, name), 'rb') as lz: de = Decompressed(lz.read())
 					to_file(os.path.join(root, os.path.splitext(name)[0]+'.2bpp'), de.output)
+				os.touch(os.path.join(root, name))
 
 def append_terminator_to_lzs(directory):
 	# fix lzs that were extracted with a missing terminator
--- a/preprocessor.py
+++ b/preprocessor.py
@@ -352,6 +352,11 @@
         sys.stdout.write(asm)
         return
 
+    print_macro = False
+    if asms[0].strip() == 'print':
+        asms[0] = asms[0].replace('print','db 0,')
+        print_macro = True
+
     output = ""
     even = False
     i = 0
@@ -359,6 +364,7 @@
         i = i + 1
 
         if even:
+            characters = []
             # token is a string to convert to byte values
             while len(token):
                 # read a single UTF-8 codepoint
@@ -393,10 +399,35 @@
                         char = char + token[0]
                         token = token[1:]
 
-                output += ("${0:02X}".format(chars[char]))
+                characters += [char]
 
-                if len(token):
-                    output += (", ")
+            if print_macro:
+                line = 0
+                while len(characters):
+                    last_char = 1
+                    if len(characters) > 18 and characters[-1] != '@':
+                        for i, char in enumerate(characters):
+                            last_char = i + 1
+                            if ' ' not in characters[i+1:18]: break
+                        output += ", ".join("${0:02X}".format(chars[char]) for char in characters[:last_char-1])
+                        if characters[last_char-1] != " ":
+                            output += ", ${0:02X}".format(characters[last_char-1])
+                        if not line & 1:
+                           line_ending = 0x4f
+                        else:
+                           line_ending = 0x51
+                        output += ", ${0:02X}".format(line_ending)
+                        line += 1
+                    else:
+                        output += ", ".join(["${0:02X}".format(chars[char]) for char in characters[:last_char]])
+                    characters = characters[last_char:]
+                    if len(characters): output += ", "
+                # end text
+                line_ending = 0x57
+                output += ", ${0:02X}".format(line_ending)
+
+            output += ", ".join(["${0:02X}".format(chars[char]) for char in characters])
+
         # if not even
         else:
             output += (token)
--