shithub: pokered

Download patch

ref: 1113f19b183ec8c72e81379f4c80b11a12c4a551
parent: 6c64fa8acc80b1fe78e8c63bece0db4cf21ea2a4
parent: fd8bfbd633376445efe501870a6ddbf3684af99f
author: Bryan Bishop <kanzure@gmail.com>
date: Sat Jan 14 07:19:46 EST 2012

Merge.

hg-commit-id: 261be761c726


diff: cannot open b/gfx/tilesets//null: file does not exist: 'b/gfx/tilesets//null'
--- a/constants.asm
+++ b/constants.asm
@@ -1,6 +1,8 @@
-RED EQU 1
-BLUE EQU 0
-GREEN EQU 0
+_JAPAN EQU 0
+_RED EQU 1
+_BLUE EQU 0
+_GREEN EQU 0
+_YELLOW EQU 0
 
 ;\1 = X
 ;\2 = Y
--- a/extras/analyze_texts.py
+++ b/extras/analyze_texts.py
@@ -385,81 +385,91 @@
 
 def text_pretty_printer_at(start_address, label="SomeLabel"):
     commands = parse_text_script(start_address, None, None)
+    needs_to_begin_with_0 = False
     
     wanted_command = None
-    for command_id in commands:
-        command = commands[command_id]
-        if command["type"] == 0:
-            wanted_command = command_id
+    if needs_to_begin_with_0:
+        wanted_command = None
+        for command_id in commands:
+            command = commands[command_id]
+            if command["type"] == 0:
+                wanted_command = command_id
     
-    if wanted_command == None:
-        raise "error: address did not start with a $0 text"
+        if wanted_command == None:
+            raise "error: address did not start with a $0 text"
+    
+    #start with zero please
+    byte_count = 0
 
-    lines = commands[wanted_command]["lines"]
+    first_line = True
+    for this_command in commands.keys():
+        lines = commands[this_command]["lines"]
+    
+        #add the ending byte to the last line- always seems $57
+        lines[len(lines.keys())-1].append(commands[1]["type"])
+    
+        if first_line:
+            output  = "\n"
+            output += label + ": ; " + hex(start_address) + "\n"
+            first_line = False
 
-    #add the ending byte to the last line- always seems $57
-    lines[len(lines.keys())-1].append(commands[1]["type"])
-
-    output  = "\n"
-    output += label + ": ; " + hex(start_address) + "\n"
-    first = True
-    for line_id in lines:
-        line = lines[line_id]
-        output += spacing + "db "
-        if first:
-            output += "$0, "
-            first = False
-     
-        quotes_open = False
-        first_byte = True
-        was_byte = False
-        byte_count = 0
-        for byte in line:
-            if byte in txt_bytes:
-                if not quotes_open and not first_byte: #start text
-                    output += ", \""
-                    quotes_open = True
-                    first_byte = False
-                if not quotes_open and first_byte: #start text
-                    output += "\""
-                    quotes_open = True
-                output += txt_bytes[byte]
-            elif byte in constant_abbreviation_bytes:
-                if quotes_open:
-                    output += "\""
-                    quotes_open = False
-                if not first_byte:
-                    output += ", "
-                output += constant_abbreviation_bytes[byte]
-            else:
-                if quotes_open:
-                    output += "\""
-                    quotes_open = False
+        first = True #first byte
+        for line_id in lines:
+            line = lines[line_id]
+            output += spacing + "db "
+            if first and needs_to_begin_with_0:
+                output += "$0, "
+                first = False
+         
+            quotes_open = False
+            first_byte = True
+            was_byte = False
+            for byte in line:
+                if byte in txt_bytes:
+                    if not quotes_open and not first_byte: #start text
+                        output += ", \""
+                        quotes_open = True
+                        first_byte = False
+                    if not quotes_open and first_byte: #start text
+                        output += "\""
+                        quotes_open = True
+                    output += txt_bytes[byte]
+                elif byte in constant_abbreviation_bytes:
+                    if quotes_open:
+                        output += "\""
+                        quotes_open = False
+                    if not first_byte:
+                        output += ", "
+                    output += constant_abbreviation_bytes[byte]
+                else:
+                    if quotes_open:
+                        output += "\""
+                        quotes_open = False
+    
+                    #if you want the ending byte on the last line
+                    #if not (byte == 0x57 or byte == 0x50 or byte == 0x58):
+                    if not first_byte:
+                        output += ", "
+    
+                    output += "$" + hex(byte)[2:]
+                    was_byte = True
+    
+                    #add a comma unless it's the end of the line
+                    #if byte_count+1 != len(line):
+                    #    output += ", "
+    
+                first_byte = False
+                byte_count += 1
+            #close final quotes
+            if quotes_open:
+                output += "\""
+                quotes_open = False
+    
+            output += "\n"
 
-                #if you want the ending byte on the last line
-                #if not (byte == 0x57 or byte == 0x50 or byte == 0x58):
-                if not first_byte:
-                    output += ", "
-
-                output += "$" + hex(byte)[2:]
-                was_byte = True
-
-                #add a comma unless it's the end of the line
-                #if byte_count+1 != len(line):
-                #    output += ", "
-
-            first_byte = False
-            byte_count += 1
-        #close final quotes
-        if quotes_open:
-            output += "\""
-            quotes_open = False
-
-        output += "\n"
-
     #output += "\n"
     print output
-    return output
+    return (output, byte_count)
 
 def is_label_in_asm(label):
     for line in analyze_incbins.asm:
--- a/extras/extract_maps.py
+++ b/extras/extract_maps.py
@@ -60,9 +60,9 @@
          0x22: "Route 23",
          0x23: "Route 24",
          0x24: "Route 25",
-         0x25: "Ash's House F1",
-         0x26: "Ash's House F2",
-         0x27: "Gary's House",
+         0x25: "Red's House 1F",
+         0x26: "Red's House 2F",
+         0x27: "Blue's House",
          0x28: "Oak's Lab",
          0x29: "Viridian Poke Center",
          0x2A: "Viridian Mart",
@@ -267,7 +267,7 @@
          0xF2: "FREEZE",
          0xF3: "FREEZE",
          0xF4: "FREEZE",
-         0xF5: "Loreli",
+         0xF5: "Lorelei",
          0xF6: "Bruno",
          0xF7: "Agatha"
        }
--- /dev/null
+++ b/extras/extract_tilesets.py
@@ -1,0 +1,38 @@
+#!/usr/bin/python
+#author: Bryan Bishop <kanzure@gmail.com>
+#date: 2012-01-14
+#throw tilesets into separate files
+import extract_maps
+extract_maps.load_rom()
+
+locations = {
+"Tset00_GFX": [0x64000, 0x645E0, "00"],
+"Tset01_GFX": [0x64DE0, 0x65270, "01"],
+"Tset08_GFX": [0x653A0, 0x65980, "08"],
+"Tset13_GFX": [0x65BB0, 0x66190, "13"],
+"Tset0E_GFX": [0x66610, 0x66BF0, "0e"],
+"Tset10_GFX": [0x66D60, 0x67350, "10"],
+"Tset17_GFX": [0x676F0, 0x67B50, "17"],
+"Tset05_GFX": [0x6807F, 0x6867F, "05"],
+"Tset02_GFX": [0x68DBF, 0x693BF, "02"],
+"Tset09_GFX": [0x6960F, 0x69BFF, "09"],
+"Tset03_GFX": [0x6A3FF, 0x6A9FF, "03"],
+"Tset16_GFX": [0x6B1FF, 0x6B7FF, "16"],
+"Tset0F_GFX": [0x6C000, 0x6C5C0, "0f"],
+"Tset11_GFX": [0x6CCA0, 0x6D0C0, "11"],
+"Tset12_GFX": [0x6D8C0, 0x6DEA0, "12"],
+"Tset0D_GFX": [0x6E390, 0x6E930, "0d"],
+"Tset14_GFX": [0x6ED10, 0x6F2D0, "14"],
+"Tset15_GFX": [0x6F670, 0x6FB20, "15"],
+"Tset0B_GFX": [0x6FD60, 0x6FEF0, "0b"],
+}
+
+for tileset_id in locations.keys():
+    tileset = locations[tileset_id]
+
+    print "writing ../gfx/tilesets/" + tileset[2] + ".2bpp"
+    fh = open("../gfx/tilesets/" + tileset[2] + ".2bpp", "w")
+    fh.write(extract_maps.rom[tileset[0]:tileset[1]])
+    fh.close()
+
+print "Done."
--- a/extras/gbz80disasm.py
+++ b/extras/gbz80disasm.py
@@ -4,523 +4,524 @@
 import extract_maps
 from copy import copy, deepcopy
 from pretty_map_headers import random_hash, map_name_cleaner
+from ctypes import c_int8
 import sys
 spacing = "    "
 
 temp_opt_table = [
-  [ "ADC A", 0x8f, 0 ], 
-  [ "ADC B", 0x88, 0 ], 
-  [ "ADC C", 0x89, 0 ], 
-  [ "ADC D", 0x8a, 0 ], 
-  [ "ADC E", 0x8b, 0 ], 
-  [ "ADC H", 0x8c, 0 ], 
-  [ "ADC [HL]", 0x8e, 0 ], 
-  [ "ADC L", 0x8d, 0 ], 
-  [ "ADC x", 0xce, 1 ], 
-  [ "ADD A", 0x87, 0 ], 
-  [ "ADD B", 0x80, 0 ], 
-  [ "ADD C", 0x81, 0 ], 
-  [ "ADD D", 0x82, 0 ], 
-  [ "ADD E", 0x83, 0 ], 
-  [ "ADD H", 0x84, 0 ], 
-  [ "ADD [HL]", 0x86, 0 ], 
-  [ "ADD HL, BC", 0x9, 0 ], 
-  [ "ADD HL, DE", 0x19, 0 ], 
-  [ "ADD HL, HL", 0x29, 0 ], 
-  [ "ADD HL, SP", 0x39, 0 ], 
-  [ "ADD L", 0x85, 0 ], 
-  [ "ADD SP, x", 0xe8, 1 ], 
-  [ "ADD x", 0xc6, 1 ], 
-  [ "AND A", 0xa7, 0 ], 
-  [ "AND B", 0xa0, 0 ], 
-  [ "AND C", 0xa1, 0 ], 
-  [ "AND D", 0xa2, 0 ], 
-  [ "AND E", 0xa3, 0 ], 
-  [ "AND H", 0xa4, 0 ], 
-  [ "AND [HL]", 0xa6, 0 ], 
-  [ "AND L", 0xa5, 0 ], 
-  [ "AND x", 0xe6, 1 ], 
-  [ "BIT 0, A", 0x47cb, 3 ], 
-  [ "BIT 0, B", 0x40cb, 3 ], 
-  [ "BIT 0, C", 0x41cb, 3 ], 
-  [ "BIT 0, D", 0x42cb, 3 ], 
-  [ "BIT 0, E", 0x43cb, 3 ], 
-  [ "BIT 0, H", 0x44cb, 3 ], 
-  [ "BIT 0, [HL]", 0x46cb, 3 ], 
-  [ "BIT 0, L", 0x45cb, 3 ], 
-  [ "BIT 1, A", 0x4fcb, 3 ], 
-  [ "BIT 1, B", 0x48cb, 3 ], 
-  [ "BIT 1, C", 0x49cb, 3 ], 
-  [ "BIT 1, D", 0x4acb, 3 ], 
-  [ "BIT 1, E", 0x4bcb, 3 ], 
-  [ "BIT 1, H", 0x4ccb, 3 ], 
-  [ "BIT 1, [HL]", 0x4ecb, 3 ], 
-  [ "BIT 1, L", 0x4dcb, 3 ], 
-  [ "BIT 2, A", 0x57cb, 3 ], 
-  [ "BIT 2, B", 0x50cb, 3 ], 
-  [ "BIT 2, C", 0x51cb, 3 ], 
-  [ "BIT 2, D", 0x52cb, 3 ], 
-  [ "BIT 2, E", 0x53cb, 3 ], 
-  [ "BIT 2, H", 0x54cb, 3 ], 
-  [ "BIT 2, [HL]", 0x56cb, 3 ], 
-  [ "BIT 2, L", 0x55cb, 3 ], 
-  [ "BIT 3, A", 0x5fcb, 3 ], 
-  [ "BIT 3, B", 0x58cb, 3 ], 
-  [ "BIT 3, C", 0x59cb, 3 ], 
-  [ "BIT 3, D", 0x5acb, 3 ], 
-  [ "BIT 3, E", 0x5bcb, 3 ], 
-  [ "BIT 3, H", 0x5ccb, 3 ], 
-  [ "BIT 3, [HL]", 0x5ecb, 3 ], 
-  [ "BIT 3, L", 0x5dcb, 3 ], 
-  [ "BIT 4, A", 0x67cb, 3 ], 
-  [ "BIT 4, B", 0x60cb, 3 ], 
-  [ "BIT 4, C", 0x61cb, 3 ], 
-  [ "BIT 4, D", 0x62cb, 3 ], 
-  [ "BIT 4, E", 0x63cb, 3 ], 
-  [ "BIT 4, H", 0x64cb, 3 ], 
-  [ "BIT 4, [HL]", 0x66cb, 3 ], 
-  [ "BIT 4, L", 0x65cb, 3 ], 
-  [ "BIT 5, A", 0x6fcb, 3 ], 
-  [ "BIT 5, B", 0x68cb, 3 ], 
-  [ "BIT 5, C", 0x69cb, 3 ], 
-  [ "BIT 5, D", 0x6acb, 3 ], 
-  [ "BIT 5, E", 0x6bcb, 3 ], 
-  [ "BIT 5, H", 0x6ccb, 3 ], 
-  [ "BIT 5, [HL]", 0x6ecb, 3 ], 
-  [ "BIT 5, L", 0x6dcb, 3 ], 
-  [ "BIT 6, A", 0x77cb, 3 ], 
-  [ "BIT 6, B", 0x70cb, 3 ], 
-  [ "BIT 6, C", 0x71cb, 3 ], 
-  [ "BIT 6, D", 0x72cb, 3 ], 
-  [ "BIT 6, E", 0x73cb, 3 ], 
-  [ "BIT 6, H", 0x74cb, 3 ], 
-  [ "BIT 6, [HL]", 0x76cb, 3 ], 
-  [ "BIT 6, L", 0x75cb, 3 ], 
-  [ "BIT 7, A", 0x7fcb, 3 ], 
-  [ "BIT 7, B", 0x78cb, 3 ], 
-  [ "BIT 7, C", 0x79cb, 3 ], 
-  [ "BIT 7, D", 0x7acb, 3 ], 
-  [ "BIT 7, E", 0x7bcb, 3 ], 
-  [ "BIT 7, H", 0x7ccb, 3 ], 
-  [ "BIT 7, [HL]", 0x7ecb, 3 ], 
-  [ "BIT 7, L", 0x7dcb, 3 ], 
-  [ "CALL C, ?", 0xdc, 2 ], 
-  [ "CALL NC, ?", 0xd4, 2 ], 
-  [ "CALL NZ, ?", 0xc4, 2 ], 
-  [ "CALL Z, ?", 0xcc, 2 ], 
-  [ "CALL ?", 0xcd, 2 ], 
-  [ "CCF", 0x3f, 0 ], 
-  [ "CP A", 0xbf, 0 ], 
-  [ "CP B", 0xb8, 0 ], 
-  [ "CP C", 0xb9, 0 ], 
-  [ "CP D", 0xba, 0 ], 
-  [ "CP E", 0xbb, 0 ], 
-  [ "CP H", 0xbc, 0 ], 
-  [ "CP [HL]", 0xbe, 0 ], 
-  [ "CPL", 0x2f, 0 ], 
-  [ "CP L", 0xbd, 0 ], 
-  [ "CP x", 0xfe, 1 ], 
-  [ "DAA", 0x27, 0 ], 
-  [ "DEBUG", 0xed, 0 ], 
-  [ "DEC A", 0x3d, 0 ], 
-  [ "DEC B", 0x5, 0 ], 
-  [ "DEC BC", 0xb, 0 ], 
-  [ "DEC C", 0xd, 0 ], 
-  [ "DEC D", 0x15, 0 ], 
-  [ "DEC DE", 0x1b, 0 ], 
-  [ "DEC E", 0x1d, 0 ], 
-  [ "DEC H", 0x25, 0 ], 
-  [ "DEC HL", 0x2b, 0 ], 
-  [ "DEC [HL]", 0x35, 0 ], 
-  [ "DEC L", 0x2d, 0 ], 
-  [ "DEC SP", 0x3b, 0 ], 
-  [ "DI", 0xf3, 0 ], 
-  [ "EI", 0xfb, 0 ], 
-  [ "HALT", 0x76, 0 ], 
-  [ "INC A", 0x3c, 0 ], 
-  [ "INC B", 0x4, 0 ], 
-  [ "INC BC", 0x3, 0 ], 
-  [ "INC C", 0xc, 0 ], 
-  [ "INC D", 0x14, 0 ], 
-  [ "INC DE", 0x13, 0 ], 
-  [ "INC E", 0x1c, 0 ], 
-  [ "INC H", 0x24, 0 ], 
-  [ "INC HL", 0x23, 0 ], 
-  [ "INC [HL]", 0x34, 0 ], 
-  [ "INC L", 0x2c, 0 ], 
-  [ "INC SP", 0x33, 0 ], 
-  [ "JP C, ?", 0xda, 2 ], 
-  [ "JP HL", 0xe9, 0 ], 
-  [ "JP NC, ?", 0xd2, 2 ], 
-  [ "JP NZ, ?", 0xc2, 2 ], 
-  [ "JP Z, ?", 0xca, 2 ], 
-  [ "JP ?", 0xc3, 2 ], 
-  [ "JR C, x", 0x38, 1 ], 
-  [ "JR NC, x", 0x30, 1 ], 
-  [ "JR NZ, x", 0x20, 1 ], 
-  [ "JR Z, x", 0x28, 1 ], 
-  [ "JR x", 0x18, 1 ], 
-  [ "LD A, A", 0x7f, 0 ], 
-  [ "LD A, B", 0x78, 0 ], 
-  [ "LD A, C", 0x79, 0 ], 
-  [ "LD A, D", 0x7a, 0 ], 
-  [ "LD A, E", 0x7b, 0 ], 
-  [ "LD A, H", 0x7c, 0 ], 
-  [ "LD A, L", 0x7d, 0 ], 
-  [ "LD A, [$FF00+C]", 0xf2, 0 ], 
-  [ "LD A, [$FF00+x]", 0xf0, 1 ], 
+  [ "ADC A", 0x8f, 0 ],
+  [ "ADC B", 0x88, 0 ],
+  [ "ADC C", 0x89, 0 ],
+  [ "ADC D", 0x8a, 0 ],
+  [ "ADC E", 0x8b, 0 ],
+  [ "ADC H", 0x8c, 0 ],
+  [ "ADC [HL]", 0x8e, 0 ],
+  [ "ADC L", 0x8d, 0 ],
+  [ "ADC x", 0xce, 1 ],
+  [ "ADD A", 0x87, 0 ],
+  [ "ADD B", 0x80, 0 ],
+  [ "ADD C", 0x81, 0 ],
+  [ "ADD D", 0x82, 0 ],
+  [ "ADD E", 0x83, 0 ],
+  [ "ADD H", 0x84, 0 ],
+  [ "ADD [HL]", 0x86, 0 ],
+  [ "ADD HL, BC", 0x9, 0 ],
+  [ "ADD HL, DE", 0x19, 0 ],
+  [ "ADD HL, HL", 0x29, 0 ],
+  [ "ADD HL, SP", 0x39, 0 ],
+  [ "ADD L", 0x85, 0 ],
+  [ "ADD SP, x", 0xe8, 1 ],
+  [ "ADD x", 0xc6, 1 ],
+  [ "AND A", 0xa7, 0 ],
+  [ "AND B", 0xa0, 0 ],
+  [ "AND C", 0xa1, 0 ],
+  [ "AND D", 0xa2, 0 ],
+  [ "AND E", 0xa3, 0 ],
+  [ "AND H", 0xa4, 0 ],
+  [ "AND [HL]", 0xa6, 0 ],
+  [ "AND L", 0xa5, 0 ],
+  [ "AND x", 0xe6, 1 ],
+  [ "BIT 0, A", 0x47cb, 3 ],
+  [ "BIT 0, B", 0x40cb, 3 ],
+  [ "BIT 0, C", 0x41cb, 3 ],
+  [ "BIT 0, D", 0x42cb, 3 ],
+  [ "BIT 0, E", 0x43cb, 3 ],
+  [ "BIT 0, H", 0x44cb, 3 ],
+  [ "BIT 0, [HL]", 0x46cb, 3 ],
+  [ "BIT 0, L", 0x45cb, 3 ],
+  [ "BIT 1, A", 0x4fcb, 3 ],
+  [ "BIT 1, B", 0x48cb, 3 ],
+  [ "BIT 1, C", 0x49cb, 3 ],
+  [ "BIT 1, D", 0x4acb, 3 ],
+  [ "BIT 1, E", 0x4bcb, 3 ],
+  [ "BIT 1, H", 0x4ccb, 3 ],
+  [ "BIT 1, [HL]", 0x4ecb, 3 ],
+  [ "BIT 1, L", 0x4dcb, 3 ],
+  [ "BIT 2, A", 0x57cb, 3 ],
+  [ "BIT 2, B", 0x50cb, 3 ],
+  [ "BIT 2, C", 0x51cb, 3 ],
+  [ "BIT 2, D", 0x52cb, 3 ],
+  [ "BIT 2, E", 0x53cb, 3 ],
+  [ "BIT 2, H", 0x54cb, 3 ],
+  [ "BIT 2, [HL]", 0x56cb, 3 ],
+  [ "BIT 2, L", 0x55cb, 3 ],
+  [ "BIT 3, A", 0x5fcb, 3 ],
+  [ "BIT 3, B", 0x58cb, 3 ],
+  [ "BIT 3, C", 0x59cb, 3 ],
+  [ "BIT 3, D", 0x5acb, 3 ],
+  [ "BIT 3, E", 0x5bcb, 3 ],
+  [ "BIT 3, H", 0x5ccb, 3 ],
+  [ "BIT 3, [HL]", 0x5ecb, 3 ],
+  [ "BIT 3, L", 0x5dcb, 3 ],
+  [ "BIT 4, A", 0x67cb, 3 ],
+  [ "BIT 4, B", 0x60cb, 3 ],
+  [ "BIT 4, C", 0x61cb, 3 ],
+  [ "BIT 4, D", 0x62cb, 3 ],
+  [ "BIT 4, E", 0x63cb, 3 ],
+  [ "BIT 4, H", 0x64cb, 3 ],
+  [ "BIT 4, [HL]", 0x66cb, 3 ],
+  [ "BIT 4, L", 0x65cb, 3 ],
+  [ "BIT 5, A", 0x6fcb, 3 ],
+  [ "BIT 5, B", 0x68cb, 3 ],
+  [ "BIT 5, C", 0x69cb, 3 ],
+  [ "BIT 5, D", 0x6acb, 3 ],
+  [ "BIT 5, E", 0x6bcb, 3 ],
+  [ "BIT 5, H", 0x6ccb, 3 ],
+  [ "BIT 5, [HL]", 0x6ecb, 3 ],
+  [ "BIT 5, L", 0x6dcb, 3 ],
+  [ "BIT 6, A", 0x77cb, 3 ],
+  [ "BIT 6, B", 0x70cb, 3 ],
+  [ "BIT 6, C", 0x71cb, 3 ],
+  [ "BIT 6, D", 0x72cb, 3 ],
+  [ "BIT 6, E", 0x73cb, 3 ],
+  [ "BIT 6, H", 0x74cb, 3 ],
+  [ "BIT 6, [HL]", 0x76cb, 3 ],
+  [ "BIT 6, L", 0x75cb, 3 ],
+  [ "BIT 7, A", 0x7fcb, 3 ],
+  [ "BIT 7, B", 0x78cb, 3 ],
+  [ "BIT 7, C", 0x79cb, 3 ],
+  [ "BIT 7, D", 0x7acb, 3 ],
+  [ "BIT 7, E", 0x7bcb, 3 ],
+  [ "BIT 7, H", 0x7ccb, 3 ],
+  [ "BIT 7, [HL]", 0x7ecb, 3 ],
+  [ "BIT 7, L", 0x7dcb, 3 ],
+  [ "CALL C, ?", 0xdc, 2 ],
+  [ "CALL NC, ?", 0xd4, 2 ],
+  [ "CALL NZ, ?", 0xc4, 2 ],
+  [ "CALL Z, ?", 0xcc, 2 ],
+  [ "CALL ?", 0xcd, 2 ],
+  [ "CCF", 0x3f, 0 ],
+  [ "CP A", 0xbf, 0 ],
+  [ "CP B", 0xb8, 0 ],
+  [ "CP C", 0xb9, 0 ],
+  [ "CP D", 0xba, 0 ],
+  [ "CP E", 0xbb, 0 ],
+  [ "CP H", 0xbc, 0 ],
+  [ "CP [HL]", 0xbe, 0 ],
+  [ "CPL", 0x2f, 0 ],
+  [ "CP L", 0xbd, 0 ],
+  [ "CP x", 0xfe, 1 ],
+  [ "DAA", 0x27, 0 ],
+  [ "DEBUG", 0xed, 0 ],
+  [ "DEC A", 0x3d, 0 ],
+  [ "DEC B", 0x5, 0 ],
+  [ "DEC BC", 0xb, 0 ],
+  [ "DEC C", 0xd, 0 ],
+  [ "DEC D", 0x15, 0 ],
+  [ "DEC DE", 0x1b, 0 ],
+  [ "DEC E", 0x1d, 0 ],
+  [ "DEC H", 0x25, 0 ],
+  [ "DEC HL", 0x2b, 0 ],
+  [ "DEC [HL]", 0x35, 0 ],
+  [ "DEC L", 0x2d, 0 ],
+  [ "DEC SP", 0x3b, 0 ],
+  [ "DI", 0xf3, 0 ],
+  [ "EI", 0xfb, 0 ],
+  [ "HALT", 0x76, 0 ],
+  [ "INC A", 0x3c, 0 ],
+  [ "INC B", 0x4, 0 ],
+  [ "INC BC", 0x3, 0 ],
+  [ "INC C", 0xc, 0 ],
+  [ "INC D", 0x14, 0 ],
+  [ "INC DE", 0x13, 0 ],
+  [ "INC E", 0x1c, 0 ],
+  [ "INC H", 0x24, 0 ],
+  [ "INC HL", 0x23, 0 ],
+  [ "INC [HL]", 0x34, 0 ],
+  [ "INC L", 0x2c, 0 ],
+  [ "INC SP", 0x33, 0 ],
+  [ "JP C, ?", 0xda, 2 ],
+  [ "JP HL", 0xe9, 0 ],
+  [ "JP NC, ?", 0xd2, 2 ],
+  [ "JP NZ, ?", 0xc2, 2 ],
+  [ "JP Z, ?", 0xca, 2 ],
+  [ "JP ?", 0xc3, 2 ],
+  [ "JR C, x", 0x38, 1 ],
+  [ "JR NC, x", 0x30, 1 ],
+  [ "JR NZ, x", 0x20, 1 ],
+  [ "JR Z, x", 0x28, 1 ],
+  [ "JR x", 0x18, 1 ],
+  [ "LD A, A", 0x7f, 0 ],
+  [ "LD A, B", 0x78, 0 ],
+  [ "LD A, C", 0x79, 0 ],
+  [ "LD A, D", 0x7a, 0 ],
+  [ "LD A, E", 0x7b, 0 ],
+  [ "LD A, H", 0x7c, 0 ],
+  [ "LD A, L", 0x7d, 0 ],
+  [ "LD A, [$FF00+C]", 0xf2, 0 ],
+  [ "LD A, [$FF00+x]", 0xf0, 1 ],
 #  [ "LDH A, [x]", 0xf0, 1 ], #rgbds has trouble with this one?
-  [ "LD A, [BC]", 0xa, 0 ], 
-  [ "LD A, [DE]", 0x1a, 0 ], 
-#  [ "LD A, [HL+]", 0x2a, 0 ], 
-#  [ "LD A, [HL-]", 0x3a, 0 ], 
-  [ "LD A, [HL]", 0x7e, 0 ], 
-  [ "LD A, [HLD]", 0x3a, 0 ], 
-  [ "LD A, [HLI]", 0x2a, 0 ], 
-  [ "LD A, [?]", 0xfa, 2 ], 
-  [ "LD A, x", 0x3e, 1 ], 
-  [ "LD B, A", 0x47, 0 ], 
-  [ "LD B, B", 0x40, 0 ], 
-  [ "LD B, C", 0x41, 0 ], 
-  [ "LD [BC], A", 0x2, 0 ], 
-  [ "LD B, D", 0x42, 0 ], 
-  [ "LD B, E", 0x43, 0 ], 
-  [ "LD B, H", 0x44, 0 ], 
-  [ "LD B, [HL]", 0x46, 0 ], 
-  [ "LD B, L", 0x45, 0 ], 
-  [ "LD B, x", 0x6, 1 ], 
-  [ "LD C, A", 0x4f, 0 ], 
-  [ "LD C, B", 0x48, 0 ], 
-  [ "LD C, C", 0x49, 0 ], 
-  [ "LD C, D", 0x4a, 0 ], 
-  [ "LD C, E", 0x4b, 0 ], 
-  [ "LD C, H", 0x4c, 0 ], 
-  [ "LD C, [HL]", 0x4e, 0 ], 
-  [ "LD C, L", 0x4d, 0 ], 
-  [ "LD C, x", 0xe, 1 ], 
-  [ "LD D, A", 0x57, 0 ], 
-#  [ "LDD A, [HL]", 0x3a, 0 ], 
-  [ "LD D, B", 0x50, 0 ], 
-  [ "LD D, C", 0x51, 0 ], 
-  [ "LD D, D", 0x52, 0 ], 
-  [ "LD D, E", 0x53, 0 ], 
-  [ "LD [DE], A", 0x12, 0 ], 
-  [ "LD D, H", 0x54, 0 ], 
-  [ "LD D, [HL]", 0x56, 0 ], 
-#  [ "LDD [HL], A", 0x32, 0 ], 
-  [ "LD D, L", 0x55, 0 ], 
-  [ "LD D, x", 0x16, 1 ], 
-  [ "LD E, A", 0x5f, 0 ], 
-  [ "LD E, B", 0x58, 0 ], 
-  [ "LD E, C", 0x59, 0 ], 
-  [ "LD E, D", 0x5a, 0 ], 
-  [ "LD E, E", 0x5b, 0 ], 
-  [ "LD E, H", 0x5c, 0 ], 
-  [ "LD E, [HL]", 0x5e, 0 ], 
-  [ "LD E, L", 0x5d, 0 ], 
-  [ "LD E, x", 0x1e, 1 ], 
-  [ "LD [$FF00+C], A", 0xe2, 0 ], 
-  [ "LD [$FF00+x], A", 0xe0, 1 ], 
-#  [ "LDH [x], A", 0xe0, 1 ], 
-  [ "LD H, A", 0x67, 0 ], 
-  [ "LD H, B", 0x60, 0 ], 
-  [ "LD H, C", 0x61, 0 ], 
-  [ "LD H, D", 0x62, 0 ], 
-  [ "LD H, E", 0x63, 0 ], 
-  [ "LD H, H", 0x64, 0 ], 
-  [ "LD H, [HL]", 0x66, 0 ], 
-  [ "LD H, L", 0x65, 0 ], 
-#  [ "LD [HL+], A", 0x22, 0 ], 
-#  [ "LD [HL-], A", 0x32, 0 ], 
-  [ "LD [HL], A", 0x77, 0 ], 
-  [ "LD [HL], B", 0x70, 0 ], 
-  [ "LD [HL], C", 0x71, 0 ], 
-  [ "LD [HL], D", 0x72, 0 ], 
-  [ "LD [HLD], A", 0x32, 0 ], 
-  [ "LD [HL], E", 0x73, 0 ], 
-  [ "LD [HL], H", 0x74, 0 ], 
-  [ "LD [HLI], A", 0x22, 0 ], 
-  [ "LD [HL], L", 0x75, 0 ], 
-  [ "LD HL, SP+x", 0xf8, 1 ], 
-  [ "LD [HL], x", 0x36, 1 ], 
-  [ "LD H, x", 0x26, 1 ], 
-#  [ "LDI A, [HL]", 0x2a, 0 ], 
-#  [ "LDI [HL], A", 0x22, 0 ], 
-  [ "LD L, A", 0x6f, 0 ], 
-  [ "LD L, B", 0x68, 0 ], 
-  [ "LD L, C", 0x69, 0 ], 
-  [ "LD L, D", 0x6a, 0 ], 
-  [ "LD L, E", 0x6b, 0 ], 
-  [ "LD L, H", 0x6c, 0 ], 
-  [ "LD L, [HL]", 0x6e, 0 ], 
-  [ "LD L, L", 0x6d, 0 ], 
-  [ "LD L, x", 0x2e, 1 ], 
+  [ "LD A, [BC]", 0xa, 0 ],
+  [ "LD A, [DE]", 0x1a, 0 ],
+#  [ "LD A, [HL+]", 0x2a, 0 ],
+#  [ "LD A, [HL-]", 0x3a, 0 ],
+  [ "LD A, [HL]", 0x7e, 0 ],
+  [ "LD A, [HLD]", 0x3a, 0 ],
+  [ "LD A, [HLI]", 0x2a, 0 ],
+  [ "LD A, [?]", 0xfa, 2 ],
+  [ "LD A, x", 0x3e, 1 ],
+  [ "LD B, A", 0x47, 0 ],
+  [ "LD B, B", 0x40, 0 ],
+  [ "LD B, C", 0x41, 0 ],
+  [ "LD [BC], A", 0x2, 0 ],
+  [ "LD B, D", 0x42, 0 ],
+  [ "LD B, E", 0x43, 0 ],
+  [ "LD B, H", 0x44, 0 ],
+  [ "LD B, [HL]", 0x46, 0 ],
+  [ "LD B, L", 0x45, 0 ],
+  [ "LD B, x", 0x6, 1 ],
+  [ "LD C, A", 0x4f, 0 ],
+  [ "LD C, B", 0x48, 0 ],
+  [ "LD C, C", 0x49, 0 ],
+  [ "LD C, D", 0x4a, 0 ],
+  [ "LD C, E", 0x4b, 0 ],
+  [ "LD C, H", 0x4c, 0 ],
+  [ "LD C, [HL]", 0x4e, 0 ],
+  [ "LD C, L", 0x4d, 0 ],
+  [ "LD C, x", 0xe, 1 ],
+  [ "LD D, A", 0x57, 0 ],
+#  [ "LDD A, [HL]", 0x3a, 0 ],
+  [ "LD D, B", 0x50, 0 ],
+  [ "LD D, C", 0x51, 0 ],
+  [ "LD D, D", 0x52, 0 ],
+  [ "LD D, E", 0x53, 0 ],
+  [ "LD [DE], A", 0x12, 0 ],
+  [ "LD D, H", 0x54, 0 ],
+  [ "LD D, [HL]", 0x56, 0 ],
+#  [ "LDD [HL], A", 0x32, 0 ],
+  [ "LD D, L", 0x55, 0 ],
+  [ "LD D, x", 0x16, 1 ],
+  [ "LD E, A", 0x5f, 0 ],
+  [ "LD E, B", 0x58, 0 ],
+  [ "LD E, C", 0x59, 0 ],
+  [ "LD E, D", 0x5a, 0 ],
+  [ "LD E, E", 0x5b, 0 ],
+  [ "LD E, H", 0x5c, 0 ],
+  [ "LD E, [HL]", 0x5e, 0 ],
+  [ "LD E, L", 0x5d, 0 ],
+  [ "LD E, x", 0x1e, 1 ],
+  [ "LD [$FF00+C], A", 0xe2, 0 ],
+  [ "LD [$FF00+x], A", 0xe0, 1 ],
+#  [ "LDH [x], A", 0xe0, 1 ],
+  [ "LD H, A", 0x67, 0 ],
+  [ "LD H, B", 0x60, 0 ],
+  [ "LD H, C", 0x61, 0 ],
+  [ "LD H, D", 0x62, 0 ],
+  [ "LD H, E", 0x63, 0 ],
+  [ "LD H, H", 0x64, 0 ],
+  [ "LD H, [HL]", 0x66, 0 ],
+  [ "LD H, L", 0x65, 0 ],
+#  [ "LD [HL+], A", 0x22, 0 ],
+#  [ "LD [HL-], A", 0x32, 0 ],
+  [ "LD [HL], A", 0x77, 0 ],
+  [ "LD [HL], B", 0x70, 0 ],
+  [ "LD [HL], C", 0x71, 0 ],
+  [ "LD [HL], D", 0x72, 0 ],
+  [ "LD [HLD], A", 0x32, 0 ],
+  [ "LD [HL], E", 0x73, 0 ],
+  [ "LD [HL], H", 0x74, 0 ],
+  [ "LD [HLI], A", 0x22, 0 ],
+  [ "LD [HL], L", 0x75, 0 ],
+  [ "LD HL, SP+x", 0xf8, 1 ],
+  [ "LD [HL], x", 0x36, 1 ],
+  [ "LD H, x", 0x26, 1 ],
+#  [ "LDI A, [HL]", 0x2a, 0 ],
+#  [ "LDI [HL], A", 0x22, 0 ],
+  [ "LD L, A", 0x6f, 0 ],
+  [ "LD L, B", 0x68, 0 ],
+  [ "LD L, C", 0x69, 0 ],
+  [ "LD L, D", 0x6a, 0 ],
+  [ "LD L, E", 0x6b, 0 ],
+  [ "LD L, H", 0x6c, 0 ],
+  [ "LD L, [HL]", 0x6e, 0 ],
+  [ "LD L, L", 0x6d, 0 ],
+  [ "LD L, x", 0x2e, 1 ],
 #  [ "LD PC, HL", 0xe9, 0 ], #prefer jp [hl]
-  [ "LD SP, HL", 0xf9, 0 ], 
-  [ "LD BC, ?", 0x1, 2 ], 
-  [ "LD DE, ?", 0x11, 2 ], 
-  [ "LD HL, ?", 0x21, 2 ], 
-  [ "LD SP, ?", 0x31, 2 ], 
-#  [ "LD [?], SP", 0x8, 2 ], 
-  [ "LD [?], A", 0xea, 2 ], 
-  [ "NOP", 0x0, 0 ], 
-  [ "OR A", 0xb7, 0 ], 
-  [ "OR B", 0xb0, 0 ], 
-  [ "OR C", 0xb1, 0 ], 
-  [ "OR D", 0xb2, 0 ], 
-  [ "OR E", 0xb3, 0 ], 
-  [ "OR H", 0xb4, 0 ], 
-  [ "OR [HL]", 0xb6, 0 ], 
-  [ "OR L", 0xb5, 0 ], 
-  [ "OR x", 0xf6, 1 ], 
-  [ "POP AF", 0xf1, 0 ], 
-  [ "POP BC", 0xc1, 0 ], 
-  [ "POP DE", 0xd1, 0 ], 
-  [ "POP HL", 0xe1, 0 ], 
-  [ "PUSH AF", 0xf5, 0 ], 
-  [ "PUSH BC", 0xc5, 0 ], 
-  [ "PUSH DE", 0xd5, 0 ], 
-  [ "PUSH HL", 0xe5, 0 ], 
-  [ "RES 0, A", 0x87cb, 3 ], 
-  [ "RES 0, B", 0x80cb, 3 ], 
-  [ "RES 0, C", 0x81cb, 3 ], 
-  [ "RES 0, D", 0x82cb, 3 ], 
-  [ "RES 0, E", 0x83cb, 3 ], 
-  [ "RES 0, H", 0x84cb, 3 ], 
-  [ "RES 0, [HL]", 0x86cb, 3 ], 
-  [ "RES 0, L", 0x85cb, 3 ], 
-  [ "RES 1, A", 0x8fcb, 3 ], 
-  [ "RES 1, B", 0x88cb, 3 ], 
-  [ "RES 1, C", 0x89cb, 3 ], 
-  [ "RES 1, D", 0x8acb, 3 ], 
-  [ "RES 1, E", 0x8bcb, 3 ], 
-  [ "RES 1, H", 0x8ccb, 3 ], 
-  [ "RES 1, [HL]", 0x8ecb, 3 ], 
-  [ "RES 1, L", 0x8dcb, 3 ], 
-  [ "RES 2, A", 0x97cb, 3 ], 
-  [ "RES 2, B", 0x90cb, 3 ], 
-  [ "RES 2, C", 0x91cb, 3 ], 
-  [ "RES 2, D", 0x92cb, 3 ], 
-  [ "RES 2, E", 0x93cb, 3 ], 
-  [ "RES 2, H", 0x94cb, 3 ], 
-  [ "RES 2, [HL]", 0x96cb, 3 ], 
-  [ "RES 2, L", 0x95cb, 3 ], 
-  [ "RES 3, A", 0x9fcb, 3 ], 
-  [ "RES 3, B", 0x98cb, 3 ], 
-  [ "RES 3, C", 0x99cb, 3 ], 
-  [ "RES 3, D", 0x9acb, 3 ], 
-  [ "RES 3, E", 0x9bcb, 3 ], 
-  [ "RES 3, H", 0x9ccb, 3 ], 
-  [ "RES 3, [HL]", 0x9ecb, 3 ], 
-  [ "RES 3, L", 0x9dcb, 3 ], 
-  [ "RES 4, A", 0xa7cb, 3 ], 
-  [ "RES 4, B", 0xa0cb, 3 ], 
-  [ "RES 4, C", 0xa1cb, 3 ], 
-  [ "RES 4, D", 0xa2cb, 3 ], 
-  [ "RES 4, E", 0xa3cb, 3 ], 
-  [ "RES 4, H", 0xa4cb, 3 ], 
-  [ "RES 4, [HL]", 0xa6cb, 3 ], 
-  [ "RES 4, L", 0xa5cb, 3 ], 
-  [ "RES 5, A", 0xafcb, 3 ], 
-  [ "RES 5, B", 0xa8cb, 3 ], 
-  [ "RES 5, C", 0xa9cb, 3 ], 
-  [ "RES 5, D", 0xaacb, 3 ], 
-  [ "RES 5, E", 0xabcb, 3 ], 
-  [ "RES 5, H", 0xaccb, 3 ], 
-  [ "RES 5, [HL]", 0xaecb, 3 ], 
-  [ "RES 5, L", 0xadcb, 3 ], 
-  [ "RES 6, A", 0xb7cb, 3 ], 
-  [ "RES 6, B", 0xb0cb, 3 ], 
-  [ "RES 6, C", 0xb1cb, 3 ], 
-  [ "RES 6, D", 0xb2cb, 3 ], 
-  [ "RES 6, E", 0xb3cb, 3 ], 
-  [ "RES 6, H", 0xb4cb, 3 ], 
-  [ "RES 6, [HL]", 0xb6cb, 3 ], 
-  [ "RES 6, L", 0xb5cb, 3 ], 
-  [ "RES 7, A", 0xbfcb, 3 ], 
-  [ "RES 7, B", 0xb8cb, 3 ], 
-  [ "RES 7, C", 0xb9cb, 3 ], 
-  [ "RES 7, D", 0xbacb, 3 ], 
-  [ "RES 7, E", 0xbbcb, 3 ], 
-  [ "RES 7, H", 0xbccb, 3 ], 
-  [ "RES 7, [HL]", 0xbecb, 3 ], 
-  [ "RES 7, L", 0xbdcb, 3 ], 
-  [ "RETI", 0xd9, 0 ], 
-  [ "RET C", 0xd8, 0 ], 
-  [ "RET NC", 0xd0, 0 ], 
-  [ "RET NZ", 0xc0, 0 ], 
-  [ "RET Z", 0xc8, 0 ], 
-  [ "RET", 0xc9, 0 ], 
-  [ "RLA", 0x17, 0 ], 
-  [ "RL A", 0x17cb, 3 ], 
-  [ "RL B", 0x10cb, 3 ], 
-  [ "RL C", 0x11cb, 3 ], 
-  [ "RLCA", 0x7, 0 ], 
-  [ "RLC A", 0x7cb, 3 ], 
-  [ "RLC B", 0xcb, 3 ], 
-  [ "RLC C", 0x1cb, 3 ], 
-  [ "RLC D", 0x2cb, 3 ], 
-  [ "RLC E", 0x3cb, 3 ], 
-  [ "RLC H", 0x4cb, 3 ], 
-  [ "RLC [HL]", 0x6cb, 3 ], 
-  [ "RLC L", 0x5cb, 3 ], 
-  [ "RL D", 0x12cb, 3 ], 
-  [ "RL E", 0x13cb, 3 ], 
-  [ "RL H", 0x14cb, 3 ], 
-  [ "RL [HL]", 0x16cb, 3 ], 
-  [ "RL L", 0x15cb, 3 ], 
-  [ "RRA", 0x1f, 0 ], 
-  [ "RR A", 0x1fcb, 3 ], 
-  [ "RR B", 0x18cb, 3 ], 
-  [ "RR C", 0x19cb, 3 ], 
-  [ "RRCA", 0xf, 0 ], 
-  [ "RRC A", 0xfcb, 3 ], 
-  [ "RRC B", 0x8cb, 3 ], 
-  [ "RRC C", 0x9cb, 3 ], 
-  [ "RRC D", 0xacb, 3 ], 
-  [ "RRC E", 0xbcb, 3 ], 
-  [ "RRC H", 0xccb, 3 ], 
-  [ "RRC [HL]", 0xecb, 3 ], 
-  [ "RRC L", 0xdcb, 3 ], 
-  [ "RR D", 0x1acb, 3 ], 
-  [ "RR E", 0x1bcb, 3 ], 
-  [ "RR H", 0x1ccb, 3 ], 
-  [ "RR [HL]", 0x1ecb, 3 ], 
-  [ "RR L", 0x1dcb, 3 ], 
-  [ "RST $0", 0xc7, 0 ], 
-  [ "RST $10", 0xd7, 0 ], 
-  [ "RST $18", 0xdf, 0 ], 
-  [ "RST $20", 0xe7, 0 ], 
-  [ "RST $28", 0xef, 0 ], 
-  [ "RST $30", 0xf7, 0 ], 
-  [ "RST $38", 0xff, 0 ], 
-  [ "RST $8", 0xcf, 0 ], 
-  [ "SBC A", 0x9f, 0 ], 
-  [ "SBC B", 0x98, 0 ], 
-  [ "SBC C", 0x99, 0 ], 
-  [ "SBC D", 0x9a, 0 ], 
-  [ "SBC E", 0x9b, 0 ], 
-  [ "SBC H", 0x9c, 0 ], 
-  [ "SBC [HL]", 0x9e, 0 ], 
-  [ "SBC L", 0x9d, 0 ], 
-  [ "SBC x", 0xde, 1 ], 
-  [ "SCF", 0x37, 0 ], 
-  [ "SET 0, A", 0xc7cb, 3 ], 
-  [ "SET 0, B", 0xc0cb, 3 ], 
-  [ "SET 0, C", 0xc1cb, 3 ], 
-  [ "SET 0, D", 0xc2cb, 3 ], 
-  [ "SET 0, E", 0xc3cb, 3 ], 
-  [ "SET 0, H", 0xc4cb, 3 ], 
-  [ "SET 0, [HL]", 0xc6cb, 3 ], 
-  [ "SET 0, L", 0xc5cb, 3 ], 
-  [ "SET 1, A", 0xcfcb, 3 ], 
-  [ "SET 1, B", 0xc8cb, 3 ], 
-  [ "SET 1, C", 0xc9cb, 3 ], 
-  [ "SET 1, D", 0xcacb, 3 ], 
-  [ "SET 1, E", 0xcbcb, 3 ], 
-  [ "SET 1, H", 0xcccb, 3 ], 
-  [ "SET 1, [HL]", 0xcecb, 3 ], 
-  [ "SET 1, L", 0xcdcb, 3 ], 
-  [ "SET 2, A", 0xd7cb, 3 ], 
-  [ "SET 2, B", 0xd0cb, 3 ], 
-  [ "SET 2, C", 0xd1cb, 3 ], 
-  [ "SET 2, D", 0xd2cb, 3 ], 
-  [ "SET 2, E", 0xd3cb, 3 ], 
-  [ "SET 2, H", 0xd4cb, 3 ], 
-  [ "SET 2, [HL]", 0xd6cb, 3 ], 
-  [ "SET 2, L", 0xd5cb, 3 ], 
-  [ "SET 3, A", 0xdfcb, 3 ], 
-  [ "SET 3, B", 0xd8cb, 3 ], 
-  [ "SET 3, C", 0xd9cb, 3 ], 
-  [ "SET 3, D", 0xdacb, 3 ], 
-  [ "SET 3, E", 0xdbcb, 3 ], 
-  [ "SET 3, H", 0xdccb, 3 ], 
-  [ "SET 3, [HL]", 0xdecb, 3 ], 
-  [ "SET 3, L", 0xddcb, 3 ], 
-  [ "SET 4, A", 0xe7cb, 3 ], 
-  [ "SET 4, B", 0xe0cb, 3 ], 
-  [ "SET 4, C", 0xe1cb, 3 ], 
-  [ "SET 4, D", 0xe2cb, 3 ], 
-  [ "SET 4, E", 0xe3cb, 3 ], 
-  [ "SET 4, H", 0xe4cb, 3 ], 
-  [ "SET 4, [HL]", 0xe6cb, 3 ], 
-  [ "SET 4, L", 0xe5cb, 3 ], 
-  [ "SET 5, A", 0xefcb, 3 ], 
-  [ "SET 5, B", 0xe8cb, 3 ], 
-  [ "SET 5, C", 0xe9cb, 3 ], 
-  [ "SET 5, D", 0xeacb, 3 ], 
-  [ "SET 5, E", 0xebcb, 3 ], 
-  [ "SET 5, H", 0xeccb, 3 ], 
-  [ "SET 5, [HL]", 0xeecb, 3 ], 
-  [ "SET 5, L", 0xedcb, 3 ], 
-  [ "SET 6, A", 0xf7cb, 3 ], 
-  [ "SET 6, B", 0xf0cb, 3 ], 
-  [ "SET 6, C", 0xf1cb, 3 ], 
-  [ "SET 6, D", 0xf2cb, 3 ], 
-  [ "SET 6, E", 0xf3cb, 3 ], 
-  [ "SET 6, H", 0xf4cb, 3 ], 
-  [ "SET 6, [HL]", 0xf6cb, 3 ], 
-  [ "SET 6, L", 0xf5cb, 3 ], 
-  [ "SET 7, A", 0xffcb, 3 ], 
-  [ "SET 7, B", 0xf8cb, 3 ], 
-  [ "SET 7, C", 0xf9cb, 3 ], 
-  [ "SET 7, D", 0xfacb, 3 ], 
-  [ "SET 7, E", 0xfbcb, 3 ], 
-  [ "SET 7, H", 0xfccb, 3 ], 
-  [ "SET 7, [HL]", 0xfecb, 3 ], 
-  [ "SET 7, L", 0xfdcb, 3 ], 
-  [ "SLA A", 0x27cb, 3 ], 
-  [ "SLA B", 0x20cb, 3 ], 
-  [ "SLA C", 0x21cb, 3 ], 
-  [ "SLA D", 0x22cb, 3 ], 
-  [ "SLA E", 0x23cb, 3 ], 
-  [ "SLA H", 0x24cb, 3 ], 
-  [ "SLA [HL]", 0x26cb, 3 ], 
-  [ "SLA L", 0x25cb, 3 ], 
-  [ "SRA A", 0x2fcb, 3 ], 
-  [ "SRA B", 0x28cb, 3 ], 
-  [ "SRA C", 0x29cb, 3 ], 
-  [ "SRA D", 0x2acb, 3 ], 
-  [ "SRA E", 0x2bcb, 3 ], 
-  [ "SRA H", 0x2ccb, 3 ], 
-  [ "SRA [HL]", 0x2ecb, 3 ], 
-  [ "SRA L", 0x2dcb, 3 ], 
-  [ "SRL A", 0x3fcb, 3 ], 
-  [ "SRL B", 0x38cb, 3 ], 
-  [ "SRL C", 0x39cb, 3 ], 
-  [ "SRL D", 0x3acb, 3 ], 
-  [ "SRL E", 0x3bcb, 3 ], 
-  [ "SRL H", 0x3ccb, 3 ], 
-  [ "SRL [HL]", 0x3ecb, 3 ], 
-  [ "SRL L", 0x3dcb, 3 ], 
-  [ "STOP", 0x10, 0 ], 
-  [ "SUB A", 0x97, 0 ], 
-  [ "SUB B", 0x90, 0 ], 
-  [ "SUB C", 0x91, 0 ], 
-  [ "SUB D", 0x92, 0 ], 
-  [ "SUB E", 0x93, 0 ], 
-  [ "SUB H", 0x94, 0 ], 
-  [ "SUB [HL]", 0x96, 0 ], 
-  [ "SUB L", 0x95, 0 ], 
-  [ "SUB x", 0xd6, 1 ], 
-  [ "SWAP A", 0x37cb, 3 ], 
-  [ "SWAP B", 0x30cb, 3 ], 
-  [ "SWAP C", 0x31cb, 3 ], 
-  [ "SWAP D", 0x32cb, 3 ], 
-  [ "SWAP E", 0x33cb, 3 ], 
-  [ "SWAP H", 0x34cb, 3 ], 
-  [ "SWAP [HL]", 0x36cb, 3 ], 
-  [ "SWAP L", 0x35cb, 3 ], 
-  [ "XOR A", 0xaf, 0 ], 
-  [ "XOR B", 0xa8, 0 ], 
-  [ "XOR C", 0xa9, 0 ], 
-  [ "XOR D", 0xaa, 0 ], 
-  [ "XOR E", 0xab, 0 ], 
-  [ "XOR H", 0xac, 0 ], 
-  [ "XOR [HL]", 0xae, 0 ], 
-  [ "XOR L", 0xad, 0 ], 
-  [ "XOR x", 0xee, 1 ], 
-  [ "E", 0x100, -1 ], 
+  [ "LD SP, HL", 0xf9, 0 ],
+  [ "LD BC, ?", 0x1, 2 ],
+  [ "LD DE, ?", 0x11, 2 ],
+  [ "LD HL, ?", 0x21, 2 ],
+  [ "LD SP, ?", 0x31, 2 ],
+#  [ "LD [?], SP", 0x8, 2 ],
+  [ "LD [?], A", 0xea, 2 ],
+  [ "NOP", 0x0, 0 ],
+  [ "OR A", 0xb7, 0 ],
+  [ "OR B", 0xb0, 0 ],
+  [ "OR C", 0xb1, 0 ],
+  [ "OR D", 0xb2, 0 ],
+  [ "OR E", 0xb3, 0 ],
+  [ "OR H", 0xb4, 0 ],
+  [ "OR [HL]", 0xb6, 0 ],
+  [ "OR L", 0xb5, 0 ],
+  [ "OR x", 0xf6, 1 ],
+  [ "POP AF", 0xf1, 0 ],
+  [ "POP BC", 0xc1, 0 ],
+  [ "POP DE", 0xd1, 0 ],
+  [ "POP HL", 0xe1, 0 ],
+  [ "PUSH AF", 0xf5, 0 ],
+  [ "PUSH BC", 0xc5, 0 ],
+  [ "PUSH DE", 0xd5, 0 ],
+  [ "PUSH HL", 0xe5, 0 ],
+  [ "RES 0, A", 0x87cb, 3 ],
+  [ "RES 0, B", 0x80cb, 3 ],
+  [ "RES 0, C", 0x81cb, 3 ],
+  [ "RES 0, D", 0x82cb, 3 ],
+  [ "RES 0, E", 0x83cb, 3 ],
+  [ "RES 0, H", 0x84cb, 3 ],
+  [ "RES 0, [HL]", 0x86cb, 3 ],
+  [ "RES 0, L", 0x85cb, 3 ],
+  [ "RES 1, A", 0x8fcb, 3 ],
+  [ "RES 1, B", 0x88cb, 3 ],
+  [ "RES 1, C", 0x89cb, 3 ],
+  [ "RES 1, D", 0x8acb, 3 ],
+  [ "RES 1, E", 0x8bcb, 3 ],
+  [ "RES 1, H", 0x8ccb, 3 ],
+  [ "RES 1, [HL]", 0x8ecb, 3 ],
+  [ "RES 1, L", 0x8dcb, 3 ],
+  [ "RES 2, A", 0x97cb, 3 ],
+  [ "RES 2, B", 0x90cb, 3 ],
+  [ "RES 2, C", 0x91cb, 3 ],
+  [ "RES 2, D", 0x92cb, 3 ],
+  [ "RES 2, E", 0x93cb, 3 ],
+  [ "RES 2, H", 0x94cb, 3 ],
+  [ "RES 2, [HL]", 0x96cb, 3 ],
+  [ "RES 2, L", 0x95cb, 3 ],
+  [ "RES 3, A", 0x9fcb, 3 ],
+  [ "RES 3, B", 0x98cb, 3 ],
+  [ "RES 3, C", 0x99cb, 3 ],
+  [ "RES 3, D", 0x9acb, 3 ],
+  [ "RES 3, E", 0x9bcb, 3 ],
+  [ "RES 3, H", 0x9ccb, 3 ],
+  [ "RES 3, [HL]", 0x9ecb, 3 ],
+  [ "RES 3, L", 0x9dcb, 3 ],
+  [ "RES 4, A", 0xa7cb, 3 ],
+  [ "RES 4, B", 0xa0cb, 3 ],
+  [ "RES 4, C", 0xa1cb, 3 ],
+  [ "RES 4, D", 0xa2cb, 3 ],
+  [ "RES 4, E", 0xa3cb, 3 ],
+  [ "RES 4, H", 0xa4cb, 3 ],
+  [ "RES 4, [HL]", 0xa6cb, 3 ],
+  [ "RES 4, L", 0xa5cb, 3 ],
+  [ "RES 5, A", 0xafcb, 3 ],
+  [ "RES 5, B", 0xa8cb, 3 ],
+  [ "RES 5, C", 0xa9cb, 3 ],
+  [ "RES 5, D", 0xaacb, 3 ],
+  [ "RES 5, E", 0xabcb, 3 ],
+  [ "RES 5, H", 0xaccb, 3 ],
+  [ "RES 5, [HL]", 0xaecb, 3 ],
+  [ "RES 5, L", 0xadcb, 3 ],
+  [ "RES 6, A", 0xb7cb, 3 ],
+  [ "RES 6, B", 0xb0cb, 3 ],
+  [ "RES 6, C", 0xb1cb, 3 ],
+  [ "RES 6, D", 0xb2cb, 3 ],
+  [ "RES 6, E", 0xb3cb, 3 ],
+  [ "RES 6, H", 0xb4cb, 3 ],
+  [ "RES 6, [HL]", 0xb6cb, 3 ],
+  [ "RES 6, L", 0xb5cb, 3 ],
+  [ "RES 7, A", 0xbfcb, 3 ],
+  [ "RES 7, B", 0xb8cb, 3 ],
+  [ "RES 7, C", 0xb9cb, 3 ],
+  [ "RES 7, D", 0xbacb, 3 ],
+  [ "RES 7, E", 0xbbcb, 3 ],
+  [ "RES 7, H", 0xbccb, 3 ],
+  [ "RES 7, [HL]", 0xbecb, 3 ],
+  [ "RES 7, L", 0xbdcb, 3 ],
+  [ "RETI", 0xd9, 0 ],
+  [ "RET C", 0xd8, 0 ],
+  [ "RET NC", 0xd0, 0 ],
+  [ "RET NZ", 0xc0, 0 ],
+  [ "RET Z", 0xc8, 0 ],
+  [ "RET", 0xc9, 0 ],
+  [ "RLA", 0x17, 0 ],
+  [ "RL A", 0x17cb, 3 ],
+  [ "RL B", 0x10cb, 3 ],
+  [ "RL C", 0x11cb, 3 ],
+  [ "RLCA", 0x7, 0 ],
+  [ "RLC A", 0x7cb, 3 ],
+  [ "RLC B", 0xcb, 3 ],
+  [ "RLC C", 0x1cb, 3 ],
+  [ "RLC D", 0x2cb, 3 ],
+  [ "RLC E", 0x3cb, 3 ],
+  [ "RLC H", 0x4cb, 3 ],
+  [ "RLC [HL]", 0x6cb, 3 ],
+  [ "RLC L", 0x5cb, 3 ],
+  [ "RL D", 0x12cb, 3 ],
+  [ "RL E", 0x13cb, 3 ],
+  [ "RL H", 0x14cb, 3 ],
+  [ "RL [HL]", 0x16cb, 3 ],
+  [ "RL L", 0x15cb, 3 ],
+  [ "RRA", 0x1f, 0 ],
+  [ "RR A", 0x1fcb, 3 ],
+  [ "RR B", 0x18cb, 3 ],
+  [ "RR C", 0x19cb, 3 ],
+  [ "RRCA", 0xf, 0 ],
+  [ "RRC A", 0xfcb, 3 ],
+  [ "RRC B", 0x8cb, 3 ],
+  [ "RRC C", 0x9cb, 3 ],
+  [ "RRC D", 0xacb, 3 ],
+  [ "RRC E", 0xbcb, 3 ],
+  [ "RRC H", 0xccb, 3 ],
+  [ "RRC [HL]", 0xecb, 3 ],
+  [ "RRC L", 0xdcb, 3 ],
+  [ "RR D", 0x1acb, 3 ],
+  [ "RR E", 0x1bcb, 3 ],
+  [ "RR H", 0x1ccb, 3 ],
+  [ "RR [HL]", 0x1ecb, 3 ],
+  [ "RR L", 0x1dcb, 3 ],
+  [ "RST $0", 0xc7, 0 ],
+  [ "RST $10", 0xd7, 0 ],
+  [ "RST $18", 0xdf, 0 ],
+  [ "RST $20", 0xe7, 0 ],
+  [ "RST $28", 0xef, 0 ],
+  [ "RST $30", 0xf7, 0 ],
+  [ "RST $38", 0xff, 0 ],
+  [ "RST $8", 0xcf, 0 ],
+  [ "SBC A", 0x9f, 0 ],
+  [ "SBC B", 0x98, 0 ],
+  [ "SBC C", 0x99, 0 ],
+  [ "SBC D", 0x9a, 0 ],
+  [ "SBC E", 0x9b, 0 ],
+  [ "SBC H", 0x9c, 0 ],
+  [ "SBC [HL]", 0x9e, 0 ],
+  [ "SBC L", 0x9d, 0 ],
+  [ "SBC x", 0xde, 1 ],
+  [ "SCF", 0x37, 0 ],
+  [ "SET 0, A", 0xc7cb, 3 ],
+  [ "SET 0, B", 0xc0cb, 3 ],
+  [ "SET 0, C", 0xc1cb, 3 ],
+  [ "SET 0, D", 0xc2cb, 3 ],
+  [ "SET 0, E", 0xc3cb, 3 ],
+  [ "SET 0, H", 0xc4cb, 3 ],
+  [ "SET 0, [HL]", 0xc6cb, 3 ],
+  [ "SET 0, L", 0xc5cb, 3 ],
+  [ "SET 1, A", 0xcfcb, 3 ],
+  [ "SET 1, B", 0xc8cb, 3 ],
+  [ "SET 1, C", 0xc9cb, 3 ],
+  [ "SET 1, D", 0xcacb, 3 ],
+  [ "SET 1, E", 0xcbcb, 3 ],
+  [ "SET 1, H", 0xcccb, 3 ],
+  [ "SET 1, [HL]", 0xcecb, 3 ],
+  [ "SET 1, L", 0xcdcb, 3 ],
+  [ "SET 2, A", 0xd7cb, 3 ],
+  [ "SET 2, B", 0xd0cb, 3 ],
+  [ "SET 2, C", 0xd1cb, 3 ],
+  [ "SET 2, D", 0xd2cb, 3 ],
+  [ "SET 2, E", 0xd3cb, 3 ],
+  [ "SET 2, H", 0xd4cb, 3 ],
+  [ "SET 2, [HL]", 0xd6cb, 3 ],
+  [ "SET 2, L", 0xd5cb, 3 ],
+  [ "SET 3, A", 0xdfcb, 3 ],
+  [ "SET 3, B", 0xd8cb, 3 ],
+  [ "SET 3, C", 0xd9cb, 3 ],
+  [ "SET 3, D", 0xdacb, 3 ],
+  [ "SET 3, E", 0xdbcb, 3 ],
+  [ "SET 3, H", 0xdccb, 3 ],
+  [ "SET 3, [HL]", 0xdecb, 3 ],
+  [ "SET 3, L", 0xddcb, 3 ],
+  [ "SET 4, A", 0xe7cb, 3 ],
+  [ "SET 4, B", 0xe0cb, 3 ],
+  [ "SET 4, C", 0xe1cb, 3 ],
+  [ "SET 4, D", 0xe2cb, 3 ],
+  [ "SET 4, E", 0xe3cb, 3 ],
+  [ "SET 4, H", 0xe4cb, 3 ],
+  [ "SET 4, [HL]", 0xe6cb, 3 ],
+  [ "SET 4, L", 0xe5cb, 3 ],
+  [ "SET 5, A", 0xefcb, 3 ],
+  [ "SET 5, B", 0xe8cb, 3 ],
+  [ "SET 5, C", 0xe9cb, 3 ],
+  [ "SET 5, D", 0xeacb, 3 ],
+  [ "SET 5, E", 0xebcb, 3 ],
+  [ "SET 5, H", 0xeccb, 3 ],
+  [ "SET 5, [HL]", 0xeecb, 3 ],
+  [ "SET 5, L", 0xedcb, 3 ],
+  [ "SET 6, A", 0xf7cb, 3 ],
+  [ "SET 6, B", 0xf0cb, 3 ],
+  [ "SET 6, C", 0xf1cb, 3 ],
+  [ "SET 6, D", 0xf2cb, 3 ],
+  [ "SET 6, E", 0xf3cb, 3 ],
+  [ "SET 6, H", 0xf4cb, 3 ],
+  [ "SET 6, [HL]", 0xf6cb, 3 ],
+  [ "SET 6, L", 0xf5cb, 3 ],
+  [ "SET 7, A", 0xffcb, 3 ],
+  [ "SET 7, B", 0xf8cb, 3 ],
+  [ "SET 7, C", 0xf9cb, 3 ],
+  [ "SET 7, D", 0xfacb, 3 ],
+  [ "SET 7, E", 0xfbcb, 3 ],
+  [ "SET 7, H", 0xfccb, 3 ],
+  [ "SET 7, [HL]", 0xfecb, 3 ],
+  [ "SET 7, L", 0xfdcb, 3 ],
+  [ "SLA A", 0x27cb, 3 ],
+  [ "SLA B", 0x20cb, 3 ],
+  [ "SLA C", 0x21cb, 3 ],
+  [ "SLA D", 0x22cb, 3 ],
+  [ "SLA E", 0x23cb, 3 ],
+  [ "SLA H", 0x24cb, 3 ],
+  [ "SLA [HL]", 0x26cb, 3 ],
+  [ "SLA L", 0x25cb, 3 ],
+  [ "SRA A", 0x2fcb, 3 ],
+  [ "SRA B", 0x28cb, 3 ],
+  [ "SRA C", 0x29cb, 3 ],
+  [ "SRA D", 0x2acb, 3 ],
+  [ "SRA E", 0x2bcb, 3 ],
+  [ "SRA H", 0x2ccb, 3 ],
+  [ "SRA [HL]", 0x2ecb, 3 ],
+  [ "SRA L", 0x2dcb, 3 ],
+  [ "SRL A", 0x3fcb, 3 ],
+  [ "SRL B", 0x38cb, 3 ],
+  [ "SRL C", 0x39cb, 3 ],
+  [ "SRL D", 0x3acb, 3 ],
+  [ "SRL E", 0x3bcb, 3 ],
+  [ "SRL H", 0x3ccb, 3 ],
+  [ "SRL [HL]", 0x3ecb, 3 ],
+  [ "SRL L", 0x3dcb, 3 ],
+  [ "STOP", 0x10, 0 ],
+  [ "SUB A", 0x97, 0 ],
+  [ "SUB B", 0x90, 0 ],
+  [ "SUB C", 0x91, 0 ],
+  [ "SUB D", 0x92, 0 ],
+  [ "SUB E", 0x93, 0 ],
+  [ "SUB H", 0x94, 0 ],
+  [ "SUB [HL]", 0x96, 0 ],
+  [ "SUB L", 0x95, 0 ],
+  [ "SUB x", 0xd6, 1 ],
+  [ "SWAP A", 0x37cb, 3 ],
+  [ "SWAP B", 0x30cb, 3 ],
+  [ "SWAP C", 0x31cb, 3 ],
+  [ "SWAP D", 0x32cb, 3 ],
+  [ "SWAP E", 0x33cb, 3 ],
+  [ "SWAP H", 0x34cb, 3 ],
+  [ "SWAP [HL]", 0x36cb, 3 ],
+  [ "SWAP L", 0x35cb, 3 ],
+  [ "XOR A", 0xaf, 0 ],
+  [ "XOR B", 0xa8, 0 ],
+  [ "XOR C", 0xa9, 0 ],
+  [ "XOR D", 0xaa, 0 ],
+  [ "XOR E", 0xab, 0 ],
+  [ "XOR H", 0xac, 0 ],
+  [ "XOR [HL]", 0xae, 0 ],
+  [ "XOR L", 0xad, 0 ],
+  [ "XOR x", 0xee, 1 ],
+  [ "E", 0x100, -1 ],
 ]
 
 #find conflicts
@@ -545,7 +546,7 @@
 0xc9, #ret
 ###0xda, 0xe9, 0xd2, 0xc2, 0xca, 0xc3, 0x38, 0x30, 0x20, 0x28, 0x18, 0xd8, 0xd0, 0xc0, 0xc8, 0xc9
 ]
-relative_jumps = [0x38, 0x30, 0x20, 0x28, 0x18]
+relative_jumps = [0x38, 0x30, 0x20, 0x28, 0x18, 0xc3]
 relative_unconditional_jumps = [0xc3, 0x18]
 
 #TODO: replace call and a pointer with call and a label
@@ -562,11 +563,16 @@
     "3e6d": "Predef", #library of pre-defined asm routines
     "00b5": "CopyData",
     "2ff3": "GetMachineName",
+    "24d7": "TextScriptEnd",
 }
 
 def random_asm_label():
     return ".ASM_" + random_hash()
 
+def asm_label(address):
+    # why using a random value when you can use the eff. address?
+    return ".ASM_" + hex(address)[2:]
+
 def output_bank_opcodes(original_offset, max_byte_count=0x4000):
     #fs = current_address
     #b = bank_byte
@@ -576,15 +582,19 @@
     #ad = end_address
     #a, oa = current_byte_number
 
+    last_hl_address = None #for when we're scanning the main map script
+    last_a_address = None
+    used_3d97 = False
+
     rom = extract_maps.rom
     offset = original_offset
     current_byte_number = 0 #start from the beginning
-    
+
     #we don't actually have an end address, but we'll just say $4000
     end_address = original_offset + max_byte_count
 
     byte_labels = {}
-    
+
     output = ""
     keep_reading = True
     while offset <= end_address and keep_reading:
@@ -599,11 +609,12 @@
             line_label = byte_labels[offset]["name"]
             byte_labels[offset]["usage"] += 1
         else:
-            line_label = random_asm_label()
+            line_label = asm_label(offset)
             byte_labels[offset] = {}
             byte_labels[offset]["name"] = line_label
             byte_labels[offset]["usage"] = 0
-        output += line_label.lower() + " ; " + hex(offset) + "\n"
+        byte_labels[offset]["definition"] = True
+        output += line_label.lower() + "\n" #" ; " + hex(offset) + "\n"
 
         #find out if there's a two byte key like this
         temp_maybe = maybe_byte
@@ -610,12 +621,12 @@
         temp_maybe += ( ord(rom[offset+1]) << 8)
         if temp_maybe in opt_table.keys() and ord(rom[offset+1])!=0:
             opstr = opt_table[temp_maybe][0].lower()
-            
+
             if "x" in opstr:
                 for x in range(0, opstr.count("x")):
                     insertion = ord(rom[offset + 1])
                     insertion = "$" + hex(insertion)[2:]
-            
+
                     opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower()
 
                     current_byte += 1
@@ -624,12 +635,12 @@
                 for y in range(0, opstr.count("?")):
                     byte1 = ord(rom[offset + 1])
                     byte2 = ord(rom[offset + 2])
-                    
+
                     number = byte1
                     number += byte2 << 8;
 
                     insertion = "$%.4x" % (number)
-                    
+
                     opstr = opstr[:opstr.find("?")].lower() + insertion + opstr[opstr.find("?")+1:].lower()
 
                     current_byte_number += 2
@@ -644,7 +655,7 @@
             op_code = opt_table[maybe_byte]
             op_code_type = op_code[1]
             op_code_byte = maybe_byte
-            
+
             #type = -1 when it's the E op
             #if op_code_type != -1:
             if   op_code_type == 0 and ord(rom[offset]) == op_code_byte:
@@ -652,7 +663,7 @@
 
                 output += spacing + op_code[0].lower() #+ " ; " + hex(offset)
                 output += "\n"
-                
+
                 offset += 1
                 current_byte_number += 1
             elif op_code_type == 1 and ord(rom[offset]) == op_code_byte:
@@ -666,21 +677,24 @@
 
                     if current_byte == 0x18 or current_byte==0x20 or current_byte in relative_jumps: #jr or jr nz
                         #generate a label for the byte we're jumping to
-                        target_address = offset + 2 + ord(rom[offset + 1])
+                        target_address = offset + 2 + c_int8(ord(rom[offset + 1])).value
                         if target_address in byte_labels.keys():
                             byte_labels[target_address]["usage"] = 1 + byte_labels[target_address]["usage"]
                             line_label2 = byte_labels[target_address]["name"]
                         else:
-                            line_label2 = random_asm_label()
+                            line_label2 = asm_label(target_address)
                             byte_labels[target_address] = {}
                             byte_labels[target_address]["name"] = line_label2
                             byte_labels[target_address]["usage"] = 1
-                        
+                            byte_labels[target_address]["definition"] = False
+
                         insertion = line_label2.lower()
                         include_comment = True
+                    elif current_byte == 0x3e:
+                        last_a_address = ord(rom[offset + 1])
 
                     opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower()
-                    output += spacing + opstr 
+                    output += spacing + opstr
                     if include_comment:
                         output += " ; " + hex(offset)
                         if current_byte in relative_jumps:
@@ -687,7 +701,7 @@
                             output += " $" + hex(ord(rom[offset + 1]))[2:]
                     output += "\n"
 
-                    current_byte_number += 1 
+                    current_byte_number += 1
                     offset += 1
                     insertion = ""
 
@@ -701,7 +715,7 @@
                 for x in range(0, qes):
                     byte1 = ord(rom[offset + 1])
                     byte2 = ord(rom[offset + 2])
-                    
+
                     number = byte1
                     number += byte2 << 8;
 
@@ -709,7 +723,7 @@
                     if maybe_byte in call_commands:
                         if insertion[1:] in asm_commands:
                             insertion = asm_commands[insertion[1:]]
-                    
+
                     opstr = opstr[:opstr.find("?")].lower() + insertion + opstr[opstr.find("?")+1:].lower()
                     output += spacing + opstr #+ " ; " + hex(offset)
                     output += "\n"
@@ -720,8 +734,15 @@
                 current_byte_number += 1
                 offset += 1
 
+                if current_byte == 0x21:
+                    last_hl_address = byte1 + (byte2 << 8)
+                if current_byte == 0xcd:
+                    if number == 0x3d97: used_3d97 = True
+
                 #duck out if this is jp $24d7
                 if current_byte == 0xc3 or current_byte in relative_unconditional_jumps:
+                    if current_byte == 0xc3:
+                        if number == 0x3d97: used_3d97 = True
                     #if number == 0x24d7: #jp
                     if not has_outstanding_labels(byte_labels):
                         keep_reading = False
@@ -731,12 +752,12 @@
                 is_data = True
 
             #stop reading at a jump, relative jump or return
-            if current_byte in end_08_scripts_with:
-                if not has_outstanding_labels(byte_labels):
+            if current_byte in end_08_scripts_with or (current_byte == 0x18 and target_address < offset):
+                if not has_outstanding_labels(byte_labels) or (current_byte == 0x18 and target_address < offset):
                     keep_reading = False
                     is_data = False #cleanup
                     break
-        else:                
+        else:
 #        if is_data and keep_reading:
             output += spacing + "db $" + hex(ord(rom[offset]))[2:] #+ " ; " + hex(offset)
             output += "\n"
@@ -753,12 +774,12 @@
         address = label_line
         label_line = byte_labels[label_line]
         if label_line["usage"] == 0:
-            output = output.replace((label_line["name"] + " ; " + hex(address) + "\n").lower(), "")
+            output = output.replace((label_line["name"] + "\n").lower(), "")
 
     #add the offset of the final location
     output += "; " + hex(offset)
 
-    return (output, offset)
+    return (output, offset, last_hl_address, last_a_address, used_3d97)
 
 def has_outstanding_labels(byte_labels):
     """
@@ -766,7 +787,7 @@
     """
     for label_line in byte_labels.keys():
         real_line = byte_labels[label_line]
-        if real_line["usage"] == 1: return True
+        if real_line["definition"] == False: return True
     return False
 
 def text_asm_pretty_printer(label, address_of_08, include_08=True):
--- a/extras/insert_texts.py
+++ b/extras/insert_texts.py
@@ -3,12 +3,12 @@
 #date: 2012-01-07
 #insert TX_FAR targets into pokered.asm
 import extract_maps
-from analyze_texts import analyze_texts
+from analyze_texts import analyze_texts, text_pretty_printer_at
 from pretty_map_headers import map_name_cleaner, make_text_label, map_constants, find_all_tx_fars, tx_far_pretty_printer, tx_far_label_maker
 import pretty_map_headers
 from analyze_incbins import asm, offset_to_pointer, find_incbin_to_replace_for, split_incbin_line_into_three, generate_diff_insert, load_asm, isolate_incbins, process_incbins, reset_incbins, apply_diff
 import analyze_incbins
-from gbz80disasm import text_asm_pretty_printer
+from gbz80disasm import text_asm_pretty_printer, output_bank_opcodes
 import os, sys
 import subprocess
 spacing = "    "
@@ -106,7 +106,7 @@
 def texts_label_pretty_printer(map_id):
     "output a texts label for map if all texts are TX_FARs and in the asm already"
     #extract_maps.map_headers[map_id]["texts"][text_id][0]["TX_FAR"]
-    if not all_texts_are_tx_fars(map_id): return None
+    #if not all_texts_are_tx_fars(map_id): return None
     map2 = extract_maps.map_headers[map_id]
 
     #pointer to the list of texts
@@ -139,7 +139,7 @@
     return output
 
 def insert_texts_label(map_id):
-    if not all_texts_are_tx_fars(map_id): return None
+    #if not all_texts_are_tx_fars(map_id): return None
     map2 = extract_maps.map_headers[map_id]
     
     base_label = map_name_cleaner(map2["name"], None)[:-2]
@@ -359,16 +359,22 @@
         isolate_incbins()
         process_incbins()
 
-def insert_asm(start_address, label):
-    (text_asm, end_address) = text_asm_pretty_printer(label, start_address, include_08=False)
-    print "end address is: " + hex(end_address)
+def insert_asm(start_address, label, text_asm=None, end_address=None):
+    if text_asm == None and end_address == None:
+        (text_asm, end_address) = text_asm_pretty_printer(label, start_address, include_08=False)
+        print "end address is: " + hex(end_address)
 
     #find where to insert the assembly
     line_number = find_incbin_to_replace_for(start_address)
     if line_number == None:
         print "skipping asm because the address is taken"
-        return
+        return False
 
+    #name check
+    if (label + ":") in "\n".join(analyze_incbins.asm):
+        print "skipping asm because the label is taken"
+        return False
+
     newlines = split_incbin_line_into_three(line_number, start_address, end_address - start_address )
     
     newlines = newlines.split("\n")
@@ -387,8 +393,199 @@
 
     diff = generate_diff_insert(line_number, newlines)
     print diff
-    result = apply_diff(diff, try_fixing=False)
+    result = apply_diff(diff, try_fixing=True)
+    return True
 
+def insert_text(address, label):
+    "inserts a text script (but not $8s)"
+    start_address = address
+
+    line_number = find_incbin_to_replace_for(start_address)
+    if line_number == None:
+        print "skipping text at " + hex(start_address) + " with address " + label
+        return
+
+    text_asm, byte_count = text_pretty_printer_at(start_address, label)
+    end_address = start_address + byte_count
+    newlines = split_incbin_line_into_three(line_number, start_address, byte_count)
+
+    newlines = newlines.split("\n")
+    if len(newlines) == 2: index = 0 #replace the 1st line with new content
+    elif len(newlines) == 3: index = 1 #replace the 2nd line with new content
+    
+    newlines[index] = text_asm
+
+    if len(newlines) == 3 and newlines[2][-2:] == "$0":
+        #get rid of the last incbin line if it is only including 0 bytes
+        del newlines[2]
+        #note that this has to be done after adding in the new asm
+    newlines = "\n".join(line for line in newlines)
+    newlines = newlines.replace("$x", "$") #where does this keep coming from??
+
+    #Char52 doesn't work yet
+    newlines = newlines.replace("Char52", "$52")
+
+    diff = generate_diff_insert(line_number, newlines)
+    print diff
+    #apply_diff(diff)
+
+#move this into another file?
+def scan_for_map_scripts_pointer():
+    for map_id in extract_maps.map_headers.keys(): #skip id=0 (Pallet Town) because the naming conventions are wonky
+        map2 = extract_maps.map_headers[map_id]
+        if map_id in extract_maps.bad_maps or map_id in [0, 39, 37, 38]: continue #skip
+        script_pointer = int(map2["script_pointer"], 16)
+
+        main_asm_output, offset, last_hl_address, last_a_address, used_3d97 = output_bank_opcodes(script_pointer)
+        hl_pointer = "None"
+        
+        first_script_text = ""
+        if last_hl_address != None and last_hl_address != "None" and used_3d97==True:
+            if last_hl_address > 0x3fff:
+                hl_pointer = extract_maps.calculate_pointer(last_hl_address, int(map2["bank"], 16))
+            else:
+                hl_pointer = last_hl_address
+            byte1 = ord(extract_maps.rom[hl_pointer])
+            byte2 = ord(extract_maps.rom[hl_pointer+1])
+            address = byte1 + (byte2 << 8)
+
+            if address > 0x3fff:
+                first_script_pointer = extract_maps.calculate_pointer(address, int(map2["bank"], 16))
+            else:
+                first_script_pointer = address
+
+            #for later output
+            first_script_text = " first_script=" + hex(first_script_pointer)
+
+            #go ahead and insert this script pointer
+            insert_asm(first_script_pointer, map_name_cleaner(map2["name"], None)[:-2] + "Script0")
+            
+            #reset everything
+            #analyze_incbins.reset_incbins()
+            asm = None
+            incbin_lines = []
+            processed_incbins = {}
+            analyze_incbins.asm = None
+            analyze_incbins.incbin_lines = []
+            analyze_incbins.processed_incbins = {}
+    
+            #reload
+            load_asm()
+            isolate_incbins()
+            process_incbins()
+
+            a_numbers = [0]
+            last_a_id = 0
+            script_pointers = [hex(first_script_pointer)]
+            latest_script_pointer = first_script_pointer
+            while last_a_id == (max(a_numbers)) or last_a_id==0:
+                asm_output, offset, last_hl_address2, last_a_id, byte1, byte2, address = None, None, None, None, None, None, None
+                asm_output, offset, last_hl_address2, last_a_id, used_3d97_2 = output_bank_opcodes(latest_script_pointer)
+                
+                if last_a_id == (max(a_numbers) + 1):
+                    a_numbers.append(last_a_id)
+                else:
+                    break
+                
+                byte1 = ord(extract_maps.rom[hl_pointer + (2*last_a_id)])
+                byte2 = ord(extract_maps.rom[hl_pointer + (2*last_a_id) + 1])
+                address2 = byte1 + (byte2 << 8)
+                if address2 > 0x3fff:
+                    latest_script_pointer = extract_maps.calculate_pointer(address2, int(map2["bank"], 16))
+                else:
+                    latest_script_pointer = address2
+
+                script_pointers.append(hex(latest_script_pointer))
+                #print "latest script pointer (part 1): " + hex(address2)
+                #print "latest script pointer: " + hex(latest_script_pointer)
+
+                #go ahead and insert the asm for this script
+                result = insert_asm(latest_script_pointer, map_name_cleaner(map2["name"], None)[:-2] + "Script" + str(len(script_pointers) - 1))
+                
+                if result:
+                    #reset everything
+                    #analyze_incbins.reset_incbins()
+                    asm = None
+                    incbin_lines = []
+                    processed_incbins = {}
+                    analyze_incbins.asm = None
+                    analyze_incbins.incbin_lines = []
+                    analyze_incbins.processed_incbins = {}
+            
+                    #reload
+                    load_asm()
+                    isolate_incbins()
+                    process_incbins()
+
+            print "map_id=" + str(map_id) + " scripts are: " + str(script_pointers)
+        
+        if last_hl_address == None: last_hl_address = "None"
+        else: last_hl_address = hex(last_hl_address)
+
+        if hl_pointer != None and hl_pointer != "None": hl_pointer = hex(hl_pointer)
+
+        print "map_id=" + str(map_id) + " " + map2["name"] + " script_pointer=" + hex(script_pointer) + " script_pointers=" + hl_pointer + first_script_text
+        print main_asm_output
+        print "\n\n"
+
+        #insert asm for the main script
+        result = insert_asm(script_pointer, map_name_cleaner(map2["name"], None)[:-2] + "Script")
+        
+        if result:
+            #reset everything
+            #analyze_incbins.reset_incbins()
+            asm = None
+            incbin_lines = []
+            processed_incbins = {}
+            analyze_incbins.asm = None
+            analyze_incbins.incbin_lines = []
+            analyze_incbins.processed_incbins = {}
+    
+            #reload
+            load_asm()
+            isolate_incbins()
+            process_incbins()
+
+        #insert script pointer list asm if there's anything of value
+        if hl_pointer != None and hl_pointer != "None" and used_3d97==True:
+            start_address = int(hl_pointer, 16) #where to insert this list
+            total_size = len(a_numbers) * 2
+            
+            script_label = map_name_cleaner(map2["name"], None)[:-2] + "Script"
+            scripts_label = script_label  + "s"
+            script_asm = scripts_label + ": ; " + hex(start_address) + "\n"
+            script_asm += spacing + "dw"
+
+            first = True
+            for id in a_numbers:
+                if first:
+                    script_asm += " "
+                    first = False
+                else:
+                    script_asm += ", "
+                script_asm += script_label + str(id)
+            script_asm += "\n" #extra newline?
+
+            result = insert_asm(start_address, scripts_label, text_asm=script_asm, end_address=start_address + total_size)
+            if result:
+                #reset everything
+                #analyze_incbins.reset_incbins()
+                asm = None
+                incbin_lines = []
+                processed_incbins = {}
+                analyze_incbins.asm = None
+                analyze_incbins.incbin_lines = []
+                analyze_incbins.processed_incbins = {}
+        
+                #reload
+                load_asm()
+                isolate_incbins()
+                process_incbins()
+            else:
+                print "trouble inserting map script pointer list"
+                print script_asm
+                sys.exit(0)
+
 if __name__ == "__main__":
     #load map headers and object data
     extract_maps.load_rom()
@@ -403,6 +600,8 @@
     #load incbins
     reset_incbins()
 
+    scan_for_map_scripts_pointer()
+
     #insert _ViridianCityText10
     #insert_tx_far(1, 10)
 
@@ -426,24 +625,10 @@
     #insert_08_asm(83, 1)
     #insert_all_08s()
 
-    #insert_asm(0x758df, "CinnabarGymText1")
+    #insert_asm(0x1da56, "NameRaterText1")
+    #insert_text_label_tx_far(91, 1)
 
-    #insert_text_label_tx_far(95, 1)
-    missed_17s = [] #[[95, 1], [95, 2], [96, 1], [97, 1], [99, 1], [99, 2], [99, 3], [100, 1], [100, 2], [100, 3], [100, 4], [100, 5], [100, 6], [124, 8], [124, 10], [124, 12], [124, 16], [124, 17], [133, 3], [139, 1], [139, 2], [139, 3], [141, 2], [141, 3], [154, 2], [154, 3], [169, 4], [171, 2], [171, 3], [174, 2], [174, 3], [176, 4], [176, 5], [182, 3], [215, 5], [91, 2], [91, 3], [124, 8], [124, 10], [124, 12], [124, 16], [124, 17], [139, 1], [139, 2], [139, 3], [141, 2], [169, 4], [171, 2], [174, 2], [176, 4], [176, 5]]
-    for missed_17 in missed_17s:
-        insert_text_label_tx_far(missed_17[0], missed_17[1])
-        
-        asm = None
-        incbin_lines = []
-        processed_incbins = {}
-        analyze_incbins.asm = None
-        analyze_incbins.incbin_lines = []
-        analyze_incbins.processed_incbins = {}
+    #insert_text(0x44276, "ViridianPokeCenterText4")
+    #insert_texts_label(4)
+    #insert_all_texts_labels()
 
-        load_asm()
-        isolate_incbins()
-        process_incbins()
-
-    if len(failed_attempts) > 0:
-        print "-- FAILED ATTEMPTS --"
-        print str(failed_attempts)
--- /dev/null
+++ b/extras/romvisualizer.py
@@ -1,0 +1,26 @@
+#!/usr/bin/python
+#author: Bryan Bishop <kanzure@gmail.com>
+#date: 2012-01-13
+import os
+
+changeset_numbers = range(266, 635)
+
+def take_snapshot_image(changeset_number):
+    "turn pokered.asm into an image at a certain version"
+
+    print "reverting pokered.asm to r" + str(changeset_number)
+
+    #revert the file
+    os.system("hg revert ../pokered.asm -r" + str(changeset_number))
+
+    print "generating the image.."
+
+    #draw the image
+    os.system("python romviz.py")
+
+    #move the file
+    os.system("mv test.png versions/" + str(changeset_number) + ".png")
+
+for changeset_number in changeset_numbers:
+    take_snapshot_image(changeset_number)
+
binary files /dev/null b/gfx/redgreenversion.1bpp differ
binary files /dev/null b/gfx/tilesets/00.2bpp differ
binary files /dev/null b/gfx/tilesets/01.2bpp differ
binary files /dev/null b/gfx/tilesets/02.2bpp differ
binary files /dev/null b/gfx/tilesets/03.2bpp differ
binary files /dev/null b/gfx/tilesets/05.2bpp differ
binary files /dev/null b/gfx/tilesets/08.2bpp differ
binary files /dev/null b/gfx/tilesets/09.2bpp differ
binary files /dev/null b/gfx/tilesets/0b.2bpp differ
binary files /dev/null b/gfx/tilesets/0d.2bpp differ
binary files /dev/null b/gfx/tilesets/0e.2bpp differ
binary files /dev/null b/gfx/tilesets/0f.2bpp differ
binary files /dev/null b/gfx/tilesets/10.2bpp differ
binary files /dev/null b/gfx/tilesets/11.2bpp differ
binary files /dev/null b/gfx/tilesets/12.2bpp differ
binary files /dev/null b/gfx/tilesets/13.2bpp differ
binary files /dev/null b/gfx/tilesets/14.2bpp differ
binary files /dev/null b/gfx/tilesets/15.2bpp differ
binary files /dev/null b/gfx/tilesets/16.2bpp differ
binary files /dev/null b/gfx/tilesets/17.2bpp differ
--- a/pokered.asm
+++ b/pokered.asm
@@ -359,7 +359,7 @@
 	dw $5CE5
 	dw $5CE5
 	dw $5CE5
-	dw Loreli_h
+	dw Lorelei_h
 	dw Bruno_h
 	dw Agatha_h
 
@@ -959,52 +959,82 @@
 ; XXX where is the pointer to this data?
 MartInventories: ; 2442
 	; first byte $FE, next byte # of items, last byte $FF
+
 ; Viridian
+ViridianMartText4: ; XXX confirm
 	db $FE,4,POKE_BALL,ANTIDOTE,PARLYZ_HEAL,BURN_HEAL,$FF
+
 ; Pewter
+PewterMartText1:
 	db $FE,7,POKE_BALL,POTION,ESCAPE_ROPE,ANTIDOTE,BURN_HEAL,AWAKENING
 	db PARLYZ_HEAL,$FF
+
 ; Cerulean
+CeruleanMartText1:
 	db $FE,7,POKE_BALL,POTION,REPEL,ANTIDOTE,BURN_HEAL,AWAKENING
 	db PARLYZ_HEAL,$FF
+
 ; Bike shop
 	db $FE,1,BICYCLE,$FF
+
 ; Vermilion
+VermilionMartText1:
 	db $FE,6,POKE_BALL,SUPER_POTION,ICE_HEAL,AWAKENING,PARLYZ_HEAL
 	db REPEL,$FF
+
 ; Lavender
+LavenderMartText1:
 	db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,ESCAPE_ROPE,SUPER_REPEL
 	db ANTIDOTE,BURN_HEAL,ICE_HEAL,PARLYZ_HEAL,$FF
+
 ; Celadon Dept. Store 2F (1)
+CeladonMart2Text1:
 	db $FE,9,GREAT_BALL,SUPER_POTION,REVIVE,SUPER_REPEL,ANTIDOTE
 	db BURN_HEAL,ICE_HEAL,AWAKENING,PARLYZ_HEAL,$FF
+
 ; Celadon Dept. Store 2F (2)
+CeladonMart2Text2:
 	db $FE,9,TM_32,TM_33,TM_02,TM_07,TM_37,TM_01,TM_05,TM_09,TM_17,$FF
+
 ; Celadon Dept. Store 4F
+CeladonMart4Text1:
 	db $FE,5,POKE_DOLL,FIRE_STONE,THUNDER_STONE,WATER_STONE,LEAF_STONE,$FF
+
 ; Celadon Dept. Store 5F (1)
+CeladonMart5Text3:
 	db $FE,7,X_ACCURACY,GUARD_SPEC_,DIRE_HIT,X_ATTACK,X_DEFEND,X_SPEED
 	db X_SPECIAL,$FF
+
 ; Celadon Dept. Store 5F (2)
+CeladonMart5Text4:
 	db $FE,5,HP_UP,PROTEIN,IRON,CARBOS,CALCIUM,$FF
+
 ; Fuchsia
+FuchsiaMartText1:
 	db $FE,6,ULTRA_BALL,GREAT_BALL,SUPER_POTION,REVIVE,FULL_HEAL
 	db SUPER_REPEL,$FF
+
 ; unused?
 	db $FE,5,GREAT_BALL,HYPER_POTION,SUPER_POTION,FULL_HEAL,REVIVE,$FF
+
 ; Cinnabar
+CinnabarMartText1:
 	db $FE,7,ULTRA_BALL,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE
 	db FULL_HEAL,REVIVE,$FF
+
 ; Saffron
+SaffronMartText1:
 	db $FE,6,GREAT_BALL,HYPER_POTION,MAX_REPEL,ESCAPE_ROPE,FULL_HEAL
 	db REVIVE,$FF
+
 ; Indigo
+IndigoPlateauLobbyText4:
 	db $FE,7,ULTRA_BALL,GREAT_BALL,FULL_RESTORE,MAX_POTION,FULL_HEAL
 	db REVIVE,MAX_REPEL,$FF
 
 TextScriptEndingChar:
         db "@"
-TextScriptEnd:
+TextScriptEnd: ; 24D7 24d7
         ld hl,TextScriptEndingChar
         ret
 
@@ -1134,6 +1164,7 @@
 SilphCo6Text10:
 SilphCo7Text10:
 SilphCo7Text11:
+SilphCo7Text12:
 Mansion1Text2:
 Mansion1Text3:
 Mansion2Text2:
@@ -1166,7 +1197,7 @@
 SilphCo10Text4:
 SilphCo10Text5:
 SilphCo10Text6:
-Route2Text2: ; 0x24f4
+Route2Text2: ; 24f4 0x424f4
     db $08 ; asm
     ld a, $5c
     call Predef
@@ -1777,6 +1808,7 @@
 	jp DelayFrames
 
 INCBIN "baserom.gbc",$3DDC,$3DED - $3DDC
+
 GoPAL_SET_CF1C:	; 3ded
 	ld b,$ff
 GoPAL_SET: 	; 3def
@@ -1873,7 +1905,7 @@
 
 TitleMons: ; 4588
 ; mons on the title screen are randomly chosen from here
-IF RED
+IF _RED
 	db CHARMANDER
 	db SQUIRTLE
 	db BULBASAUR
@@ -1891,7 +1923,7 @@
 	db PONYTA
 	db MAGIKARP
 ENDC
-IF GREEN
+IF _GREEN
 	db BULBASAUR
 	db CHARMANDER
 	db SQUIRTLE
@@ -1909,7 +1941,7 @@
 	db PONYTA
 	db MAGIKARP
 ENDC
-IF BLUE
+IF _BLUE
 	db SQUIRTLE
 	db CHARMANDER
 	db BULBASAUR
@@ -2428,6 +2460,7 @@
 	db $04		;Tileset_id
 
 INCBIN "baserom.gbc",$6428,$6448-$6428
+
 FlyWarpDataPtr:
 	db $00,0
         dw Map00FlyWarp
@@ -2516,9 +2549,11 @@
 INCBIN "baserom.gbc",$7B22,$7C49 - $7B22
 
 SECTION "bank2",DATA,BANK[$2]
+
 INCBIN "baserom.gbc",$8000,$4000
 
 SECTION "bank3",DATA,BANK[$3]
+
 INCBIN "baserom.gbc",$C000,$C23D - $C000
 
 ; see also MapHeaderPointers
@@ -2768,7 +2803,7 @@
 	db $11
 	db $11
 	db $11
-	db BANK(Loreli_h)
+	db BANK(Lorelei_h)
 	db BANK(Bruno_h)
 	db BANK(Agatha_h)
 
@@ -2775,6 +2810,7 @@
 INCBIN "baserom.gbc",$C335,$C766-$C335
 	ld hl,TilesetsHeadPtr
 INCBIN "baserom.gbc",$C769,$C7BE-$C769
+
 TilesetsHeadPtr:
 	TSETHEAD Tset00_Block,Tset00_GFX,Tset00_Coll,$FF,$FF,$FF,$52,2
 	TSETHEAD Tset01_Block,Tset01_GFX,Tset01_Coll,$FF,$FF,$FF,$FF,0
@@ -3678,10 +3714,12 @@
 		; followed by 20 bytes:
 		; level, species (ten times)
 
-NoMons: ; no wild pokemon
-	db 0
-	db 0
+IF _RED
+NoMons:
+	db $00
 
+	db $00
+
 Route1Mons:
 	db $19
 	db 3,PIDGEY
@@ -3695,7 +3733,7 @@
 	db 4,PIDGEY
 	db 5,PIDGEY
 
-	db 0
+	db $00
 
 Route2Mons:
 	db $19
@@ -3710,7 +3748,7 @@
 	db 4,WEEDLE
 	db 5,WEEDLE
 
-	db 0
+	db $00
 
 Route22Mons:
 	db $19
@@ -3725,7 +3763,7 @@
 	db 3,NIDORAN_F
 	db 4,NIDORAN_F
 
-	db 0
+	db $00
 
 ForestMons:
 	db $08
@@ -3740,7 +3778,7 @@
 	db 3,PIKACHU
 	db 5,PIKACHU
 
-	db 0
+	db $00
 
 Route3Mons:
 	db $14
@@ -3755,7 +3793,7 @@
 	db 5,JIGGLYPUFF
 	db 7,JIGGLYPUFF
 
-	db 0
+	db $00
 
 MoonMons1:
 	db $0A
@@ -3770,7 +3808,7 @@
 	db 11,ZUBAT
 	db 8,CLEFAIRY
 
-	db 0
+	db $00
 
 MoonMonsB1:
 	db $0A
@@ -3785,7 +3823,7 @@
 	db 9,CLEFAIRY
 	db 9,GEODUDE
 
-	db 0
+	db $00
 
 MoonMonsB2:
 	db $0A
@@ -3800,7 +3838,7 @@
 	db 12,ZUBAT
 	db 12,CLEFAIRY
 
-	db 0
+	db $00
 
 Route4Mons:
 	db $14
@@ -3815,7 +3853,7 @@
 	db 8,EKANS
 	db 12,EKANS
 
-	db 0
+	db $00
 
 Route24Mons:
 	db $19
@@ -3830,10 +3868,10 @@
 	db 8,ABRA
 	db 12,ABRA
 
-	db 0
+	db $00
 
 Route25Mons:
-	db 15
+	db $0F
 	db 8,WEEDLE
 	db 9,KAKUNA
 	db 13,PIDGEY
@@ -3845,10 +3883,10 @@
 	db 7,METAPOD
 	db 8,CATERPIE
 
-	db 0
+	db $00
 
 Route9Mons:
-	db 15
+	db $0F
 	db 16,RATTATA
 	db 16,SPEAROW
 	db 14,RATTATA
@@ -3860,10 +3898,10 @@
 	db 13,EKANS
 	db 17,EKANS
 
-	db 0
+	db $00
 
 Route5Mons:
-	db 15
+	db $0F
 	db 13,ODDISH
 	db 13,PIDGEY
 	db 15,PIDGEY
@@ -3875,10 +3913,10 @@
 	db 14,MANKEY
 	db 16,MANKEY
 
-	db 0
+	db $00
 
 Route6Mons:
-	db 15
+	db $0F
 	db 13,ODDISH
 	db 13,PIDGEY
 	db 15,PIDGEY
@@ -3890,10 +3928,10 @@
 	db 14,MANKEY
 	db 16,MANKEY
 
-	db 0
+	db $00
 
 Route11Mons:
-	db 15
+	db $0F
 	db 14,EKANS
 	db 15,SPEAROW
 	db 12,EKANS
@@ -3905,10 +3943,10 @@
 	db 11,DROWZEE
 	db 15,DROWZEE
 
-	db 0
+	db $00
 
 TunnelMonsB1:
-	db 15
+	db $0F
 	db 16,ZUBAT
 	db 17,ZUBAT
 	db 17,GEODUDE
@@ -3920,10 +3958,10 @@
 	db 13,ONIX
 	db 15,ONIX
 
-	db 0
+	db $00
 
 TunnelMonsB2:
-	db 15
+	db $0F
 	db 16,ZUBAT
 	db 17,ZUBAT
 	db 17,GEODUDE
@@ -3935,10 +3973,10 @@
 	db 13,ONIX
 	db 18,GEODUDE
 
-	db 0
+	db $00
 
 Route10Mons:
-	db 15
+	db $0F
 	db 16,VOLTORB
 	db 16,SPEAROW
 	db 14,VOLTORB
@@ -3950,10 +3988,10 @@
 	db 13,EKANS
 	db 17,EKANS
 
-	db 0
+	db $00
 
 Route12Mons:
-	db 15
+	db $0F
 	db 24,ODDISH
 	db 25,PIDGEY
 	db 23,PIDGEY
@@ -3965,10 +4003,10 @@
 	db 28,GLOOM
 	db 30,GLOOM
 
-	db 0
+	db $00
 
 Route8Mons:
-	db 15
+	db $0F
 	db 18,PIDGEY
 	db 18,MANKEY
 	db 17,EKANS
@@ -3980,10 +4018,10 @@
 	db 15,GROWLITHE
 	db 18,GROWLITHE
 
-	db 0
+	db $00
 
 Route7Mons:
-	db 15
+	db $0F
 	db 19,PIDGEY
 	db 19,ODDISH
 	db 17,MANKEY
@@ -3995,16 +4033,18 @@
 	db 19,MANKEY
 	db 20,MANKEY
 
-	db 0
+	db $00
 
 TowerMons1:
-	db 0
-	db 0
+	db $00
 
+	db $00
+
 TowerMons2:
-	db 0
-	db 0
+	db $00
 
+	db $00
+
 TowerMons3:
 	db $0A
 	db 20,GASTLY
@@ -4018,7 +4058,7 @@
 	db 22,CUBONE
 	db 25,HAUNTER
 
-	db 0
+	db $00
 
 TowerMons4:
 	db $0A
@@ -4033,7 +4073,7 @@
 	db 22,CUBONE
 	db 24,GASTLY
 
-	db 0
+	db $00
 
 TowerMons5:
 	db $0A
@@ -4048,10 +4088,10 @@
 	db 22,CUBONE
 	db 24,GASTLY
 
-	db 0
+	db $00
 
 TowerMons6:
-	db 15
+	db $0F
 	db 21,GASTLY
 	db 22,GASTLY
 	db 23,GASTLY
@@ -4063,10 +4103,10 @@
 	db 24,CUBONE
 	db 28,HAUNTER
 
-	db 0
+	db $00
 
 TowerMons7:
-	db 15
+	db $0F
 	db 21,GASTLY
 	db 22,GASTLY
 	db 23,GASTLY
@@ -4078,7 +4118,7 @@
 	db 28,HAUNTER
 	db 30,HAUNTER
 
-	db 0
+	db $00
 
 Route13Mons:
 	db $14
@@ -4093,10 +4133,10 @@
 	db 28,GLOOM
 	db 30,GLOOM
 
-	db 0
+	db $00
 
 Route14Mons:
-	db 15
+	db $0F
 	db 24,ODDISH
 	db 26,PIDGEY
 	db 23,DITTO
@@ -4108,10 +4148,10 @@
 	db 28,PIDGEOTTO
 	db 30,PIDGEOTTO
 
-	db 0
+	db $00
 
 Route15Mons:
-	db 15
+	db $0F
 	db 24,ODDISH
 	db 26,DITTO
 	db 23,PIDGEY
@@ -4123,7 +4163,7 @@
 	db 28,PIDGEOTTO
 	db 30,PIDGEOTTO
 
-	db 0
+	db $00
 
 Route16Mons:
 	db $19
@@ -4138,7 +4178,7 @@
 	db 23,RATICATE
 	db 25,RATICATE
 
-	db 0
+	db $00
 
 Route17Mons:
 	db $19
@@ -4153,7 +4193,7 @@
 	db 25,FEAROW
 	db 27,FEAROW
 
-	db 0
+	db $00
 
 Route18Mons:
 	db $19
@@ -4168,7 +4208,7 @@
 	db 27,FEAROW
 	db 29,FEAROW
 
-	db 0
+	db $00
 
 ZoneMonsCenter:
 	db $1E
@@ -4183,7 +4223,7 @@
 	db 23,SCYTHER
 	db 23,CHANSEY
 
-	db 0
+	db $00
 
 ZoneMons1:
 	db $1E
@@ -4198,7 +4238,7 @@
 	db 25,KANGASKHAN
 	db 28,SCYTHER
 
-	db 0
+	db $00
 
 ZoneMons2:
 	db $1E
@@ -4213,7 +4253,7 @@
 	db 26,CHANSEY
 	db 28,TAUROS
 
-	db 0
+	db $00
 
 ZoneMons3:
 	db $1E
@@ -4228,25 +4268,25 @@
 	db 26,TAUROS
 	db 28,KANGASKHAN
 
-	db 0
+	db $00
 
 WaterMons:
-	db 0
+	db $00
 
-	db 5
-	db 5,   TENTACOOL
-	db 10,  TENTACOOL
-	db 15,  TENTACOOL
-	db 5,   TENTACOOL
-	db 10,  TENTACOOL
-	db 15,  TENTACOOL
-	db 20,  TENTACOOL
-	db 30,  TENTACOOL
-	db 35,  TENTACOOL
-	db 40,  TENTACOOL
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
 
 IslandMons1:
-	db 15
+	db $0F
 	db 30,SEEL
 	db 30,SLOWPOKE
 	db 30,SHELLDER
@@ -4258,7 +4298,7 @@
 	db 28,SHELLDER
 	db 38,GOLDUCK
 
-	db 0
+	db $00
 
 IslandMonsB1:
 	db $0A
@@ -4273,7 +4313,7 @@
 	db 38,DEWGONG
 	db 37,SEADRA
 
-	db 0
+	db $00
 
 IslandMonsB2:
 	db $0A
@@ -4288,7 +4328,7 @@
 	db 30,GOLBAT
 	db 37,SLOWBRO
 
-	db 0
+	db $00
 
 IslandMonsB3:
 	db $0A
@@ -4303,7 +4343,7 @@
 	db 39,SEADRA
 	db 37,DEWGONG
 
-	db 0
+	db $00
 
 IslandMonsB4:
 	db $0A
@@ -4318,7 +4358,7 @@
 	db 39,SLOWBRO
 	db 32,GOLBAT
 
-	db 0
+	db $00
 
 MansionMons1:
 	db $0A
@@ -4333,7 +4373,7 @@
 	db 37,WEEZING
 	db 39,MUK
 
-	db 0
+	db $00
 
 MansionMons2:
 	db $0A
@@ -4348,7 +4388,7 @@
 	db 39,WEEZING
 	db 37,MUK
 
-	db 0
+	db $00
 
 MansionMons3:
 	db $0A
@@ -4363,7 +4403,7 @@
 	db 36,PONYTA
 	db 42,MUK
 
-	db 0
+	db $00
 
 MansionMonsB1:
 	db $0A
@@ -4378,7 +4418,7 @@
 	db 42,WEEZING
 	db 42,MUK
 
-	db 0
+	db $00
 
 Route21Mons:
 	db $19
@@ -4393,7 +4433,7 @@
 	db 30,TANGELA
 	db 32,TANGELA
 
-	db 5
+	db $05
 	db 5,TENTACOOL
 	db 10,TENTACOOL
 	db 15,TENTACOOL
@@ -4418,10 +4458,10 @@
 	db 53,RAICHU
 	db 53,DITTO
 
-	db 0
+	db $00
 
 DungeonMons2:
-	db 15
+	db $0F
 	db 51,DODRIO
 	db 51,VENOMOTH
 	db 51,KADABRA
@@ -4433,7 +4473,7 @@
 	db 55,DITTO
 	db 60,DITTO
 
-	db 0
+	db $00
 
 DungeonMonsB1:
 	db $19
@@ -4448,7 +4488,7 @@
 	db 63,DITTO
 	db 67,DITTO
 
-	db 0
+	db $00
 
 PowerPlantMons:
 	db $0A
@@ -4463,7 +4503,7 @@
 	db 33,ELECTABUZZ
 	db 36,ELECTABUZZ
 
-	db 0
+	db $00
 
 Route23Mons:
 	db $0A
@@ -4478,7 +4518,7 @@
 	db 41,FEAROW
 	db 43,FEAROW
 
-	db 0
+	db $00
 
 PlateauMons2:
 	db $0A
@@ -4493,10 +4533,10 @@
 	db 40,MAROWAK
 	db 43,GRAVELER
 
-	db 0
+	db $00
 
 PlateauMons3:
-	db 15
+	db $0F
 	db 24,MACHOP
 	db 26,GEODUDE
 	db 22,ZUBAT
@@ -4508,10 +4548,10 @@
 	db 42,MACHOKE
 	db 45,MACHOKE
 
-	db 0
+	db $00
 
 PlateauMons1:
-	db 15
+	db $0F
 	db 24,MACHOP
 	db 26,GEODUDE
 	db 22,ZUBAT
@@ -4523,7 +4563,7 @@
 	db 42,MACHOKE
 	db 43,MAROWAK
 
-	db 0
+	db $00
 
 CaveMons:
 	db $14
@@ -4538,8 +4578,2691 @@
 	db 29,DUGTRIO
 	db 31,DUGTRIO
 
-	db 0
+	db $00
 
+ENDC
+IF _GREEN || !_JAPAN && _BLUE
+NoMons:
+	db $00
+
+	db $00
+
+Route1Mons:
+	db $19
+	db 3,PIDGEY
+	db 3,RATTATA
+	db 3,RATTATA
+	db 2,RATTATA
+	db 2,PIDGEY
+	db 3,PIDGEY
+	db 3,PIDGEY
+	db 4,RATTATA
+	db 4,PIDGEY
+	db 5,PIDGEY
+
+	db $00
+
+Route2Mons:
+	db $19
+	db 3,RATTATA
+	db 3,PIDGEY
+	db 4,PIDGEY
+	db 4,RATTATA
+	db 5,PIDGEY
+	db 3,CATERPIE
+	db 2,RATTATA
+	db 5,RATTATA
+	db 4,CATERPIE
+	db 5,CATERPIE
+
+	db $00
+
+Route22Mons:
+	db $19
+	db 3,RATTATA
+	db 3,NIDORAN_F
+	db 4,RATTATA
+	db 4,NIDORAN_F
+	db 2,RATTATA
+	db 2,NIDORAN_F
+	db 3,SPEAROW
+	db 5,SPEAROW
+	db 3,NIDORAN_M
+	db 4,NIDORAN_M
+
+	db $00
+
+ForestMons:
+	db $08
+	db 4,CATERPIE
+	db 5,METAPOD
+	db 3,CATERPIE
+	db 5,CATERPIE
+	db 4,METAPOD
+	db 6,METAPOD
+	db 4,KAKUNA
+	db 3,WEEDLE
+	db 3,PIKACHU
+	db 5,PIKACHU
+
+	db $00
+
+Route3Mons:
+	db $14
+	db 6,PIDGEY
+	db 5,SPEAROW
+	db 7,PIDGEY
+	db 6,SPEAROW
+	db 7,SPEAROW
+	db 8,PIDGEY
+	db 8,SPEAROW
+	db 3,JIGGLYPUFF
+	db 5,JIGGLYPUFF
+	db 7,JIGGLYPUFF
+
+	db $00
+
+MoonMons1:
+	db $0A
+	db 8,ZUBAT
+	db 7,ZUBAT
+	db 9,ZUBAT
+	db 8,GEODUDE
+	db 6,ZUBAT
+	db 10,ZUBAT
+	db 10,GEODUDE
+	db 8,PARAS
+	db 11,ZUBAT
+	db 8,CLEFAIRY
+
+	db $00
+
+MoonMonsB1:
+	db $0A
+	db 8,ZUBAT
+	db 7,ZUBAT
+	db 7,GEODUDE
+	db 8,GEODUDE
+	db 9,ZUBAT
+	db 10,PARAS
+	db 10,ZUBAT
+	db 11,ZUBAT
+	db 9,CLEFAIRY
+	db 9,GEODUDE
+
+	db $00
+
+MoonMonsB2:
+	db $0A
+	db 9,ZUBAT
+	db 9,GEODUDE
+	db 10,ZUBAT
+	db 10,GEODUDE
+	db 11,ZUBAT
+	db 10,PARAS
+	db 12,PARAS
+	db 10,CLEFAIRY
+	db 12,ZUBAT
+	db 12,CLEFAIRY
+
+	db $00
+
+Route4Mons:
+	db $14
+	db 10,RATTATA
+	db 10,SPEAROW
+	db 8,RATTATA
+	db 6,SANDSHREW
+	db 8,SPEAROW
+	db 10,SANDSHREW
+	db 12,RATTATA
+	db 12,SPEAROW
+	db 8,SANDSHREW
+	db 12,SANDSHREW
+
+	db $00
+
+Route24Mons:
+	db $19
+	db 7,CATERPIE
+	db 8,METAPOD
+	db 12,PIDGEY
+	db 12,BELLSPROUT
+	db 13,BELLSPROUT
+	db 10,ABRA
+	db 14,BELLSPROUT
+	db 13,PIDGEY
+	db 8,ABRA
+	db 12,ABRA
+
+	db $00
+
+Route25Mons:
+	db $0F
+	db 8,CATERPIE
+	db 9,METAPOD
+	db 13,PIDGEY
+	db 12,BELLSPROUT
+	db 13,BELLSPROUT
+	db 12,ABRA
+	db 14,BELLSPROUT
+	db 10,ABRA
+	db 7,KAKUNA
+	db 8,WEEDLE
+
+	db $00
+
+Route9Mons:
+	db $0F
+	db 16,RATTATA
+	db 16,SPEAROW
+	db 14,RATTATA
+	db 11,SANDSHREW
+	db 13,SPEAROW
+	db 15,SANDSHREW
+	db 17,RATTATA
+	db 17,SPEAROW
+	db 13,SANDSHREW
+	db 17,SANDSHREW
+
+	db $00
+
+Route5Mons:
+	db $0F
+	db 13,BELLSPROUT
+	db 13,PIDGEY
+	db 15,PIDGEY
+	db 10,MEOWTH
+	db 12,MEOWTH
+	db 15,BELLSPROUT
+	db 16,BELLSPROUT
+	db 16,PIDGEY
+	db 14,MEOWTH
+	db 16,MEOWTH
+
+	db $00
+
+Route6Mons:
+	db $0F
+	db 13,BELLSPROUT
+	db 13,PIDGEY
+	db 15,PIDGEY
+	db 10,MEOWTH
+	db 12,MEOWTH
+	db 15,BELLSPROUT
+	db 16,BELLSPROUT
+	db 16,PIDGEY
+	db 14,MEOWTH
+	db 16,MEOWTH
+
+	db $00
+
+Route11Mons:
+	db $0F
+	db 14,SANDSHREW
+	db 15,SPEAROW
+	db 12,SANDSHREW
+	db 9,DROWZEE
+	db 13,SPEAROW
+	db 13,DROWZEE
+	db 15,SANDSHREW
+	db 17,SPEAROW
+	db 11,DROWZEE
+	db 15,DROWZEE
+
+	db $00
+
+TunnelMonsB1:
+	db $0F
+	db 16,ZUBAT
+	db 17,ZUBAT
+	db 17,GEODUDE
+	db 15,MACHOP
+	db 16,GEODUDE
+	db 18,ZUBAT
+	db 15,ZUBAT
+	db 17,MACHOP
+	db 13,ONIX
+	db 15,ONIX
+
+	db $00
+
+TunnelMonsB2:
+	db $0F
+	db 16,ZUBAT
+	db 17,ZUBAT
+	db 17,GEODUDE
+	db 15,MACHOP
+	db 16,GEODUDE
+	db 18,ZUBAT
+	db 17,MACHOP
+	db 17,ONIX
+	db 13,ONIX
+	db 18,GEODUDE
+
+	db $00
+
+Route10Mons:
+	db $0F
+	db 16,VOLTORB
+	db 16,SPEAROW
+	db 14,VOLTORB
+	db 11,SANDSHREW
+	db 13,SPEAROW
+	db 15,SANDSHREW
+	db 17,VOLTORB
+	db 17,SPEAROW
+	db 13,SANDSHREW
+	db 17,SANDSHREW
+
+	db $00
+
+Route12Mons:
+	db $0F
+	db 24,BELLSPROUT
+	db 25,PIDGEY
+	db 23,PIDGEY
+	db 24,VENONAT
+	db 22,BELLSPROUT
+	db 26,VENONAT
+	db 26,BELLSPROUT
+	db 27,PIDGEY
+	db 28,WEEPINBELL
+	db 30,WEEPINBELL
+
+	db $00
+
+Route8Mons:
+	db $0F
+	db 18,PIDGEY
+	db 18,MEOWTH
+	db 17,SANDSHREW
+	db 16,VULPIX
+	db 20,PIDGEY
+	db 20,MEOWTH
+	db 19,SANDSHREW
+	db 17,VULPIX
+	db 15,VULPIX
+	db 18,VULPIX
+
+	db $00
+
+Route7Mons:
+	db $0F
+	db 19,PIDGEY
+	db 19,BELLSPROUT
+	db 17,MEOWTH
+	db 22,BELLSPROUT
+	db 22,PIDGEY
+	db 18,MEOWTH
+	db 18,VULPIX
+	db 20,VULPIX
+	db 19,MEOWTH
+	db 20,MEOWTH
+
+	db $00
+
+TowerMons1:
+	db $00
+
+	db $00
+
+TowerMons2:
+	db $00
+
+	db $00
+
+TowerMons3:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 24,GASTLY
+	db 20,CUBONE
+	db 22,CUBONE
+	db 25,HAUNTER
+
+	db $00
+
+TowerMons4:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 25,HAUNTER
+	db 20,CUBONE
+	db 22,CUBONE
+	db 24,GASTLY
+
+	db $00
+
+TowerMons5:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 25,HAUNTER
+	db 20,CUBONE
+	db 22,CUBONE
+	db 24,GASTLY
+
+	db $00
+
+TowerMons6:
+	db $0F
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 20,GASTLY
+	db 19,GASTLY
+	db 26,HAUNTER
+	db 22,CUBONE
+	db 24,CUBONE
+	db 28,HAUNTER
+
+	db $00
+
+TowerMons7:
+	db $0F
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 20,GASTLY
+	db 28,HAUNTER
+	db 22,CUBONE
+	db 24,CUBONE
+	db 28,HAUNTER
+	db 30,HAUNTER
+
+	db $00
+
+Route13Mons:
+	db $14
+	db 24,BELLSPROUT
+	db 25,PIDGEY
+	db 27,PIDGEY
+	db 24,VENONAT
+	db 22,BELLSPROUT
+	db 26,VENONAT
+	db 26,BELLSPROUT
+	db 25,DITTO
+	db 28,WEEPINBELL
+	db 30,WEEPINBELL
+
+	db $00
+
+Route14Mons:
+	db $0F
+	db 24,BELLSPROUT
+	db 26,PIDGEY
+	db 23,DITTO
+	db 24,VENONAT
+	db 22,BELLSPROUT
+	db 26,VENONAT
+	db 26,BELLSPROUT
+	db 30,WEEPINBELL
+	db 28,PIDGEOTTO
+	db 30,PIDGEOTTO
+
+	db $00
+
+Route15Mons:
+	db $0F
+	db 24,BELLSPROUT
+	db 26,DITTO
+	db 23,PIDGEY
+	db 26,VENONAT
+	db 22,BELLSPROUT
+	db 28,VENONAT
+	db 26,BELLSPROUT
+	db 30,WEEPINBELL
+	db 28,PIDGEOTTO
+	db 30,PIDGEOTTO
+
+	db $00
+
+Route16Mons:
+	db $19
+	db 20,SPEAROW
+	db 22,SPEAROW
+	db 18,RATTATA
+	db 20,DODUO
+	db 20,RATTATA
+	db 18,DODUO
+	db 22,DODUO
+	db 22,RATTATA
+	db 23,RATICATE
+	db 25,RATICATE
+
+	db $00
+
+Route17Mons:
+	db $19
+	db 20,SPEAROW
+	db 22,SPEAROW
+	db 25,RATICATE
+	db 24,DODUO
+	db 27,RATICATE
+	db 26,DODUO
+	db 28,DODUO
+	db 29,RATICATE
+	db 25,FEAROW
+	db 27,FEAROW
+
+	db $00
+
+Route18Mons:
+	db $19
+	db 20,SPEAROW
+	db 22,SPEAROW
+	db 25,RATICATE
+	db 24,DODUO
+	db 25,FEAROW
+	db 26,DODUO
+	db 28,DODUO
+	db 29,RATICATE
+	db 27,FEAROW
+	db 29,FEAROW
+
+	db $00
+
+ZoneMonsCenter:
+	db $1E
+	db 22,NIDORAN_F
+	db 25,RHYHORN
+	db 22,VENONAT
+	db 24,EXEGGCUTE
+	db 31,NIDORINA
+	db 25,EXEGGCUTE
+	db 31,NIDORINO
+	db 30,PARASECT
+	db 23,PINSIR
+	db 23,CHANSEY
+
+	db $00
+
+ZoneMons1:
+	db $1E
+	db 24,NIDORAN_F
+	db 26,DODUO
+	db 22,PARAS
+	db 25,EXEGGCUTE
+	db 33,NIDORINA
+	db 23,EXEGGCUTE
+	db 24,NIDORAN_M
+	db 25,PARASECT
+	db 25,KANGASKHAN
+	db 28,PINSIR
+
+	db $00
+
+ZoneMons2:
+	db $1E
+	db 22,NIDORAN_F
+	db 26,RHYHORN
+	db 23,PARAS
+	db 25,EXEGGCUTE
+	db 30,NIDORINA
+	db 27,EXEGGCUTE
+	db 30,NIDORINO
+	db 32,VENOMOTH
+	db 26,CHANSEY
+	db 28,TAUROS
+
+	db $00
+
+ZoneMons3:
+	db $1E
+	db 25,NIDORAN_F
+	db 26,DODUO
+	db 23,VENONAT
+	db 24,EXEGGCUTE
+	db 33,NIDORINA
+	db 26,EXEGGCUTE
+	db 25,NIDORAN_M
+	db 31,VENOMOTH
+	db 26,TAUROS
+	db 28,KANGASKHAN
+
+	db $00
+
+WaterMons:
+	db $00
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+IslandMons1:
+	db $0F
+	db 30,SEEL
+	db 30,PSYDUCK
+	db 30,STARYU
+	db 30,KRABBY
+	db 28,KRABBY
+	db 21,ZUBAT
+	db 29,GOLBAT
+	db 28,SLOWPOKE
+	db 28,STARYU
+	db 38,SLOWBRO
+
+	db $00
+
+IslandMonsB1:
+	db $0A
+	db 30,SHELLDER
+	db 30,KRABBY
+	db 32,STARYU
+	db 32,KRABBY
+	db 28,PSYDUCK
+	db 30,SEEL
+	db 30,PSYDUCK
+	db 28,SEEL
+	db 38,DEWGONG
+	db 37,KINGLER
+
+	db $00
+
+IslandMonsB2:
+	db $0A
+	db 30,SEEL
+	db 30,PSYDUCK
+	db 32,SEEL
+	db 32,PSYDUCK
+	db 28,KRABBY
+	db 30,SHELLDER
+	db 30,KRABBY
+	db 28,STARYU
+	db 30,GOLBAT
+	db 37,GOLDUCK
+
+	db $00
+
+IslandMonsB3:
+	db $0A
+	db 31,PSYDUCK
+	db 31,SEEL
+	db 33,PSYDUCK
+	db 33,SEEL
+	db 29,KRABBY
+	db 31,STARYU
+	db 31,KRABBY
+	db 29,STARYU
+	db 39,KINGLER
+	db 37,DEWGONG
+
+	db $00
+
+IslandMonsB4:
+	db $0A
+	db 31,KRABBY
+	db 31,STARYU
+	db 33,KRABBY
+	db 33,STARYU
+	db 29,PSYDUCK
+	db 31,SEEL
+	db 31,PSYDUCK
+	db 29,SEEL
+	db 39,GOLDUCK
+	db 32,GOLBAT
+
+	db $00
+
+MansionMons1:
+	db $0A
+	db 32,GRIMER
+	db 30,GRIMER
+	db 34,PONYTA
+	db 30,PONYTA
+	db 34,VULPIX
+	db 32,PONYTA
+	db 30,KOFFING
+	db 28,PONYTA
+	db 37,MUK
+	db 39,WEEZING
+
+	db $00
+
+MansionMons2:
+	db $0A
+	db 32,VULPIX
+	db 34,GRIMER
+	db 34,GRIMER
+	db 30,PONYTA
+	db 30,GRIMER
+	db 32,PONYTA
+	db 30,KOFFING
+	db 28,PONYTA
+	db 39,MUK
+	db 37,WEEZING
+
+	db $00
+
+MansionMons3:
+	db $0A
+	db 31,GRIMER
+	db 33,VULPIX
+	db 35,GRIMER
+	db 32,PONYTA
+	db 34,MAGMAR
+	db 40,MUK
+	db 34,KOFFING
+	db 38,MUK
+	db 36,PONYTA
+	db 42,WEEZING
+
+	db $00
+
+MansionMonsB1:
+	db $0A
+	db 33,GRIMER
+	db 31,GRIMER
+	db 35,VULPIX
+	db 32,PONYTA
+	db 31,GRIMER
+	db 40,MUK
+	db 34,PONYTA
+	db 35,KOFFING
+	db 38,MAGMAR
+	db 42,WEEZING
+
+	db $00
+
+Route21Mons:
+	db $19
+	db 21,RATTATA
+	db 23,PIDGEY
+	db 30,RATICATE
+	db 23,RATTATA
+	db 21,PIDGEY
+	db 30,PIDGEOTTO
+	db 32,PIDGEOTTO
+	db 28,TANGELA
+	db 30,TANGELA
+	db 32,TANGELA
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+DungeonMons1:
+	db $0A
+	db 46,GOLBAT
+	db 46,HYPNO
+	db 46,MAGNETON
+	db 49,DODRIO
+	db 49,VENOMOTH
+	db 52,SANDSLASH
+	db 49,KADABRA
+	db 52,PARASECT
+	db 53,RAICHU
+	db 53,DITTO
+
+	db $00
+
+DungeonMons2:
+	db $0F
+	db 51,DODRIO
+	db 51,VENOMOTH
+	db 51,KADABRA
+	db 52,RHYDON
+	db 52,MAROWAK
+	db 52,ELECTRODE
+	db 56,CHANSEY
+	db 54,WIGGLYTUFF
+	db 55,DITTO
+	db 60,DITTO
+
+	db $00
+
+DungeonMonsB1:
+	db $19
+	db 55,RHYDON
+	db 55,MAROWAK
+	db 55,ELECTRODE
+	db 64,CHANSEY
+	db 64,PARASECT
+	db 64,RAICHU
+	db 57,SANDSLASH
+	db 65,DITTO
+	db 63,DITTO
+	db 67,DITTO
+
+	db $00
+
+PowerPlantMons:
+	db $0A
+	db 21,VOLTORB
+	db 21,MAGNEMITE
+	db 20,PIKACHU
+	db 24,PIKACHU
+	db 23,MAGNEMITE
+	db 23,VOLTORB
+	db 32,MAGNETON
+	db 35,MAGNETON
+	db 33,RAICHU
+	db 36,RAICHU
+
+	db $00
+
+Route23Mons:
+	db $0A
+	db 26,SANDSHREW
+	db 33,DITTO
+	db 26,SPEAROW
+	db 38,FEAROW
+	db 38,DITTO
+	db 38,FEAROW
+	db 41,SANDSLASH
+	db 43,DITTO
+	db 41,FEAROW
+	db 43,FEAROW
+
+	db $00
+
+PlateauMons2:
+	db $0A
+	db 22,MACHOP
+	db 24,GEODUDE
+	db 26,ZUBAT
+	db 36,ONIX
+	db 39,ONIX
+	db 42,ONIX
+	db 41,MACHOKE
+	db 40,GOLBAT
+	db 40,MAROWAK
+	db 43,GRAVELER
+
+	db $00
+
+PlateauMons3:
+	db $0F
+	db 24,MACHOP
+	db 26,GEODUDE
+	db 22,ZUBAT
+	db 42,ONIX
+	db 40,VENOMOTH
+	db 45,ONIX
+	db 43,GRAVELER
+	db 41,GOLBAT
+	db 42,MACHOKE
+	db 45,MACHOKE
+
+	db $00
+
+PlateauMons1:
+	db $0F
+	db 24,MACHOP
+	db 26,GEODUDE
+	db 22,ZUBAT
+	db 36,ONIX
+	db 39,ONIX
+	db 42,ONIX
+	db 41,GRAVELER
+	db 41,GOLBAT
+	db 42,MACHOKE
+	db 43,MAROWAK
+
+	db $00
+
+CaveMons:
+	db $14
+	db 18,DIGLETT
+	db 19,DIGLETT
+	db 17,DIGLETT
+	db 20,DIGLETT
+	db 16,DIGLETT
+	db 15,DIGLETT
+	db 21,DIGLETT
+	db 22,DIGLETT
+	db 29,DUGTRIO
+	db 31,DUGTRIO
+
+	db $00
+
+ENDC
+IF _JAPAN && _BLUE
+NoMons:
+	db $00
+
+	db $00
+
+Route1Mons:
+	db $19
+	db 3,PIDGEY
+	db 3,RATTATA
+	db 3,RATTATA
+	db 2,RATTATA
+	db 2,PIDGEY
+	db 3,PIDGEY
+	db 3,PIDGEY
+	db 4,RATTATA
+	db 4,PIDGEY
+	db 5,PIDGEY
+
+	db $00
+
+Route2Mons:
+	db $19
+	db 3,RATTATA
+	db 3,PIDGEY
+	db 4,PIDGEY
+	db 4,RATTATA
+	db 5,PIDGEY
+	db 3,CATERPIE
+	db 2,RATTATA
+	db 5,RATTATA
+	db 4,CATERPIE
+	db 5,CATERPIE
+
+	db $00
+
+Route22Mons:
+	db $19
+	db 3,RATTATA
+	db 3,NIDORAN_M
+	db 4,RATTATA
+	db 4,NIDORAN_M
+	db 2,RATTATA
+	db 2,NIDORAN_M
+	db 3,SPEAROW
+	db 5,SPEAROW
+	db 3,NIDORAN_F
+	db 4,NIDORAN_F
+
+	db $00
+
+ForestMons:
+	db $08
+	db 4,CATERPIE
+	db 5,METAPOD
+	db 3,CATERPIE
+	db 5,CATERPIE
+	db 4,METAPOD
+	db 6,METAPOD
+	db 4,KAKUNA
+	db 3,WEEDLE
+	db 3,PIKACHU
+	db 5,PIKACHU
+
+	db $00
+
+Route3Mons:
+	db $14
+	db 6,PIDGEY
+	db 5,SPEAROW
+	db 7,PIDGEY
+	db 6,SPEAROW
+	db 7,SPEAROW
+	db 8,PIDGEY
+	db 8,SPEAROW
+	db 3,JIGGLYPUFF
+	db 5,JIGGLYPUFF
+	db 7,JIGGLYPUFF
+
+	db $00
+
+MoonMons1:
+	db $0A
+	db 8,ZUBAT
+	db 7,ZUBAT
+	db 9,ZUBAT
+	db 8,GEODUDE
+	db 6,ZUBAT
+	db 10,ZUBAT
+	db 10,GEODUDE
+	db 8,PARAS
+	db 11,ZUBAT
+	db 8,CLEFAIRY
+
+	db $00
+
+MoonMonsB1:
+	db $0A
+	db 8,ZUBAT
+	db 7,ZUBAT
+	db 7,GEODUDE
+	db 8,GEODUDE
+	db 9,ZUBAT
+	db 10,PARAS
+	db 10,ZUBAT
+	db 11,ZUBAT
+	db 9,CLEFAIRY
+	db 9,GEODUDE
+
+	db $00
+
+MoonMonsB2:
+	db $0A
+	db 9,ZUBAT
+	db 9,GEODUDE
+	db 10,ZUBAT
+	db 10,GEODUDE
+	db 11,ZUBAT
+	db 10,PARAS
+	db 12,PARAS
+	db 10,CLEFAIRY
+	db 12,ZUBAT
+	db 12,CLEFAIRY
+
+	db $00
+
+Route4Mons:
+	db $14
+	db 10,RATTATA
+	db 10,SPEAROW
+	db 8,RATTATA
+	db 6,SANDSHREW
+	db 8,SPEAROW
+	db 10,SANDSHREW
+	db 12,RATTATA
+	db 12,SPEAROW
+	db 8,SANDSHREW
+	db 12,SANDSHREW
+
+	db $00
+
+Route24Mons:
+	db $19
+	db 7,CATERPIE
+	db 8,METAPOD
+	db 12,PIDGEY
+	db 12,ODDISH
+	db 13,ODDISH
+	db 10,ABRA
+	db 14,ODDISH
+	db 13,PIDGEY
+	db 8,ABRA
+	db 12,ABRA
+
+	db $00
+
+Route25Mons:
+	db $0F
+	db 8,CATERPIE
+	db 9,METAPOD
+	db 13,PIDGEY
+	db 12,ODDISH
+	db 13,ODDISH
+	db 12,ABRA
+	db 14,ODDISH
+	db 10,ABRA
+	db 7,KAKUNA
+	db 8,WEEDLE
+
+	db $00
+
+Route9Mons:
+	db $0F
+	db 16,RATTATA
+	db 16,SPEAROW
+	db 14,RATTATA
+	db 11,SANDSHREW
+	db 13,SPEAROW
+	db 15,SANDSHREW
+	db 17,RATTATA
+	db 17,SPEAROW
+	db 13,SANDSHREW
+	db 17,SANDSHREW
+
+	db $00
+
+Route5Mons:
+	db $0F
+	db 13,ODDISH
+	db 13,PIDGEY
+	db 15,PIDGEY
+	db 10,MEOWTH
+	db 12,MEOWTH
+	db 15,ODDISH
+	db 16,ODDISH
+	db 16,PIDGEY
+	db 14,MEOWTH
+	db 16,MEOWTH
+
+	db $00
+
+Route6Mons:
+	db $0F
+	db 13,ODDISH
+	db 13,PIDGEY
+	db 15,PIDGEY
+	db 10,MEOWTH
+	db 12,MEOWTH
+	db 15,ODDISH
+	db 16,ODDISH
+	db 16,PIDGEY
+	db 14,MEOWTH
+	db 16,MEOWTH
+
+	db $00
+
+Route11Mons:
+	db $0F
+	db 14,SANDSHREW
+	db 15,SPEAROW
+	db 12,SANDSHREW
+	db 9,DROWZEE
+	db 13,SPEAROW
+	db 13,DROWZEE
+	db 15,SANDSHREW
+	db 17,SPEAROW
+	db 11,DROWZEE
+	db 15,DROWZEE
+
+	db $00
+
+TunnelMonsB1:
+	db $0F
+	db 16,ZUBAT
+	db 17,ZUBAT
+	db 17,GEODUDE
+	db 15,MACHOP
+	db 16,GEODUDE
+	db 18,DITTO
+	db 15,ZUBAT
+	db 17,MACHOP
+	db 13,ONIX
+	db 15,ONIX
+
+	db $00
+
+TunnelMonsB2:
+	db $0F
+	db 16,ZUBAT
+	db 17,ZUBAT
+	db 17,GEODUDE
+	db 15,MACHOP
+	db 16,GEODUDE
+	db 18,DITTO
+	db 17,MACHOP
+	db 17,ONIX
+	db 13,ONIX
+	db 18,GEODUDE
+
+	db $00
+
+Route10Mons:
+	db $0F
+	db 16,VOLTORB
+	db 16,SPEAROW
+	db 14,VOLTORB
+	db 11,SANDSHREW
+	db 13,SPEAROW
+	db 15,SANDSHREW
+	db 17,VOLTORB
+	db 17,SPEAROW
+	db 13,SANDSHREW
+	db 17,SANDSHREW
+
+	db $00
+
+Route12Mons:
+	db $0F
+	db 24,ODDISH
+	db 25,PIDGEY
+	db 23,PIDGEY
+	db 24,VENONAT
+	db 22,ODDISH
+	db 26,VENONAT
+	db 26,ODDISH
+	db 27,PIDGEY
+	db 28,GLOOM
+	db 30,GLOOM
+
+	db $00
+
+Route8Mons:
+	db $0F
+	db 18,PIDGEY
+	db 18,MEOWTH
+	db 17,SANDSHREW
+	db 16,GROWLITHE
+	db 20,PIDGEY
+	db 20,MEOWTH
+	db 19,SANDSHREW
+	db 17,GROWLITHE
+	db 15,GROWLITHE
+	db 18,GROWLITHE
+
+	db $00
+
+Route7Mons:
+	db $0F
+	db 19,PIDGEY
+	db 19,ODDISH
+	db 17,MEOWTH
+	db 22,ODDISH
+	db 22,PIDGEY
+	db 18,MEOWTH
+	db 18,GROWLITHE
+	db 20,GROWLITHE
+	db 19,MEOWTH
+	db 20,MEOWTH
+
+	db $00
+
+TowerMons1:
+	db $00
+
+	db $00
+
+TowerMons2:
+	db $00
+
+	db $00
+
+TowerMons3:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 24,GASTLY
+	db 20,CUBONE
+	db 22,CUBONE
+	db 25,HAUNTER
+
+	db $00
+
+TowerMons4:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 25,HAUNTER
+	db 20,CUBONE
+	db 22,CUBONE
+	db 24,GASTLY
+
+	db $00
+
+TowerMons5:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 25,HAUNTER
+	db 20,CUBONE
+	db 22,CUBONE
+	db 24,GASTLY
+
+	db $00
+
+TowerMons6:
+	db $0F
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 20,GASTLY
+	db 19,GASTLY
+	db 26,HAUNTER
+	db 22,CUBONE
+	db 24,CUBONE
+	db 28,HAUNTER
+
+	db $00
+
+TowerMons7:
+	db $0F
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 20,GASTLY
+	db 28,HAUNTER
+	db 22,CUBONE
+	db 24,CUBONE
+	db 28,HAUNTER
+	db 30,HAUNTER
+
+	db $00
+
+Route13Mons:
+	db $14
+	db 24,ODDISH
+	db 25,PIDGEY
+	db 27,PIDGEY
+	db 24,VENONAT
+	db 22,ODDISH
+	db 26,VENONAT
+	db 26,ODDISH
+	db 25,DITTO
+	db 28,GLOOM
+	db 30,GLOOM
+
+	db $00
+
+Route14Mons:
+	db $0F
+	db 24,ODDISH
+	db 26,PIDGEY
+	db 23,DITTO
+	db 24,VENONAT
+	db 22,ODDISH
+	db 26,VENONAT
+	db 26,ODDISH
+	db 30,GLOOM
+	db 28,PIDGEOTTO
+	db 30,PIDGEOTTO
+
+	db $00
+
+Route15Mons:
+	db $0F
+	db 24,ODDISH
+	db 26,DITTO
+	db 23,PIDGEY
+	db 26,VENONAT
+	db 22,ODDISH
+	db 28,VENONAT
+	db 26,ODDISH
+	db 30,GLOOM
+	db 28,PIDGEOTTO
+	db 30,PIDGEOTTO
+
+	db $00
+
+Route16Mons:
+	db $19
+	db 20,SPEAROW
+	db 22,SPEAROW
+	db 18,RATTATA
+	db 20,DODUO
+	db 20,RATTATA
+	db 18,DODUO
+	db 22,DODUO
+	db 22,RATTATA
+	db 23,RATICATE
+	db 25,RATICATE
+
+	db $00
+
+Route17Mons:
+	db $19
+	db 20,SPEAROW
+	db 22,SPEAROW
+	db 25,RATICATE
+	db 24,DODUO
+	db 27,RATICATE
+	db 26,DODUO
+	db 28,DODUO
+	db 29,RATICATE
+	db 25,FEAROW
+	db 27,FEAROW
+
+	db $00
+
+Route18Mons:
+	db $19
+	db 20,SPEAROW
+	db 22,SPEAROW
+	db 25,RATICATE
+	db 24,DODUO
+	db 25,FEAROW
+	db 26,DODUO
+	db 28,DODUO
+	db 29,RATICATE
+	db 27,FEAROW
+	db 29,FEAROW
+
+	db $00
+
+ZoneMonsCenter:
+	db $1E
+	db 22,NIDORAN_M
+	db 25,RHYHORN
+	db 22,VENONAT
+	db 24,EXEGGCUTE
+	db 31,NIDORINO
+	db 25,EXEGGCUTE
+	db 31,NIDORINA
+	db 30,PARASECT
+	db 23,SCYTHER
+	db 23,CHANSEY
+
+	db $00
+
+ZoneMons1:
+	db $1E
+	db 24,NIDORAN_M
+	db 26,DODUO
+	db 22,PARAS
+	db 25,EXEGGCUTE
+	db 33,NIDORINO
+	db 23,EXEGGCUTE
+	db 24,NIDORAN_F
+	db 25,PARASECT
+	db 25,LICKITUNG
+	db 28,SCYTHER
+
+	db $00
+
+ZoneMons2:
+	db $1E
+	db 22,NIDORAN_M
+	db 26,RHYHORN
+	db 23,PARAS
+	db 25,EXEGGCUTE
+	db 30,NIDORINO
+	db 27,EXEGGCUTE
+	db 30,NIDORINA
+	db 32,VENOMOTH
+	db 26,CHANSEY
+	db 28,PINSIR
+
+	db $00
+
+ZoneMons3:
+	db $1E
+	db 25,NIDORAN_M
+	db 26,DODUO
+	db 23,VENONAT
+	db 24,EXEGGCUTE
+	db 33,NIDORINO
+	db 26,EXEGGCUTE
+	db 25,NIDORAN_F
+	db 31,VENOMOTH
+	db 26,PINSIR
+	db 28,LICKITUNG
+
+	db $00
+
+WaterMons:
+	db $00
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+WaterMons:
+	db $00
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+IslandMons1:
+	db $0F
+	db 30,SEEL
+	db 30,HORSEA
+	db 30,STARYU
+	db 30,KRABBY
+	db 28,KRABBY
+	db 21,ZUBAT
+	db 29,GOLBAT
+	db 28,SLOWPOKE
+	db 28,STARYU
+	db 38,SLOWBRO
+
+	db $00
+
+IslandMonsB1:
+	db $0A
+	db 30,SHELLDER
+	db 30,KRABBY
+	db 32,STARYU
+	db 32,KRABBY
+	db 28,HORSEA
+	db 30,SEEL
+	db 30,HORSEA
+	db 28,SEEL
+	db 38,DEWGONG
+	db 37,KINGLER
+
+	db $00
+
+IslandMonsB2:
+	db $0A
+	db 30,SEEL
+	db 30,HORSEA
+	db 32,SEEL
+	db 32,HORSEA
+	db 28,KRABBY
+	db 30,SHELLDER
+	db 30,KRABBY
+	db 28,STARYU
+	db 30,GOLBAT
+	db 37,JYNX
+
+	db $00
+
+IslandMonsB3:
+	db $0A
+	db 31,HORSEA
+	db 31,SEEL
+	db 33,HORSEA
+	db 33,SEEL
+	db 29,KRABBY
+	db 31,STARYU
+	db 31,KRABBY
+	db 29,STARYU
+	db 39,KINGLER
+	db 37,DEWGONG
+
+	db $00
+
+IslandMonsB4:
+	db $0A
+	db 31,KRABBY
+	db 31,STARYU
+	db 33,KRABBY
+	db 33,STARYU
+	db 29,HORSEA
+	db 31,SEEL
+	db 31,HORSEA
+	db 29,SEEL
+	db 39,JYNX
+	db 32,GOLBAT
+
+	db $00
+
+MansionMons1:
+	db $0A
+	db 32,GRIMER
+	db 30,GRIMER
+	db 34,PONYTA
+	db 30,PONYTA
+	db 34,GROWLITHE
+	db 32,PONYTA
+	db 30,KOFFING
+	db 28,PONYTA
+	db 37,MUK
+	db 39,WEEZING
+
+	db $00
+
+MansionMons2:
+	db $0A
+	db 32,GROWLITHE
+	db 34,GRIMER
+	db 34,GRIMER
+	db 30,PONYTA
+	db 30,GRIMER
+	db 32,PONYTA
+	db 30,KOFFING
+	db 28,PONYTA
+	db 39,MUK
+	db 37,WEEZING
+
+	db $00
+
+MansionMons3:
+	db $0A
+	db 31,GRIMER
+	db 33,GROWLITHE
+	db 35,GRIMER
+	db 32,PONYTA
+	db 34,PONYTA
+	db 40,MUK
+	db 34,KOFFING
+	db 38,MUK
+	db 36,PONYTA
+	db 42,WEEZING
+
+	db $00
+
+MansionMonsB1:
+	db $0A
+	db 33,GRIMER
+	db 31,GRIMER
+	db 35,GROWLITHE
+	db 32,PONYTA
+	db 31,GRIMER
+	db 40,MUK
+	db 34,PONYTA
+	db 35,KOFFING
+	db 38,MUK
+	db 42,WEEZING
+
+	db $00
+
+Route21Mons:
+	db $19
+	db 21,RATTATA
+	db 23,PIDGEY
+	db 30,RATICATE
+	db 23,RATTATA
+	db 21,PIDGEY
+	db 30,PIDGEOTTO
+	db 32,PIDGEOTTO
+	db 28,TANGELA
+	db 30,TANGELA
+	db 32,TANGELA
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+DungeonMons1:
+	db $0A
+	db 46,GOLBAT
+	db 46,HYPNO
+	db 46,MAGNETON
+	db 49,RAPIDASH
+	db 49,VENOMOTH
+	db 52,SANDSLASH
+	db 49,KADABRA
+	db 52,PARASECT
+	db 53,RAICHU
+	db 53,DITTO
+
+	db $00
+
+DungeonMons2:
+	db $0F
+	db 51,DODRIO
+	db 51,VENOMOTH
+	db 51,KADABRA
+	db 52,RHYDON
+	db 52,RATICATE
+	db 52,ELECTRODE
+	db 56,CHANSEY
+	db 54,WIGGLYTUFF
+	db 55,DITTO
+	db 60,DITTO
+
+	db $00
+
+DungeonMonsB1:
+	db $19
+	db 55,RHYDON
+	db 55,MAROWAK
+	db 55,ELECTRODE
+	db 64,CLEFAIRY
+	db 64,PARASECT
+	db 64,RAICHU
+	db 57,SANDSLASH
+	db 65,DITTO
+	db 63,DITTO
+	db 67,DITTO
+
+	db $00
+
+PowerPlantMons:
+	db $0A
+	db 21,VOLTORB
+	db 21,MAGNEMITE
+	db 20,PIKACHU
+	db 24,PIKACHU
+	db 23,MAGNEMITE
+	db 23,VOLTORB
+	db 32,MAGNETON
+	db 35,MAGNETON
+	db 33,RAICHU
+	db 36,RAICHU
+
+	db $00
+
+Route23Mons:
+	db $0A
+	db 26,SANDSHREW
+	db 33,DITTO
+	db 26,SPEAROW
+	db 38,FEAROW
+	db 38,DITTO
+	db 38,FEAROW
+	db 41,SANDSLASH
+	db 43,DITTO
+	db 41,FEAROW
+	db 43,FEAROW
+
+	db $00
+
+PlateauMons2:
+	db $0A
+	db 22,MACHOP
+	db 24,GEODUDE
+	db 26,ZUBAT
+	db 36,ONIX
+	db 39,ONIX
+	db 42,ONIX
+	db 41,MACHOKE
+	db 40,GOLBAT
+	db 40,MAROWAK
+	db 43,GRAVELER
+
+	db $00
+
+PlateauMons3:
+	db $0F
+	db 24,MACHOP
+	db 26,GEODUDE
+	db 22,ZUBAT
+	db 42,ONIX
+	db 40,VENOMOTH
+	db 45,ONIX
+	db 43,GRAVELER
+	db 41,GOLBAT
+	db 42,MACHOKE
+	db 45,MACHOKE
+
+	db $00
+
+PlateauMons1:
+	db $0F
+	db 24,MACHOP
+	db 26,GEODUDE
+	db 22,ZUBAT
+	db 36,ONIX
+	db 39,ONIX
+	db 42,ONIX
+	db 41,GRAVELER
+	db 41,GOLBAT
+	db 42,MACHOKE
+	db 43,MAROWAK
+
+	db $00
+
+CaveMons:
+	db $14
+	db 18,DIGLETT
+	db 19,DIGLETT
+	db 17,DIGLETT
+	db 20,DIGLETT
+	db 16,DIGLETT
+	db 15,DIGLETT
+	db 21,DIGLETT
+	db 22,DIGLETT
+	db 29,DUGTRIO
+	db 31,DUGTRIO
+
+	db $00
+
+ENDC
+IF _YELLOW
+NoMons:
+	db $00
+
+	db $00
+
+Route1Mons:
+	db $19
+	db 3,PIDGEY
+	db 4,PIDGEY
+	db 2,RATTATA
+	db 3,RATTATA
+	db 2,PIDGEY
+	db 3,PIDGEY
+	db 5,PIDGEY
+	db 4,RATTATA
+	db 6,PIDGEY
+	db 7,PIDGEY
+
+	db $00
+
+Route2Mons:
+	db $19
+	db 3,RATTATA
+	db 3,PIDGEY
+	db 4,RATTATA
+	db 4,NIDORAN_M
+	db 4,NIDORAN_F
+	db 5,PIDGEY
+	db 6,NIDORAN_M
+	db 6,NIDORAN_F
+	db 7,PIDGEY
+	db 7,PIDGEY
+
+	db $00
+
+Route22Mons:
+	db $19
+	db 2,NIDORAN_M
+	db 2,NIDORAN_F
+	db 3,MANKEY
+	db 3,RATTATA
+	db 4,NIDORAN_M
+	db 4,NIDORAN_F
+	db 5,MANKEY
+	db 2,SPEAROW
+	db 4,SPEAROW
+	db 6,SPEAROW
+
+	db $00
+
+ForestMons:
+	db $19
+	db 3,CATERPIE
+	db 4,METAPOD
+	db 4,CATERPIE
+	db 5,CATERPIE
+	db 4,PIDGEY
+	db 6,PIDGEY
+	db 6,CATERPIE
+	db 6,METAPOD
+	db 8,PIDGEY
+	db 9,PIDGEOTTO
+
+	db $00
+
+Route3Mons:
+	db $14
+	db 8,SPEAROW
+	db 9,SPEAROW
+	db 9,MANKEY
+	db 10,SPEAROW
+	db 8,SANDSHREW
+	db 10,RATTATA
+	db 10,SANDSHREW
+	db 12,RATTATA
+	db 11,SPEAROW
+	db 12,SPEAROW
+
+	db $00
+
+MoonMons1:
+	db $0A
+	db 8,ZUBAT
+	db 9,ZUBAT
+	db 10,GEODUDE
+	db 6,ZUBAT
+	db 7,ZUBAT
+	db 10,ZUBAT
+	db 10,GEODUDE
+	db 11,ZUBAT
+	db 12,SANDSHREW
+	db 11,CLEFAIRY
+
+	db $00
+
+MoonMonsB1:
+	db $0A
+	db 8,ZUBAT
+	db 9,ZUBAT
+	db 10,ZUBAT
+	db 10,GEODUDE
+	db 11,GEODUDE
+	db 11,ZUBAT
+	db 9,PARAS
+	db 11,PARAS
+	db 10,CLEFAIRY
+	db 12,CLEFAIRY
+
+	db $00
+
+MoonMonsB2:
+	db $0A
+	db 10,ZUBAT
+	db 11,GEODUDE
+	db 13,PARAS
+	db 11,ZUBAT
+	db 11,ZUBAT
+	db 12,ZUBAT
+	db 13,ZUBAT
+	db 9,CLEFAIRY
+	db 11,CLEFAIRY
+	db 13,CLEFAIRY
+
+	db $00
+
+Route4Mons:
+	db $14
+	db 8,SPEAROW
+	db 9,SPEAROW
+	db 9,MANKEY
+	db 10,SPEAROW
+	db 8,SANDSHREW
+	db 10,RATTATA
+	db 10,SANDSHREW
+	db 12,RATTATA
+	db 11,SPEAROW
+	db 12,SPEAROW
+
+	db $00
+
+Route24Mons:
+	db $19
+	db 12,ODDISH
+	db 12,BELLSPROUT
+	db 13,PIDGEY
+	db 14,ODDISH
+	db 14,BELLSPROUT
+	db 15,PIDGEY
+	db 13,VENONAT
+	db 16,VENONAT
+	db 17,PIDGEY
+	db 17,PIDGEOTTO
+
+	db $00
+
+Route25Mons:
+	db $0F
+	db 12,ODDISH
+	db 12,BELLSPROUT
+	db 13,PIDGEY
+	db 14,ODDISH
+	db 14,BELLSPROUT
+	db 15,PIDGEY
+	db 13,VENONAT
+	db 16,VENONAT
+	db 17,PIDGEY
+	db 17,PIDGEOTTO
+
+	db $00
+
+Route9Mons:
+	db $0F
+	db 16,NIDORAN_M
+	db 16,NIDORAN_F
+	db 18,RATTATA
+	db 18,NIDORAN_M
+	db 18,NIDORAN_F
+	db 17,SPEAROW
+	db 18,NIDORINO
+	db 18,NIDORINA
+	db 20,RATICATE
+	db 19,FEAROW
+
+	db $00
+
+Route5Mons:
+	db $0F
+	db 15,PIDGEY
+	db 14,RATTATA
+	db 7,ABRA
+	db 16,PIDGEY
+	db 16,RATTATA
+	db 17,PIDGEY
+	db 17,PIDGEOTTO
+	db 3,JIGGLYPUFF
+	db 5,JIGGLYPUFF
+	db 7,JIGGLYPUFF
+
+	db $00
+
+Route6Mons:
+	db $0F
+	db 15,PIDGEY
+	db 14,RATTATA
+	db 7,ABRA
+	db 16,PIDGEY
+	db 16,RATTATA
+	db 17,PIDGEY
+	db 17,PIDGEOTTO
+	db 3,JIGGLYPUFF
+	db 5,JIGGLYPUFF
+	db 7,JIGGLYPUFF
+
+	db $03
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,PSYDUCK
+	db 15,GOLDUCK
+	db 20,GOLDUCK
+
+Route11Mons:
+	db $0F
+	db 16,PIDGEY
+	db 15,RATTATA
+	db 18,PIDGEY
+	db 15,DROWZEE
+	db 17,RATTATA
+	db 17,DROWZEE
+	db 18,PIDGEOTTO
+	db 20,PIDGEOTTO
+	db 19,DROWZEE
+	db 17,RATICATE
+
+	db $00
+
+TunnelMonsB1:
+	db $0F
+	db 15,ZUBAT
+	db 16,GEODUDE
+	db 17,ZUBAT
+	db 19,ZUBAT
+	db 18,GEODUDE
+	db 20,GEODUDE
+	db 21,ZUBAT
+	db 17,MACHOP
+	db 19,MACHOP
+	db 21,MACHOP
+
+	db $00
+
+TunnelMonsB2:
+	db $0F
+	db 20,ZUBAT
+	db 17,GEODUDE
+	db 18,MACHOP
+	db 21,ZUBAT
+	db 22,ZUBAT
+	db 21,GEODUDE
+	db 20,MACHOP
+	db 14,ONIX
+	db 18,ONIX
+	db 22,ONIX
+
+	db $00
+
+Route10Mons:
+	db $0F
+	db 16,MAGNEMITE
+	db 18,RATTATA
+	db 18,MAGNEMITE
+	db 20,MAGNEMITE
+	db 17,NIDORAN_M
+	db 17,NIDORAN_F
+	db 22,MAGNEMITE
+	db 20,RATICATE
+	db 16,MACHOP
+	db 18,MACHOP
+
+	db $00
+
+Route12Mons:
+	db $0F
+	db 25,ODDISH
+	db 25,BELLSPROUT
+	db 28,PIDGEY
+	db 28,PIDGEOTTO
+	db 27,ODDISH
+	db 27,BELLSPROUT
+	db 29,GLOOM
+	db 29,WEEPINBELL
+	db 26,FARFETCH_D
+	db 31,FARFETCH_D
+
+	db $03
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWBRO
+	db 20,SLOWBRO
+
+Route8Mons:
+	db $0F
+	db 20,PIDGEY
+	db 22,PIDGEY
+	db 20,RATTATA
+	db 15,ABRA
+	db 19,ABRA
+	db 24,PIDGEOTTO
+	db 19,JIGGLYPUFF
+	db 24,JIGGLYPUFF
+	db 20,KADABRA
+	db 27,KADABRA
+
+	db $00
+
+Route7Mons:
+	db $0F
+	db 20,PIDGEY
+	db 22,PIDGEY
+	db 20,RATTATA
+	db 15,ABRA
+	db 19,ABRA
+	db 24,PIDGEOTTO
+	db 26,ABRA
+	db 19,JIGGLYPUFF
+	db 24,JIGGLYPUFF
+	db 24,JIGGLYPUFF
+
+	db $00
+
+TowerMons1:
+	db $00
+
+	db $00
+
+TowerMons2:
+	db $00
+
+	db $00
+
+TowerMons3:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 25,GASTLY
+	db 20,HAUNTER
+	db 25,HAUNTER
+
+	db $00
+
+TowerMons4:
+	db $0A
+	db 20,GASTLY
+	db 21,GASTLY
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 19,GASTLY
+	db 18,GASTLY
+	db 25,GASTLY
+	db 20,HAUNTER
+	db 25,HAUNTER
+
+	db $00
+
+TowerMons5:
+	db $0F
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 25,GASTLY
+	db 26,GASTLY
+	db 21,GASTLY
+	db 20,CUBONE
+	db 27,GASTLY
+	db 22,HAUNTER
+	db 27,HAUNTER
+
+	db $00
+
+TowerMons6:
+	db $0F
+	db 22,GASTLY
+	db 23,GASTLY
+	db 24,GASTLY
+	db 25,GASTLY
+	db 26,GASTLY
+	db 21,GASTLY
+	db 22,CUBONE
+	db 27,GASTLY
+	db 22,HAUNTER
+	db 27,HAUNTER
+
+	db $00
+
+TowerMons7:
+	db $14
+	db 24,GASTLY
+	db 25,GASTLY
+	db 26,GASTLY
+	db 27,GASTLY
+	db 28,GASTLY
+	db 23,GASTLY
+	db 24,CUBONE
+	db 29,GASTLY
+	db 24,HAUNTER
+	db 29,HAUNTER
+
+	db $00
+
+Route13Mons:
+	db $0F
+	db 25,ODDISH
+	db 25,BELLSPROUT
+	db 28,PIDGEOTTO
+	db 28,PIDGEY
+	db 27,ODDISH
+	db 27,BELLSPROUT
+	db 29,GLOOM
+	db 29,WEEPINBELL
+	db 26,FARFETCH_D
+	db 31,FARFETCH_D
+
+	db $03
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWPOKE
+	db 15,SLOWBRO
+	db 20,SLOWBRO
+
+Route14Mons:
+	db $0F
+	db 26,ODDISH
+	db 26,BELLSPROUT
+	db 24,VENONAT
+	db 30,PIDGEOTTO
+	db 28,ODDISH
+	db 28,BELLSPROUT
+	db 30,GLOOM
+	db 30,WEEPINBELL
+	db 27,VENONAT
+	db 30,VENOMOTH
+
+	db $00
+
+Route15Mons:
+	db $0F
+	db 26,ODDISH
+	db 26,BELLSPROUT
+	db 24,VENONAT
+	db 32,PIDGEOTTO
+	db 28,ODDISH
+	db 28,BELLSPROUT
+	db 30,GLOOM
+	db 30,WEEPINBELL
+	db 27,VENONAT
+	db 30,VENOMOTH
+
+	db $00
+
+Route16Mons:
+	db $19
+	db 22,SPEAROW
+	db 22,DODUO
+	db 23,RATTATA
+	db 24,DODUO
+	db 24,RATTATA
+	db 26,DODUO
+	db 23,SPEAROW
+	db 24,FEAROW
+	db 25,RATICATE
+	db 26,RATICATE
+
+	db $00
+
+Route17Mons:
+	db $19
+	db 26,DODUO
+	db 27,FEAROW
+	db 27,DODUO
+	db 28,DODUO
+	db 28,PONYTA
+	db 30,PONYTA
+	db 29,FEAROW
+	db 28,DODUO
+	db 32,PONYTA
+	db 29,DODRIO
+
+	db $00
+
+Route18Mons:
+	db $19
+	db 22,SPEAROW
+	db 22,DODUO
+	db 23,RATTATA
+	db 24,DODUO
+	db 24,RATTATA
+	db 26,DODUO
+	db 23,SPEAROW
+	db 24,FEAROW
+	db 25,RATICATE
+	db 26,RATICATE
+
+	db $00
+
+ZoneMonsCenter:
+	db $1E
+	db 14,NIDORAN_M
+	db 36,NIDORAN_F
+	db 24,EXEGGCUTE
+	db 20,RHYHORN
+	db 23,NIDORINO
+	db 27,PARASECT
+	db 27,PARAS
+	db 32,PARASECT
+	db 22,TANGELA
+	db 7,CHANSEY
+
+	db $00
+
+ZoneMons1:
+	db $1E
+	db 21,NIDORAN_M
+	db 29,NIDORAN_F
+	db 22,EXEGGCUTE
+	db 21,TAUROS
+	db 32,NIDORINA
+	db 19,CUBONE
+	db 26,EXEGGCUTE
+	db 24,MAROWAK
+	db 21,CHANSEY
+	db 15,SCYTHER
+
+	db $00
+
+ZoneMons2:
+	db $1E
+	db 36,NIDORAN_M
+	db 14,NIDORAN_F
+	db 20,EXEGGCUTE
+	db 25,RHYHORN
+	db 23,NIDORINA
+	db 28,KANGASKHAN
+	db 16,CUBONE
+	db 33,KANGASKHAN
+	db 25,SCYTHER
+	db 15,PINSIR
+
+	db $00
+
+ZoneMons3:
+	db $1E
+	db 29,NIDORAN_M
+	db 21,NIDORAN_F
+	db 22,EXEGGCUTE
+	db 21,TAUROS
+	db 32,NIDORINO
+	db 19,CUBONE
+	db 26,EXEGGCUTE
+	db 24,MAROWAK
+	db 25,PINSIR
+	db 27,TANGELA
+
+	db $00
+
+WaterMons:
+	db $00
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+WaterMons:
+	db $00
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+IslandMons1:
+	db $0F
+	db 18,ZUBAT
+	db 25,KRABBY
+	db 27,KRABBY
+	db 27,ZUBAT
+	db 36,ZUBAT
+	db 28,SLOWPOKE
+	db 30,SLOWPOKE
+	db 9,ZUBAT
+	db 27,GOLBAT
+	db 36,GOLBAT
+
+	db $00
+
+IslandMonsB1:
+	db $0A
+	db 27,ZUBAT
+	db 26,KRABBY
+	db 36,ZUBAT
+	db 28,KRABBY
+	db 27,GOLBAT
+	db 29,SLOWPOKE
+	db 18,ZUBAT
+	db 28,KINGLER
+	db 22,SEEL
+	db 26,SEEL
+
+	db $00
+
+IslandMonsB2:
+	db $0A
+	db 27,ZUBAT
+	db 27,KRABBY
+	db 36,ZUBAT
+	db 27,GOLBAT
+	db 28,KINGLER
+	db 24,SEEL
+	db 29,KRABBY
+	db 36,GOLBAT
+	db 31,SLOWPOKE
+	db 31,SLOWBRO
+
+	db $00
+
+IslandMonsB3:
+	db $0A
+	db 27,GOLBAT
+	db 36,ZUBAT
+	db 29,KRABBY
+	db 27,ZUBAT
+	db 30,KINGLER
+	db 26,SEEL
+	db 31,KRABBY
+	db 30,SEEL
+	db 28,DEWGONG
+	db 32,DEWGONG
+
+	db $05
+	db 25,TENTACOOL
+	db 30,TENTACOOL
+	db 20,TENTACOOL
+	db 30,STARYU
+	db 35,TENTACOOL
+	db 30,STARYU
+	db 40,TENTACOOL
+	db 30,STARYU
+	db 30,STARYU
+	db 30,STARYU
+
+IslandMonsB4:
+	db $0A
+	db 36,GOLBAT
+	db 36,ZUBAT
+	db 30,KRABBY
+	db 32,KINGLER
+	db 28,SEEL
+	db 32,SEEL
+	db 27,GOLBAT
+	db 45,ZUBAT
+	db 30,DEWGONG
+	db 34,DEWGONG
+
+	db $05
+	db 25,TENTACOOL
+	db 30,TENTACOOL
+	db 20,TENTACOOL
+	db 30,STARYU
+	db 35,TENTACOOL
+	db 30,STARYU
+	db 40,TENTACOOL
+	db 30,STARYU
+	db 30,STARYU
+	db 30,STARYU
+
+MansionMons1:
+	db $0A
+	db 34,RATTATA
+	db 34,RATICATE
+	db 23,GRIMER
+	db 26,GROWLITHE
+	db 37,RATTATA
+	db 37,RATICATE
+	db 30,GROWLITHE
+	db 26,GRIMER
+	db 34,GROWLITHE
+	db 38,GROWLITHE
+
+	db $00
+
+MansionMons2:
+	db $0A
+	db 37,RATTATA
+	db 37,RATICATE
+	db 26,GRIMER
+	db 29,GRIMER
+	db 40,RATTATA
+	db 40,RATICATE
+	db 32,GRIMER
+	db 35,GRIMER
+	db 35,MUK
+	db 38,MUK
+
+	db $00
+
+MansionMons3:
+	db $0A
+	db 40,RATTATA
+	db 40,RATICATE
+	db 32,GRIMER
+	db 35,GRIMER
+	db 43,RATTATA
+	db 43,RATICATE
+	db 38,GRIMER
+	db 38,GRIMER
+	db 38,MUK
+	db 41,MUK
+
+	db $00
+
+MansionMonsB1:
+	db $0A
+	db 35,GRIMER
+	db 38,GRIMER
+	db 37,RATICATE
+	db 40,RATICATE
+	db 41,MUK
+	db 43,RATICATE
+	db 24,DITTO
+	db 46,RATICATE
+	db 18,DITTO
+	db 12,DITTO
+
+	db $00
+
+Route21Mons:
+	db $19
+	db 15,PIDGEY
+	db 13,RATTATA
+	db 13,PIDGEY
+	db 11,PIDGEY
+	db 17,PIDGEY
+	db 15,RATTATA
+	db 15,RATICATE
+	db 17,PIDGEOTTO
+	db 19,PIDGEOTTO
+	db 15,PIDGEOTTO
+
+	db $05
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 5,TENTACOOL
+	db 10,TENTACOOL
+	db 15,TENTACOOL
+	db 20,TENTACOOL
+	db 30,TENTACOOL
+	db 35,TENTACOOL
+	db 40,TENTACOOL
+
+DungeonMons1:
+	db $0A
+	db 50,GOLBAT
+	db 55,GOLBAT
+	db 45,GRAVELER
+	db 55,GLOOM
+	db 55,WEEPINBELL
+	db 52,SANDSLASH
+	db 54,VENOMOTH
+	db 54,PARASECT
+	db 55,DITTO
+	db 60,DITTO
+
+	db $00
+
+DungeonMons2:
+	db $0F
+	db 52,GOLBAT
+	db 57,GOLBAT
+	db 50,GRAVELER
+	db 56,SANDSLASH
+	db 50,RHYHORN
+	db 60,DITTO
+	db 58,GLOOM
+	db 58,WEEPINBELL
+	db 60,RHYDON
+	db 58,RHYDON
+
+	db $00
+
+DungeonMonsB1:
+	db $19
+	db 54,GOLBAT
+	db 59,GOLBAT
+	db 55,GRAVELER
+	db 52,RHYHORN
+	db 62,RHYDON
+	db 60,DITTO
+	db 56,CHANSEY
+	db 65,DITTO
+	db 55,LICKITUNG
+	db 50,LICKITUNG
+
+	db $00
+
+PowerPlantMons:
+	db $0A
+	db 30,MAGNEMITE
+	db 35,MAGNEMITE
+	db 33,MAGNETON
+	db 33,VOLTORB
+	db 37,VOLTORB
+	db 33,GRIMER
+	db 37,GRIMER
+	db 38,MAGNETON
+	db 33,MUK
+	db 37,MUK
+
+	db $00
+
+Route23Mons:
+	db $0A
+	db 41,NIDORINO
+	db 41,NIDORINA
+	db 36,MANKEY
+	db 44,NIDORINO
+	db 44,NIDORINA
+	db 40,FEAROW
+	db 41,MANKEY
+	db 45,FEAROW
+	db 41,PRIMEAPE
+	db 46,PRIMEAPE
+
+	db $00
+
+PlateauMons2:
+	db $0A
+	db 31,GEODUDE
+	db 36,GEODUDE
+	db 41,GEODUDE
+	db 44,ZUBAT
+	db 39,GOLBAT
+	db 44,GRAVELER
+	db 45,ONIX
+	db 47,ONIX
+	db 39,MACHOKE
+	db 42,MACHOKE
+
+	db $00
+
+PlateauMons3:
+	db $0F
+	db 36,GEODUDE
+	db 44,GOLBAT
+	db 41,GEODUDE
+	db 49,ONIX
+	db 46,GEODUDE
+	db 41,GRAVELER
+	db 42,MACHOKE
+	db 45,MACHOKE
+	db 47,GRAVELER
+	db 47,GRAVELER
+
+	db $00
+
+PlateauMons1:
+	db $0F
+	db 26,GEODUDE
+	db 31,GEODUDE
+	db 36,GEODUDE
+	db 39,ZUBAT
+	db 44,ZUBAT
+	db 41,GEODUDE
+	db 43,ONIX
+	db 45,ONIX
+	db 41,GRAVELER
+	db 47,GRAVELER
+
+	db $00
+
+CaveMons:
+	db $14
+	db 18,DIGLETT
+	db 19,DIGLETT
+	db 17,DIGLETT
+	db 20,DIGLETT
+	db 16,DIGLETT
+	db 15,DIGLETT
+	db 21,DIGLETT
+	db 22,DIGLETT
+	db 29,DUGTRIO
+	db 31,DUGTRIO
+
+	db $00
+
+ENDC
+
 GetItemUse:		;$D5C7
 	ld a,1
 	ld [$cd6a],a
@@ -5219,6 +7942,7 @@
 INCBIN "baserom.gbc",$E9C5,$10000 - $E9C5
 
 SECTION "bank4",DATA,BANK[$4]
+
 INCBIN "baserom.gbc",$10000,$2EDE
 
 RedPicFront:
@@ -5245,6 +7969,7 @@
 	ret
 
 SECTION "bank5",DATA,BANK[$5]
+
 INCBIN "baserom.gbc",$14000,$4000
 
 SECTION "bank6",DATA,BANK[$6]
@@ -5252,7 +7977,7 @@
 CeladonCity_h: ; 0x18000
     db $00 ; tileset
     db $12,$19 ; dimensions
-    dw CeladonCityBlocks, $5966, $5956 ; blocks, texts, scripts
+    dw CeladonCityBlocks, CeladonCityTexts, CeladonCityScript ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connection data
@@ -5271,7 +7996,7 @@
 
     ; end connection data
 
-    dw $4022 ; objects
+    dw CeladonCityObject ; objects
 
 CeladonCityObject: ; 0x18022 (size=189)
     db $f ; border tile
@@ -5334,7 +8059,7 @@
 PalletTown_h:
 	db $00 ; tileset
 	db $09,$0A ; dimensions
-	dw PalletTownBlocks,PalletTownTexts,PalletTownScript
+	dw PalletTownBlocks, PalletTownTexts, PalletTownScript
 	db NORTH | SOUTH ; connections
 
 	db $0C ; Route 1
@@ -5381,7 +8106,7 @@
 ViridianCity_h: ; 0x18357 to 0x18384 (45 bytes) (bank=6) (id=1)
     db $00 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw ViridianCityBlocks, $50e4, $4ff1 ; blocks, texts, scripts
+    dw ViridianCityBlocks, ViridianCityTexts, ViridianCityScript ; blocks, texts, scripts
     db NORTH | SOUTH | WEST ; connections
 
     ; connections data
@@ -5406,7 +8131,7 @@
 
     ; end connection data
 
-    dw $4384 ; objects
+    dw ViridianCityObject ; objects
 
 ViridianCityObject: ; 0x18384 (size=104)
     db $f ; border tile
@@ -5448,7 +8173,7 @@
 PewterCity_h: ; 0x18554 to 0x18576 (34 bytes) (bank=6) (id=2)
     db $00 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw PewterCityBlocks, $538b, $5237 ; blocks, texts, scripts
+    dw PewterCityBlocks, PewterCityTexts, PewterCityScript ; blocks, texts, scripts
     db SOUTH | EAST ; connections
 
     ; connections data
@@ -5467,9 +8192,10 @@
 
     ; end connection data
 
-    dw $4577 ; objects
+    dw PewterCityObject ; objects
 
 INCBIN "baserom.gbc",$18576,$18577 - $18576
+
 PewterCityObject: ; 0x18577 (size=111)
     db $a ; border tile
 
@@ -5513,7 +8239,7 @@
 CeruleanCity_h: ; 0x1874e to 0x18786 (56 bytes) (bank=6) (id=3)
     db $00 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw CeruleanCityBlocks, $562d, $5480 ; blocks, texts, scripts
+    dw CeruleanCityBlocks, CeruleanCityTexts, CeruleanCityScript ; blocks, texts, scripts
     db NORTH | SOUTH | WEST | EAST ; connections
 
     ; connections data
@@ -5544,7 +8270,7 @@
 
     ; end connection data
 
-    dw $4786 ; objects
+    dw CeruleanCityObject ; objects
 
 CeruleanCityObject: ; 0x18786 (size=170)
     db $f ; border tile
@@ -5600,7 +8326,7 @@
 VermilionCity_h: ; 0x18998 to 0x189ba (34 bytes) (bank=6) (id=5)
     db $00 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw VermilionCityBlocks, $586f, $57a1 ; blocks, texts, scripts
+    dw VermilionCityBlocks, VermilionCityTexts, VermilionCityScript ; blocks, texts, scripts
     db NORTH | EAST ; connections
 
     ; connections data
@@ -5619,7 +8345,7 @@
 
     ; end connection data
 
-    dw $49ba ; objects
+    dw VermilionCityObject ; objects
 
 VermilionCityObject: ; 0x189ba (size=133)
     db $43 ; border tile
@@ -5669,7 +8395,7 @@
 FuchsiaCity_h: ; 0x18ba7 to 0x18bd4 (45 bytes) (bank=6) (id=7)
     db $00 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw FuchsiaCityBlocks, $5a2e, $5a2b ; blocks, texts, scripts
+    dw FuchsiaCityBlocks, FuchsiaCityTexts, FuchsiaCityScript ; blocks, texts, scripts
     db SOUTH | WEST | EAST ; connections
 
     ; connections data
@@ -5694,7 +8420,7 @@
 
     ; end connection data
 
-    dw $4bd4 ; objects
+    dw FuchsiaCityObject ; objects
 
 FuchsiaCityObject: ; 0x18bd4 (size=178)
     db $f ; border tile
@@ -5765,6 +8491,7 @@
 	ld hl,PalletTownScriptPointers
 	ld a,[$D5F1]
 	jp $3D97
+; 0x18e73
 
 PalletTownScriptPointers:
 	dw PalletTownScript1,PalletTownScript2,PalletTownScript3,PalletTownScript4,PalletTownScript5,PalletTownScript6,PalletTownScript7
@@ -5971,8 +8698,28 @@
 	TX_FAR _PalletTownText7
 	db "@"
 
-INCBIN "baserom.gbc",$18ff1,$19102 - $18ff1
+ViridianCityScript: ; 0x18ff1
+    call $3c3c
+    ld hl, $4ffd
+    ld a, [$d5f4]
+    jp $3d97
+; 0x18ffd
 
+ViridianCityScripts: ; 0x18ffd
+    dw ViridianCityScript0
+
+INCBIN "baserom.gbc",$18fff,$6
+
+ViridianCityScript0: ; 0x19005
+    call $500b
+    jp $503d
+; 0x1900b
+
+INCBIN "baserom.gbc",$1900b,$d9
+
+ViridianCityTexts: ; 0x190e4
+    dw ViridianCityText1, ViridianCityText2, ViridianCityText3, ViridianCityText4, ViridianCityText5, ViridianCityText6, ViridianCityText7, ViridianCityText8, ViridianCityText9, ViridianCityText10, ViridianCityText11, ViridianCityText12, ViridianCityText13, ViridianCityText14, ViridianCityText15
+
 ViridianCityText1: ; 0x19102
     TX_FAR _ViridianCityText1
     db $50
@@ -5992,6 +8739,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19122,$1912c - $19122
+
 ViridianCityText3: ; 0x1912c
     db $08 ; asm
     ld hl, $514d
@@ -6010,6 +8758,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1914d,$1915c - $1914d
+
 ViridianCityText4: ; 0x1915c
     db $08 ; asm
     ld a, [$d74b]
@@ -6025,6 +8774,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19175,$1917f - $19175
+
 ViridianCityText5: ; 0x1917f
     db $08 ; asm
     ld hl, $5191
@@ -6035,6 +8785,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19191,$19196 - $19191
+
 ViridianCityText6: ; 0x19196
     db $08 ; asm
     ld a, [$d74c]
@@ -6061,6 +8812,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$191ca,$191df - $191ca
+
 ViridianCityText7: ; 0x191df
     db $08 ; asm
     ld hl, $520a
@@ -6082,8 +8834,11 @@
 .asm_2413a ; 0x19207
     jp $24d7
 
-INCBIN "baserom.gbc",$1920a,$14
+INCBIN "baserom.gbc",$1920a,$19219 - $1920a
 
+ViridianCityText15: ; 0x19219
+INCBIN "baserom.gbc",$19219,$1921e - $19219
+
 ViridianCityText8: ; 0x1921e
     TX_FAR _ViridianCityText8
     db $50
@@ -6100,8 +8855,35 @@
     TX_FAR _ViridianCityText13
     db $50
 
-INCBIN "baserom.gbc",$19232,$193a7 - $19232
+ViridianCityText14:
+INCBIN "baserom.gbc",$19232,$19237 - $19232
 
+PewterCityScript: ; 0x19237
+    call $3c3c
+    ld hl, $5243
+    ld a, [$d5f7]
+    jp $3d97
+; 0x19243
+
+PewterCityScripts: ; 0x19243
+    dw PewterCityScript0
+
+INCBIN "baserom.gbc",$19245,$c
+
+PewterCityScript0: ; 0x19251
+    xor a
+    ld [$d619], a
+    ld hl, $d754
+    res 0, [hl]
+    call $525e
+    ret
+; 0x1925e
+
+INCBIN "baserom.gbc",$1925e,$12d
+
+PewterCityTexts: ; 0x1938b
+    dw PewterCityText1, PewterCityText2, PewterCityText3, PewterCityText4, PewterCityText5, PewterCityText6, PewterCityText7, PewterCityText8, PewterCityText9, PewterCityText10, PewterCityText11, PewterCityText12, PewterCityText13, PewterCityText14
+
 PewterCityText1: ; 0x193a7
     TX_FAR _PewterCityText1
     db $50
@@ -6140,8 +8922,11 @@
 .asm_ac429 ; 0x193ee
     jp $24d7
 
-INCBIN "baserom.gbc",$193f1,$19405 - $193f1
+INCBIN "baserom.gbc",$193f1,$19400 - $193f1
 
+PewterCityText13:
+INCBIN "baserom.gbc",$19400,$5
+
 PewterCityText4: ; 0x19405
     db $8
     ld hl, $5427
@@ -6161,6 +8946,7 @@
 ; 0x19427
 
 INCBIN "baserom.gbc",$19427,$f
+
 PewterCityText5: ; 0x19436
     db $08 ; asm
     ld hl, $545d
@@ -6179,8 +8965,11 @@
     ld [$d5f7], a
     jp $24d7
 
-INCBIN "baserom.gbc",$1945d,$a
+INCBIN "baserom.gbc",$1945d,$19462 - $1945d
 
+PewterCityText14: ; 0x19462
+INCBIN "baserom.gbc",$19462,$5
+
 PewterCityText6: ; 0x19467
     TX_FAR _PewterCityText6
     db $50
@@ -6201,7 +8990,185 @@
     TX_FAR _PewterCityText12
     db $50
 
-INCBIN "baserom.gbc",$19480,$1964f - $19480
+CeruleanCityScript: ; 0x19480
+    call $3c3c
+    ld hl, $549d
+    ld a, [$d60f]
+    jp $3d97
+; 0x1948c
+
+INCBIN "baserom.gbc",$1948c,$1949d - $1948c
+
+CeruleanCityScripts: ; 0x1949d
+    dw CeruleanCityScript0, CeruleanCityScript1, CeruleanCityScript2, CeruleanCityScript3
+
+INCBIN "baserom.gbc",$194a5,$23
+
+CeruleanCityScript0: ; 0x194c8
+    ld a, [$d75b]
+    bit 7, a
+    jr nz, .asm_194f7 ; 0x194cd $28
+    ld hl, $554f
+    call $34bf
+    jr nc, .asm_194f7 ; 0x194d5 $20
+    ld a, [$cd3d]
+    cp $1
+    ld a, $8
+    ld b, $0
+    jr nz, .asm_194e6 ; 0x194e0 $4
+    ld a, $4
+    ld b, $4
+.asm_194e6
+    ld [$d528], a
+    ld a, b
+    ld [$c129], a
+    call Delay3
+    ld a, $2
+    ld [$ff00+$8c], a
+    jp $2920
+.asm_194f7
+    ld a, [$d75a]
+    bit 0, a
+    ret nz
+    ld hl, $5554
+    call $34bf
+    ret nc
+    ld a, [$d700]
+    and a
+    jr z, .asm_19512 ; 0x19508 $8
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+.asm_19512
+    ld c, $2
+    ld a, $de
+    call $23a1
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $f0
+    ld [$cd6b], a
+    ld a, [$d362]
+    cp $14
+    jr z, .asm_19535 ; 0x19526 $d
+    ld a, $1
+    ld [$ff00+$8c], a
+    ld a, $5
+    ld [$ff00+$8b], a
+    call $3500
+    ld [hl], $19
+.asm_19535
+    ld a, $5
+    ld [$cc4d], a
+    ld a, $15
+    call Predef
+    ld de, $5559
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $363a
+    ld a, $1
+    ld [$d60f], a
+    ret
+; 0x1954f
+
+INCBIN "baserom.gbc",$1954f,$19567 - $1954f
+
+CeruleanCityScript1: ; 0x19567
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    xor a
+    ld [$cd6b], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    ld hl, $d72d
+    set 6, [hl]
+    set 7, [hl]
+    ld hl, $566d
+    ld de, $5672
+    call $3354
+    ld a, $e1
+    ld [$d059], a
+    ld a, [$d715]
+    cp $b1
+    jr nz, .asm_19598 ; 0x19592 $4
+    ld a, $7
+    jr .asm_195a2 ; 0x19596 $a
+.asm_19598
+    cp $99
+    jr nz, .asm_195a0 ; 0x1959a $4
+    ld a, $8
+    jr .asm_195a2 ; 0x1959e $2
+.asm_195a0
+    ld a, $9
+.asm_195a2
+    ld [$d05d], a
+    xor a
+    ld [$ff00+$b4], a
+    call $555d
+    ld a, $2
+    ld [$d60f], a
+    ret
+; 0x195b1
+
+CeruleanCityScript2: ; 0x195b1
+    ld a, [$d057]
+    cp $ff
+    jp z, $548c
+    call $555d
+    ld a, $f0
+    ld [$cd6b], a
+    ld hl, $d75a
+    set 0, [hl]
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+    ld b, $2
+    ld hl, $5b47
+    call Bankswitch
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $3541
+    ld a, [$d362]
+    cp $14
+    jr nz, .asm_195f0 ; 0x195e9 $5
+    ld de, $5608
+    jr .asm_195f3 ; 0x195ee $3
+.asm_195f0
+    ld de, $5600
+.asm_195f3
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $363a
+    ld a, $3
+    ld [$d60f], a
+    ret
+; 0x19600
+
+INCBIN "baserom.gbc",$19600,$19610 - $19600
+
+CeruleanCityScript3: ; 0x19610
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    ld a, $5
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    xor a
+    ld [$cd6b], a
+    call $2307
+    ld a, $0
+    ld [$d60f], a
+    ret
+; 0x1962d
+
+CeruleanCityTexts: ; 0x1962d
+    dw CeruleanCityText1, CeruleanCityText2, CeruleanCityText3, CeruleanCityText4, CeruleanCityText5, CeruleanCityText6, CeruleanCityText7, CeruleanCityText8, CeruleanCityText9, CeruleanCityText10, CeruleanCityText11, CeruleanCityText12, CeruleanCityText13, CeruleanCityText14, CeruleanCityText15, CeruleanCityText16, CeruleanCityText17
+
 CeruleanCityText1: ; 0x1964f
     db $08 ; asm
     ld a, [$d75a]
@@ -6217,6 +9184,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19668,$1967c - $19668
+
 CeruleanCityText2: ; 0x1967c
     db $8
     ld a, [$d75b]
@@ -6257,6 +9225,7 @@
 .asm_e4e6f ; 0x196d6
     jp $24d7
 ; 0x196d9
+
 INCBIN "baserom.gbc",$196d9,$1f
 
 CeruleanCityText3: ; 0x196f8
@@ -6297,6 +9266,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19730,$1973f - $19730
+
 CeruleanCityText8: ; 0x1973f
     db $08 ; asm
     ldh a, [$d3]
@@ -6349,8 +9319,78 @@
     TX_FAR _CeruleanCityText17
     db $50
 
-INCBIN "baserom.gbc",$197a1,$19889 - $197a1
+VermilionCityScript: ; 0x197a1
+    call $3c3c
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    push hl
+    call nz, $57cb
+    pop hl
+    bit 5, [hl]
+    res 5, [hl]
+    call nz, $57c0
+    ld hl, $57dc
+    ld a, [$d62a]
+    jp $3d97
+; 0x197c0
 
+INCBIN "baserom.gbc",$197c0,$197dc - $197c0
+
+VermilionCityScripts: ; 0x197dc
+    dw VermilionCityScript0, VermilionCityScript1
+
+INCBIN "baserom.gbc",$197e0,$6
+
+VermilionCityScript0: ; 0x197e6
+    ld a, [$c109]
+    and a
+    ret nz
+    ld hl, $5823
+    call $34bf
+    ret nc
+    xor a
+    ld [$ff00+$b4], a
+    ld [$cf0d], a
+    ld a, $3
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, [$d803]
+    bit 2, a
+    jr nz, .asm_19810 ; 0x19804 $a
+    ld b, $3f
+    ld a, $1c
+    call Predef
+    ld a, b
+    and a
+    ret nz
+.asm_19810
+    ld a, $40
+    ld [$ccd3], a
+    ld a, $1
+    ld [$cd38], a
+    call $3486
+    ld a, $1
+    ld [$d62a], a
+    ret
+; 0x19823
+
+INCBIN "baserom.gbc",$19823,$1985f - $19823
+
+VermilionCityScript1: ; 0x1985f
+    ld a, [$cd38]
+    and a
+    ret nz
+    ld c, $a
+    call $3739
+    ld a, $0
+    ld [$d62a], a
+    ret
+; 0x1986f
+
+VermilionCityTexts: ; 0x1986f
+    dw VermilionCityText1, VermilionCityText2, VermilionCityText3, VermilionCityText4, VermilionCityText5, VermilionCityText6, VermilionCityText7, VermilionCityText8, VermilionCityText9, VermilionCityText10, VermilionCityText11, VermilionCityText12, VermilionCityText13
+
 VermilionCityText1: ; 0x19889
     TX_FAR _VermilionCityText1
     db $50
@@ -6370,6 +9410,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$198a7,$198b1 - $198a7
+
 VermilionCityText3: ; 0x198b1
     db $08 ; asm
     ld a, [$d803]
@@ -6451,8 +9492,19 @@
     TX_FAR _VermilionCityText13
     db $50
 
-INCBIN "baserom.gbc",$19956,$1998a - $19956
+CeladonCityScript: ; 0x19956
+    call $3c3c
+    ld hl, $d77e
+    res 0, [hl]
+    res 7, [hl]
+    ld hl, $d816
+    res 7, [hl]
+    ret
+; 0x19966
 
+CeladonCityTexts: ; 0x19966
+    dw CeladonCityText1, CeladonCityText2, CeladonCityText3, CeladonCityText4, CeladonCityText5, CeladonCityText6, CeladonCityText7, CeladonCityText8, CeladonCityText9, CeladonCityText10, CeladonCityText11, CeladonCityText12, CeladonCityText13, CeladonCityText14, CeladonCityText15, CeladonCityText16, CeladonCityText17, CeladonCityText18
+
 CeladonCityText1: ; 0x1998a
     TX_FAR _CeladonCityText1
     db $50
@@ -6547,8 +9599,13 @@
     TX_FAR _CeladonCityText18
     db $50
 
-INCBIN "baserom.gbc",$19a2b,$19a5e - $19a2b
+FuchsiaCityScript: ; 0x19a2b
+    jp $3c3c
+; 0x19a2e
 
+FuchsiaCityTexts: ; 0x19a2e
+    dw FuchsiaCityText1, FuchsiaCityText2, FuchsiaCityText3, FuchsiaCityText4, FuchsiaCityText5, FuchsiaCityText6, FuchsiaCityText7, FuchsiaCityText8, FuchsiaCityText9, FuchsiaCityText10, FuchsiaCityText11, FuchsiaCityText12, FuchsiaCityText13, FuchsiaCityText14, FuchsiaCityText15, FuchsiaCityText16, FuchsiaCityText17, FuchsiaCityText18, FuchsiaCityText19, FuchsiaCityText20, FuchsiaCityText21, FuchsiaCityText22, FuchsiaCityText23, FuchsiaCityText24
+
 FuchsiaCityText1: ; 0x19a5e
     TX_FAR _FuchsiaCityText1
     db $50
@@ -6604,6 +9661,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19a9f,$19aa4 - $19a9f
+
 FuchsiaCityText20: ; 0x19aa4
     db $08 ; asm
     ld hl, $5ab3
@@ -6613,6 +9671,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19ab3,$19ab8 - $19ab3
+
 FuchsiaCityText21: ; 0x19ab8
     db $08 ; asm
     ld hl, $5ac7
@@ -6622,6 +9681,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19ac7,$19acc - $19ac7
+
 FuchsiaCityText22: ; 0x19acc
     db $08 ; asm
     ld hl, $5adb
@@ -6631,6 +9691,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19adb,$19ae0 - $19adb
+
 FuchsiaCityText23: ; 0x19ae0
     db $08 ; asm
     ld hl, $5aef
@@ -6640,6 +9701,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19aef,$19af4 - $19aef
+
 FuchsiaCityText24: ; 0x19af4
     db $08 ; asm
     ld a, [$d7f6]
@@ -6669,7 +9731,7 @@
 BluesHouse_h: ; 0x19b2f
 	db $08 ; tileset
 	db $04,$04 ; dimensions
-	dw BluesHouseBlocks,BluesHouseTexts,BluesHouseScript
+	dw BluesHouseBlocks, BluesHouseTexts, BluesHouseScript
 	db 0
 	dw BluesHouseObject
 
@@ -6782,12 +9844,18 @@
 VermilionHouse3_h: ; 0x19c06 to 0x19c12 (12 bytes) (bank=6) (id=196)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw VermilionHouse3Blocks, $5c15, $5c12 ; blocks, texts, scripts
+    dw VermilionHouse3Blocks, VermilionHouse3Texts, VermilionHouse3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5c25 ; objects
+    dw VermilionHouse3Object ; objects
 
-INCBIN "baserom.gbc",$19c12,$19c17 - $19c12
+VermilionHouse3Script: ; 0x19c12
+    jp $3c3c
+; 0x19c15
+
+VermilionHouse3Texts: ; 0x19c15
+    dw VermilionHouse3Text1
+
 VermilionHouse3Text1: ; 0x19c17
     db $08 ; asm
     ld a, $4
@@ -6818,13 +9886,36 @@
 IndigoPlateauLobby_h: ; 0x19c4f to 0x19c5b (12 bytes) (bank=6) (id=174)
     db $02 ; tileset
     db $06, $08 ; dimensions (y, x)
-    dw IndigoPlateauLobbyBlocks, $5c7f, $5c5b ; blocks, texts, scripts
+    dw IndigoPlateauLobbyBlocks, IndigoPlateauLobbyTexts, IndigoPlateauLobbyScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5c95 ; objects
+    dw IndigoPlateauLobbyObject ; objects
 
-INCBIN "baserom.gbc",$19c5b,$19c8a - $19c5b
+IndigoPlateauLobbyScript: ; 0x19c5b
+    call $22fa
+    call $3c3c
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    ret z
+    ld hl, $d869
+    res 7, [hl]
+    ld hl, $d734
+    bit 1, [hl]
+    res 1, [hl]
+    ret z
+    ld hl, $d863
+    xor a
+    ld [hli], a
+    ld [hli], a
+    ld [hli], a
+    ld [hl], a
+    ret
+; 0x19c7f
 
+IndigoPlateauLobbyTexts:
+INCBIN "baserom.gbc",$19c7f,$b
+
 IndigoPlateauLobbyText2:
 IndigoPlateauLobbyText1: ; 0x19c8a
     TX_FAR _IndigoPlateauLobbyText1
@@ -6836,7 +9927,8 @@
     TX_FAR _IndigoPlateauLobbyText3
     db $50
 
-INCBIN "baserom.gbc",$19c94,$1
+IndigoPlateauLobbyText5:
+    db $f6
 
 IndigoPlateauLobbyObject: ; 0x19c95 (size=58)
     db $0 ; border tile
@@ -6866,12 +9958,29 @@
 SilphCo4_h: ; 0x19cff to 0x19d0b (12 bytes) (bank=6) (id=209)
     db $16 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SilphCo4Blocks, $5da0, $5d0b ; blocks, texts, scripts
+    dw SilphCo4Blocks, SilphCo4Texts, SilphCo4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e35 ; objects
+    dw SilphCo4Object ; objects
 
-INCBIN "baserom.gbc",$19d0b,$19dd3 - $19d0b
+SilphCo4Script: ; 0x19d0b
+    call $5d21
+    call $3c3c
+    ld hl, $5dae
+    ld de, $5d9a
+    ld a, [$d645]
+    call $3160
+    ld [$d645], a
+    ret
+; 0x19d21
+
+INCBIN "baserom.gbc",$19d21,$7f
+
+SilphCo4Texts: ; 0x19da0
+    dw SilphCo4Text1, SilphCo4Text2, SilphCo4Text3, SilphCo4Text4, SilphCo4Text5, SilphCo4Text6, SilphCo4Text7
+
+INCBIN "baserom.gbc",$19dae,$25
+
 SilphCo4Text1: ; 0x19dd3
     db $08 ; asm
     ld hl, $5de0
@@ -6880,6 +9989,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19de0,$19dea - $19de0
+
 SilphCo4Text2: ; 0x19dea
     db $08 ; asm
     ld hl, $5dae
@@ -6887,6 +9997,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19df4,$19e03 - $19df4
+
 SilphCo4Text3: ; 0x19e03
     db $08 ; asm
     ld hl, $5dba
@@ -6894,6 +10005,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19e0d,$19e1c - $19e0d
+
 SilphCo4Text4: ; 0x19e1c
     db $08 ; asm
     ld hl, $5dc6
@@ -6901,6 +10013,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$19e26,$f
+
 SilphCo4Object: ; 0x19e35 (size=111)
     db $2e ; border tile
 
@@ -6939,12 +10052,29 @@
 SilphCo5_h: ; 0x19f2b to 0x19f37 (12 bytes) (bank=6) (id=210)
     db $16 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SilphCo5Blocks, $5fbc, $5f37 ; blocks, texts, scripts
+    dw SilphCo5Blocks, SilphCo5Texts, SilphCo5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $608d ; objects
+    dw SilphCo5Object ; objects
 
-INCBIN "baserom.gbc",$19f37,$1a003 - $19f37
+SilphCo5Script: ; 0x19f37
+    call $5f4d
+    call $3c3c
+    ld hl, $5fd2
+    ld de, $5fb6
+    ld a, [$d646]
+    call $3160
+    ld [$d646], a
+    ret
+; 0x19f4d
+
+INCBIN "baserom.gbc",$19f4d,$6f
+
+SilphCo5Texts: ; 0x19fbc
+    dw SilphCo5Text1, SilphCo5Text2, SilphCo5Text3, SilphCo5Text4, SilphCo5Text5, SilphCo5Text6, SilphCo5Text7, SilphCo5Text8, SilphCo5Text9, SilphCo5Text10, SilphCo5Text11
+
+INCBIN "baserom.gbc",$19fd2,$31
+
 SilphCo5Text1: ; 0x1a003
     db $08 ; asm
     ld hl, $6010
@@ -6953,6 +10083,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a010,$1a01a - $1a010
+
 SilphCo5Text2: ; 0x1a01a
     db $08 ; asm
     ld hl, $5fd2
@@ -6960,6 +10091,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a024,$1a033 - $1a024
+
 SilphCo5Text3: ; 0x1a033
     db $08 ; asm
     ld hl, $5fde
@@ -6967,6 +10099,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a03d,$1a04c - $1a03d
+
 SilphCo5Text4: ; 0x1a04c
     db $08 ; asm
     ld hl, $5fea
@@ -6974,6 +10107,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a056,$1a065 - $1a056
+
 SilphCo5Text5: ; 0x1a065
     db $08 ; asm
     ld hl, $5ff6
@@ -7036,12 +10170,29 @@
 SilphCo6_h: ; 0x1a19d to 0x1a1a9 (12 bytes) (bank=6) (id=211)
     db $16 ; tileset
     db $09, $0d ; dimensions (y, x)
-    dw SilphCo6Blocks, $61f6, $61a9 ; blocks, texts, scripts
+    dw SilphCo6Blocks, SilphCo6Texts, SilphCo6Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $62fb ; objects
+    dw SilphCo6Object ; objects
 
-INCBIN "baserom.gbc",$1a1a9,$1a23d - $1a1a9
+SilphCo6Script: ; 0x1a1a9
+    call $61bf
+    call $3c3c
+    ld hl, $620a
+    ld de, $61f0
+    ld a, [$d647]
+    call $3160
+    ld [$d647], a
+    ret
+; 0x1a1bf
+
+INCBIN "baserom.gbc",$1a1bf,$37
+
+SilphCo6Texts: ; 0x1a1f6
+    dw SilphCo6Text1, SilphCo6Text2, SilphCo6Text3, SilphCo6Text4, SilphCo6Text5, SilphCo6Text6, SilphCo6Text7, SilphCo6Text8, SilphCo6Text9, SilphCo6Text10
+
+INCBIN "baserom.gbc",$1a20a,$33
+
 SilphCo6Text1: ; 0x1a23d
     db $08 ; asm
     ld hl, $624a
@@ -7050,6 +10201,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a24a,$1a254 - $1a24a
+
 SilphCo6Text2: ; 0x1a254
     db $08 ; asm
     ld hl, $6261
@@ -7058,6 +10210,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a261,$1a26b - $1a261
+
 SilphCo6Text3: ; 0x1a26b
     db $08 ; asm
     ld hl, $6278
@@ -7066,6 +10219,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a278,$1a282 - $1a278
+
 SilphCo6Text4: ; 0x1a282
     db $08 ; asm
     ld hl, $628f
@@ -7074,6 +10228,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a28f,$1a299 - $1a28f
+
 SilphCo6Text5: ; 0x1a299
     db $08 ; asm
     ld hl, $62a6
@@ -7082,6 +10237,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a2a6,$1a2b0 - $1a2a6
+
 SilphCo6Text6: ; 0x1a2b0
     db $08 ; asm
     ld hl, $620a
@@ -7089,6 +10245,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a2ba,$1a2c9 - $1a2ba
+
 SilphCo6Text7: ; 0x1a2c9
     db $08 ; asm
     ld hl, $6216
@@ -7096,6 +10253,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a2d3,$1a2e2 - $1a2d3
+
 SilphCo6Text8: ; 0x1a2e2
     db $08 ; asm
     ld hl, $6222
@@ -7103,6 +10261,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1a2ec,$f
+
 SilphCo6Object: ; 0x1a2fb (size=112)
     db $2e ; border tile
 
@@ -7144,7 +10303,7 @@
 CinnabarIsland_h: ; 0x1c000 to 0x1c022 (34 bytes) (bank=7) (id=8)
     db $00 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw CinnabarIslandBlocks, $4a81, $4a19 ; blocks, texts, scripts
+    dw CinnabarIslandBlocks, CinnabarIslandTexts, CinnabarIslandScript ; blocks, texts, scripts
     db NORTH | EAST ; connections
 
     ; connections data
@@ -7163,7 +10322,7 @@
 
     ; end connection data
 
-    dw $4022 ; objects
+    dw CinnabarIslandObject ; objects
 
 CinnabarIslandObject: ; 0x1c022 (size=71)
     db $43 ; border tile
@@ -7199,7 +10358,7 @@
 Route1_h: ; 0x1c0c3 to 0x1c0e5 (34 bytes) (bank=7) (id=12)
     db $00 ; tileset
     db $12, $0a ; dimensions (y, x)
-    dw Route1Blocks, $4ab2, $4aaf ; blocks, texts, scripts
+    dw Route1Blocks, Route1Texts, Route1Script ; blocks, texts, scripts
     db NORTH | SOUTH ; connections
 
     ; connections data
@@ -7218,7 +10377,7 @@
 
     ; end connection data
 
-    dw $40e5 ; objects
+    dw Route1Object ; objects
 
 Route1Object: ; 0x1c0e5 (size=19)
     db $b ; border tile
@@ -7243,15 +10402,28 @@
 OaksLabBlocks: ; 30
     INCBIN "maps/oakslab.blk"
 
-ViridianHouseBlocks: ; 16
+Route16HouseBlocks:
+Route2HouseBlocks:
+SaffronHouse1Blocks:
+SaffronHouse2Blocks:
+VermilionHouse1Blocks:
+NameRaterBlocks:
+LavenderHouse1Blocks:
+LavenderHouse2Blocks:
+CeruleanHouse2Blocks:
+PewterHouse1Blocks:
+PewterHouse2Blocks:
+ViridianHouseBlocks: ; 16 0x1c1de 41DE
     INCBIN "maps/viridianhouse.blk"
 
-SchoolBlocks: ; 16
+CeladonMansion5Blocks:
+SchoolBlocks: ; 16 0x1c1ee 41EE
     INCBIN "maps/school.blk"
 
 CeruleanHouseTrashedBlocks: ; 16
     INCBIN "maps/ceruleanhousetrashed.blk"
 
+DiglettsCaveEntranceRoute11Blocks:
 DiglettsCaveRoute2Blocks: ; 16
     INCBIN "maps/diglettscaveroute2.blk"
 
@@ -7447,8 +10619,70 @@
 	db "WEEPINBELL"
 	db "VICTREEBEL"
 
-INCBIN "baserom.gbc",$1c98a,$1ca96 - $1c98a
+INCBIN "baserom.gbc",$1c98a,$1ca19 - $1c98a
 
+CinnabarIslandScript: ; 0x1ca19
+    call $3c3c
+    ld hl, $d126
+    set 5, [hl]
+    ld hl, $d796
+    res 0, [hl]
+    ld hl, $d7a3
+    res 1, [hl]
+    ld hl, $4a34
+    ld a, [$d639]
+    jp $3d97
+; 0x1ca34
+
+CinnabarIslandScripts: ; 0x1ca34
+    dw CinnabarIslandScript0, CinnabarIslandScript1
+
+CinnabarIslandScript0: ; 0x1ca38
+    ld b, $2b
+    call $3493
+    ret nz
+    ld a, [$d361]
+    cp $4
+    ret nz
+    ld a, [$d362]
+    cp $12
+    ret nz
+    ld a, $8
+    ld [$d528], a
+    ld a, $8
+    ld [$ff00+$8c], a
+    call $2920
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $1
+    ld [$cd38], a
+    ld a, $80
+    ld [$ccd3], a
+    call $3486
+    xor a
+    ld [$c109], a
+    ld [$cd6b], a
+    ld a, $1
+    ld [$d639], a
+    ret
+; 0x1ca73
+
+CinnabarIslandScript1: ; 0x1ca73
+    ld a, [$cd38]
+    and a
+    ret nz
+    call Delay3
+    ld a, $0
+    ld [$d639], a
+    ret
+; 0x1ca81
+
+CinnabarIslandTexts: ; 0x1ca81
+    dw CinnabarIslandText1, CinnabarIslandText2, CinnabarIslandText3, CinnabarIslandText4, CinnabarIslandText5, CinnabarIslandText6, CinnabarIslandText7, CinnabarIslandText8
+
+CinnabarIslandText8:
+INCBIN "baserom.gbc",$1ca91,$5
+
 CinnabarIslandText1: ; 0x1ca96
     TX_FAR _CinnabarIslandText1
     db $50
@@ -7469,7 +10703,13 @@
     TX_FAR _CinnabarIslandText7
     db $50
 
-INCBIN "baserom.gbc",$1caaf,$1cab8 - $1caaf
+Route1Script: ; 0x1caaf
+    jp $3c3c
+; 0x1cab2
+
+Route1Texts: ; 0x1cab2
+    dw Route1Text1, Route1Text2, Route1Text3
+
 Route1Text1: ; 0x1cab8
     db $08 ; asm
     ld hl, $d7bf
@@ -7505,12 +10745,197 @@
 OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40)
     db $05 ; tileset
     db $06, $05 ; dimensions (y, x)
-    dw OaksLabBlocks, $5082, $4b0e ; blocks, texts, scripts
+    dw OaksLabBlocks, OaksLabTexts, OaksLabScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $540a ; objects
+    dw OaksLabObject ; objects
 
-INCBIN "baserom.gbc",$1cb0e,$1d0ce - $1cb0e
+OaksLabScript: ; 0x1cb0e
+    ld a, [$d74b]
+    bit 6, a
+    call nz, $5076
+    ld a, $1
+    ld [$cf0c], a
+    xor a
+    ld [$cc3c], a
+    ld hl, $4b28
+    ld a, [$d5f0]
+    jp $3d97
+; 0x1cb28
+
+OaksLabScripts: ; 0x1cb28
+    dw OaksLabScript0, OaksLabScript1, OaksLabScript2, OaksLabScript3, OaksLabScript4, OaksLabScript5, OaksLabScript6, OaksLabScript7
+
+INCBIN "baserom.gbc",$1cb38,$16
+
+OaksLabScript0: ; 0x1cb4e
+    ld a, [$d74b]
+    bit 7, a
+    ret z
+    ld a, [$cf10]
+    and a
+    ret nz
+    ld a, $31
+    ld [$cc4d], a
+    ld a, $15
+    call Predef
+    ld hl, $d72e
+    res 4, [hl]
+    ld a, $1
+    ld [$d5f0], a
+    ret
+; 0x1cb6e
+
+OaksLabScript1: ; 0x1cb6e
+    ld a, $8
+    ld [$ff00+$8c], a
+    ld de, $4b7e
+    call $363a
+    ld a, $2
+    ld [$d5f0], a
+    ret
+; 0x1cb7e
+
+INCBIN "baserom.gbc",$1cb7e,$1cb82 - $1cb7e
+
+OaksLabScript2: ; 0x1cb82
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    ld a, $31
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    ld a, $2e
+    ld [$cc4d], a
+    ld a, $15
+    call Predef
+    ld a, $3
+    ld [$d5f0], a
+    ret
+; 0x1cba2
+
+OaksLabScript3: ; 0x1cba2
+    call Delay3
+    ld hl, $ccd3
+    ld de, $4bcf
+    call $350c
+    dec a
+    ld [$cd38], a
+    call $3486
+    ld a, $1
+    ld [$ff00+$8c], a
+    xor a
+    ld [$ff00+$8d], a
+    call $34a6
+    ld a, $5
+    ld [$ff00+$8c], a
+    xor a
+    ld [$ff00+$8d], a
+    call $34a6
+    ld a, $4
+    ld [$d5f0], a
+    ret
+; 0x1cbcf
+
+INCBIN "baserom.gbc",$1cbcf,$1cbd2 - $1cbcf
+
+OaksLabScript4: ; 0x1cbd2
+    ld a, [$cd38]
+    and a
+    ret nz
+    ld hl, $d747
+    set 0, [hl]
+    ld hl, $d74b
+    set 0, [hl]
+    ld a, $1
+    ld [$ff00+$8c], a
+    ld a, $4
+    ld [$ff00+$8d], a
+    call $34a6
+    call $2429
+    ld hl, $d733
+    res 1, [hl]
+    call $2307
+    ld a, $5
+    ld [$d5f0], a
+    ret
+; 0x1cbfd
+
+OaksLabScript5: ; 0x1cbfd
+    ld a, $fc
+    ld [$cd6b], a
+    ld a, $11
+    ld [$ff00+$8c], a
+    call $2920
+    call Delay3
+    ld a, $12
+    ld [$ff00+$8c], a
+    call $2920
+    call Delay3
+    ld a, $13
+    ld [$ff00+$8c], a
+    call $2920
+    call Delay3
+    ld a, $14
+    ld [$ff00+$8c], a
+    call $2920
+    ld hl, $d74b
+    set 1, [hl]
+    xor a
+    ld [$cd6b], a
+    ld a, $6
+    ld [$d5f0], a
+    ret
+; 0x1cc36
+
+OaksLabScript6: ; 0x1cc36
+    ld a, [$d361]
+    cp $6
+    ret nz
+    ld a, $5
+    ld [$ff00+$8c], a
+    xor a
+    ld [$ff00+$8d], a
+    call $34a6
+    ld a, $1
+    ld [$ff00+$8c], a
+    xor a
+    ld [$ff00+$8d], a
+    call $34a6
+    call $2429
+    ld a, $c
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $1
+    ld [$cd38], a
+    ld a, $40
+    ld [$ccd3], a
+    call $3486
+    ld a, $8
+    ld [$d528], a
+    ld a, $7
+    ld [$d5f0], a
+    ret
+; 0x1cc72
+
+OaksLabScript7: ; 0x1cc72
+    ld a, [$cd38]
+    and a
+    ret nz
+    call Delay3
+    ld a, $6
+    ld [$d5f0], a
+    ret
+; 0x1cc80
+
+INCBIN "baserom.gbc",$1cc80,$402
+
+OaksLabTexts: ; 0x1d082
+    dw OaksLabText1, OaksLabText2, OaksLabText3, OaksLabText4, OaksLabText5, OaksLabText6, OaksLabText7, OaksLabText8, OaksLabText9, OaksLabText10, OaksLabText11, OaksLabText12, OaksLabText13, OaksLabText14, OaksLabText15, OaksLabText16, OaksLabText17, OaksLabText18, OaksLabText19, OaksLabText20, OaksLabText21, OaksLabText22, OaksLabText23, OaksLabText24, OaksLabText25, OaksLabText26, OaksLabText27
+
+INCBIN "baserom.gbc",$1d0b8,22
+
 OaksLabText1: ; 0x1d0ce
     db $08 ; asm
     ld a, [$d74b]
@@ -7612,7 +11037,7 @@
 asm_f6e3a: ; 0x1d195
     ld hl, $519a
     jr asm_b5ddf ; 0x1d198 $19
-    rla
+    rla ; probably a TX_FAR
     ld b, $4e
     dec h
     ld d, b
@@ -7619,7 +11044,7 @@
 asm_2391d: ; 0x1d19f
     ld hl, $51a4
     jr asm_b5ddf ; 0x1d1a2 $f
-    rla
+    rla ; probably a TX_FAR
     cpl
     ld c, [hl]
     dec h
@@ -7627,7 +11052,7 @@
 asm_ddec1: ; 0x1d1a9
     ld hl, $51ae
     jr asm_b5ddf ; 0x1d1ac $5
-    rla
+    rla ; probably a TX_FAR
     ld d, a
     ld c, [hl]
     dec h
@@ -7785,8 +11210,104 @@
     call PrintText
     jp $24d7
 
-INCBIN "baserom.gbc",$1d340,$1d3fb - $1d340
+INCBIN "baserom.gbc",$1d340,$1d345 - $1d340
 
+OaksLabText17: ; 0x1d345
+    db $8
+    ld hl, $534f
+    call PrintText
+    jp $24d7
+; 0x1d34f
+
+INCBIN "baserom.gbc",$1d34f,$1d354 - $1d34f
+
+OaksLabText18: ; 0x1d354
+    db $8
+    ld hl, $535e
+    call PrintText
+    jp $24d7
+; 0x1d35e
+
+INCBIN "baserom.gbc",$1d35e,$1d363 - $1d35e
+
+OaksLabText19: ; 0x1d363
+    db $8
+    ld hl, $536d
+    call PrintText
+    jp $24d7
+; 0x1d36d
+
+INCBIN "baserom.gbc",$1d36d,$1d372 - $1d36d
+
+OaksLabText20: ; 0x1d372
+    db $8
+    ld hl, $537c
+    call PrintText
+    jp $24d7
+; 0x1d37c
+
+INCBIN "baserom.gbc",$1d37c,$1d381 - $1d37c
+
+OaksLabText12: ; 0x1d381
+INCBIN "baserom.gbc",$1d381,$5
+
+INCBIN "baserom.gbc",$1d386,$1d390 - $1d386
+
+OaksLabText13: ; 0x1d390
+INCBIN "baserom.gbc",$1d390,$5
+
+INCBIN "baserom.gbc",$1d395,$1d39f - $1d395
+
+OaksLabText14: ; 0x1d39f
+    db $8
+    ld hl, $53a9
+    call PrintText
+    jp $24d7
+; 0x1d3a9
+
+INCBIN "baserom.gbc",$1d3a9,$1d3af - $1d3a9
+
+OaksLabText15: ; 0x1d3af to 0x1d3b9
+    db $8
+    ld hl, $53b9
+    call PrintText
+    jp $24d7
+; 0x1d3b9
+
+INCBIN "baserom.gbc",$1d3b9,$1d3c8 - $1d3b9
+
+OaksLabText16: ; 0x1d3c8
+    db $8
+    ld hl, $53d2
+    call PrintText
+    jp $24d7
+; 0x1d3d2
+
+INCBIN "baserom.gbc",$1d3d2,$1d3d7 - $1d3d2
+
+OaksLabText21: ; 0x1d3d7
+INCBIN "baserom.gbc",$1d3d7,$5
+
+OaksLabText22: ; 0x1d3dc
+INCBIN "baserom.gbc",$1d3dc,$5
+
+OaksLabText23: ; 0x1d3e1
+INCBIN "baserom.gbc",$1d3e1,$5
+
+OaksLabText24: ; 0x1d3e6
+INCBIN "baserom.gbc",$1d3e6,$5
+
+OaksLabText25: ; 0x1d3eb
+INCBIN "baserom.gbc",$1d3eb,$4
+    db $11
+    db $50
+
+OaksLabText26: ; 0x1d3f1
+INCBIN "baserom.gbc",$1d3f1,$1d3f6 - $1d3f1
+
+OaksLabText27: ; 0x1d3f6
+INCBIN "baserom.gbc",$1d3f6,5
+
 OaksLabText11:
 OaksLabText10: ; 0x1d3fb
     db $08 ; asm
@@ -7825,14 +11346,59 @@
 ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw ViridianMartBlocks, $54e0, $546e ; blocks, texts, scripts
+    dw ViridianMartBlocks, ViridianMartTexts, ViridianMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $550a ; objects
+    dw ViridianMartObject ; objects
 
-INCBIN "baserom.gbc",$1d46e,$1d4e0 - $1d46e
+ViridianMartScript: ; 0x1d46e
+    call $547d
+    call $3c3c
+    ld hl, $5495
+    ld a, [$d60d]
+    jp $3d97
+; 0x1d47d
+
+INCBIN "baserom.gbc",$1d47d,$1e
+
+ViridianMartScript0: ; 0x1d49b
+    call $2429
+    ld a, $4
+    ld [$ff00+$8c], a
+    call $2920
+    ld hl, $ccd3
+    ld de, $54bb
+    call $350c
+    dec a
+    ld [$cd38], a
+    call $3486
+    ld a, $1
+    ld [$d60d], a
+    ret
+; 0x1d4bb
+
+INCBIN "baserom.gbc",$1d4bb,$1d4c0 - $1d4bb
+
+ViridianMartScript1: ; 0x1d4c0
+    ld a, [$cd38]
+    and a
+    ret nz
+    call Delay3
+    ld a, $5
+    ld [$ff00+$8c], a
+    call $2920
+    ld bc, $4601
+    call GiveItem
+    ld hl, $d74e
+    set 1, [hl]
+    ld a, $2
+    ld [$d60d], a
+    ret
+; 0x1d4e0
+
 ViridianMartTexts: ; 0x1d4e0
-    dw ViridianMartText1, ViridianMartText2, ViridianMartText3
+    dw ViridianMartText1, ViridianMartText2, ViridianMartText3 ;, ViridianMartText4
+
 INCBIN "baserom.gbc",$1d4e6,$a
 
 ViridianMartText1: ; 0x1d4f0
@@ -7873,12 +11439,15 @@
 School_h: ; 0x1d540 to 0x1d54c (12 bytes) (bank=7) (id=43)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw SchoolBlocks, $554f, $554c ; blocks, texts, scripts
+    dw SchoolBlocks, SchoolTexts, SchoolScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $555d ; objects
+    dw SchoolObject ; objects
 
-INCBIN "baserom.gbc",$1d54c,$1d54f - $1d54c
+SchoolScript: ; 0x1d54c
+    jp $3c3c
+; 0x1d54f
+
 SchoolTexts: ; 0x1d54f
     dw SchoolText1, SchoolText2
 
@@ -7910,13 +11479,20 @@
 ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw ViridianHouseBlocks, $558d, $558a ; blocks, texts, scripts
+    dw ViridianHouseBlocks, ViridianHouseTexts, ViridianHouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $55bb ; objects
+    dw ViridianHouseObject ; objects
 
-INCBIN "baserom.gbc",$1d589,$1d595 - $1d589
+INCBIN "baserom.gbc",$1d589,$1d58a - $1d589
 
+ViridianHouseScript: ; 0x1d58a
+    jp $3c3c
+; 0x1d58d
+
+ViridianHouseTexts: ; 0x1d58d
+    dw ViridianHouseText1, ViridianHouseText2, ViridianHouseText3, ViridianHouseText4
+
 ViridianHouseText1: ; 0x1d595
     TX_FAR _ViridianHouseText1
     db $50
@@ -7962,12 +11538,15 @@
 PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $55f6, $55f3 ; blocks, texts, scripts
+    dw PewterHouse1Blocks, PewterHouse1Texts, PewterHouse1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5616 ; objects
+    dw PewterHouse1Object ; objects
 
-INCBIN "baserom.gbc",$1d5f3,$1d5f6 - $1d5f3
+PewterHouse1Script: ; 0x1d5f3
+    jp $3c3c
+; 0x1d5f6
+
 PewterHouse1Texts: ; 0x1d5f6
     dw PewterHouse1Text1, PewterHouse1Text2, PewterHouse1Text3
 
@@ -8008,12 +11587,15 @@
 PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $564b, $5648 ; blocks, texts, scripts
+    dw PewterHouse2Blocks, PewterHouse2Texts, PewterHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5659 ; objects
+    dw PewterHouse2Object ; objects
 
-INCBIN "baserom.gbc",$1d648,$1d64b - $1d648
+PewterHouse2Script: ; 0x1d648
+    jp $3c3c
+; 0x1d64b
+
 PewterHouse2Texts: ; 0x1d64b
     dw PewterHouse2Text1, PewterHouse2Text2
 
@@ -8045,12 +11627,19 @@
 CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw CeruleanHouseTrashedBlocks, $5689, $5685 ; blocks, texts, scripts
+    dw CeruleanHouseTrashedBlocks, CeruleanHouseTrashedTexts, CeruleanHouseTrashedScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $56bf ; objects
+    dw CeruleanHouseTrashedObject ; objects
 
-INCBIN "baserom.gbc",$1d685,$1d68f - $1d685
+CeruleanHouseTrashedScript: ; 0x1d685
+    call $3c3c
+    ret
+; 0x1d689
+
+CeruleanHouseTrashedTexts: ; 0x1d689
+    dw CeruleanHouseTrashedText1, CeruleanHouseTrashedText2, CeruleanHouseTrashedText3
+
 CeruleanHouseTrashedText1: ; 0x1d68f
     db $08 ; asm
     ld b, $e4
@@ -8100,13 +11689,18 @@
 CeruleanHouse2_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $56f9, $56f6 ; blocks, texts, scripts
+    dw CeruleanHouse2Blocks, CeruleanHouse2Texts, CeruleanHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5710 ; objects
+    dw CeruleanHouse2Object ; objects
 
-INCBIN "baserom.gbc",$1d6f6,$1d6fd - $1d6f6
+CeruleanHouse2Script: ; 0x1d6f6
+    jp $3c3c
+; 0x1d6f9
 
+CeruleanHouse2Texts: ; 0x1d6f9
+    dw CeruleanHouse2Text1, CeruleanHouse2Text2
+
 CeruleanHouse2Text1: ; 0x1d6fd
     TX_FAR _CeruleanHouse2Text1
     db $50
@@ -8139,12 +11733,18 @@
 BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66)
     db $15 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw BikeShopBlocks, $573f, $573c ; blocks, texts, scripts
+    dw BikeShopBlocks, BikeShopTexts, BikeShopScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5866 ; objects
+    dw BikeShopObject ; objects
 
-INCBIN "baserom.gbc",$1d73c,$1d745 - $1d73c
+BikeShopScript: ; 0x1d73c
+    jp $3c3c
+; 0x1d73f
+
+BikeShopTexts: ; 0x1d73f
+    dw BikeShopText1, BikeShopText2, BikeShopText3
+
 BikeShopText1: ; 0x1d745
     db $08 ; asm
     ld a, [$d75f]
@@ -8222,6 +11822,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1d7f8,$1d839 - $1d7f8
+
 BikeShopText2: ; 0x1d839
     db $08 ; asm
     ld hl, $5843
@@ -8229,6 +11830,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1d843,$1d848 - $1d843
+
 BikeShopText3: ; 0x1d848
     db $08 ; asm
     ld a, [$d75f]
@@ -8241,6 +11843,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1d85c,$a
+
 BikeShopObject: ; 0x1d866 (size=38)
     db $e ; border tile
 
@@ -8265,12 +11868,19 @@
 LavenderHouse1_h: ; 0x1d89c to 0x1d8a8 (12 bytes) (bank=7) (id=149)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $58ac, $58a8 ; blocks, texts, scripts
+    dw LavenderHouse1Blocks, LavenderHouse1Texts, LavenderHouse1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $596a ; objects
+    dw LavenderHouse1Object ; objects
 
-INCBIN "baserom.gbc",$1d8a8,$1d8b8 - $1d8a8
+LavenderHouse1Script: ; 0x1d8a8
+    call $3c3c
+    ret
+; 0x1d8ac
+
+LavenderHouse1Texts: ; 0x1d8ac
+    dw LavenderHouse1Text1, LavenderHouse1Text2, LavenderHouse1Text3, LavenderHouse1Text4, LavenderHouse1Text5, LavenderHouse1Text6
+
 LavenderHouse1Text1: ; 0x1d8b8
     db $08 ; asm
     ld a, [$d7e0]
@@ -8286,6 +11896,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1d8d1,$1d8db - $1d8d1
+
 LavenderHouse1Text2: ; 0x1d8db
     db $08 ; asm
     ld a, [$d7e0]
@@ -8372,13 +11983,19 @@
 LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $59b2, $59ae ; blocks, texts, scripts
+    dw LavenderHouse2Blocks, LavenderHouse2Texts, LavenderHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $59e6 ; objects
+    dw LavenderHouse2Object ; objects
 
-INCBIN "baserom.gbc",$1d9ae,$1d9b6 - $1d9ae
+LavenderHouse2Script: ; 0x1d9ae
+    call $3c3c
+    ret
+; 0x1d9b2
 
+LavenderHouse2Texts: ; 0x1d9b2
+    dw LavenderHouse2Text1, LavenderHouse2Text2
+
 LavenderHouse2Text1: ; 0x1d9b6
     TX_FAR _LavenderHouse2Text1
     db $8
@@ -8402,6 +12019,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1d9dc,$a
+
 LavenderHouse2Object: ; 0x1d9e6 (size=32)
     db $a ; border tile
 
@@ -8422,12 +12040,60 @@
 NameRater_h: ; 0x1da06 to 0x1da12 (12 bytes) (bank=7) (id=229)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $5a54, $5a12 ; blocks, texts, scripts
+    dw NameRaterBlocks, $5a54, NameRaterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5ad6 ; objects
+    dw NameRaterObject ; objects
 
-INCBIN "baserom.gbc",$1da12,$1dad6 - $1da12
+NameRaterScript: ; 0x1da12
+    jp $3c3c
+; 0x1da15
+
+INCBIN "baserom.gbc",$1da15,$41
+
+NameRaterText1: ; 0x1da56
+    db $8
+    call $36f4
+    ld hl, $5ab3
+    call $5a15
+    jr nz, .asm_1daae ; 0x1da60 $4c
+    ld hl, $5ab8
+    call PrintText
+    xor a
+    ld [$d07d], a
+    ld [$cfcb], a
+    ld [$cc35], a
+    call $13fc
+    push af
+    call $3dd4
+    call $3dbe
+    call $20ba
+    pop af
+    jr c, .asm_1daae ; 0x1da80 $2c
+    call $15b4
+    call $5a20
+    ld hl, $5ad1
+    jr c, .asm_1daa8 ; 0x1da8b $1b
+    ld hl, $5abd
+    call $5a15
+    jr nz, .asm_1daae ; 0x1da93 $19
+    ld hl, $5ac2
+    call PrintText
+    ld b, $1
+    ld hl, $655c
+    call Bankswitch
+    jr c, .asm_1daae ; 0x1daa3 $9
+    ld hl, $5ac7
+.asm_1daa8
+    call PrintText
+    jp $24d7
+.asm_1daae
+    ld hl, $5acc
+    jr .asm_1daa8 ; 0x1dab1 $f5
+; 0x1dab3
+
+INCBIN "baserom.gbc",$1dab3,$23
+
 NameRaterObject: ; 0x1dad6 (size=26)
     db $a ; border tile
 
@@ -8447,13 +12113,19 @@
 VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $5b00, $5afc ; blocks, texts, scripts
+    dw VermilionHouse1Blocks, VermilionHouse1Texts, VermilionHouse1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5b20 ; objects
+    dw VermilionHouse1Object ; objects
 
-INCBIN "baserom.gbc",$1dafc,$1db06 - $1dafc
+VermilionHouse1Script: ; 0x1dafc
+    call $3c3c
+    ret
+; 0x1db00
 
+VermilionHouse1Texts: ; 0x1db00
+    dw VermilionHouse1Text1, VermilionHouse1Text2, VermilionHouse1Text3
+
 VermilionHouse1Text1: ; 0x1db06
     TX_FAR _VermilionHouse1Text1
     db $50
@@ -8493,12 +12165,53 @@
 VermilionDock_h: ; 0x1db46 to 0x1db52 (12 bytes) (bank=7) (id=94)
     db $0e ; tileset
     db $06, $0e ; dimensions (y, x)
-    dw VermilionDockBlocks, $5cbf, $5b52 ; blocks, texts, scripts
+    dw VermilionDockBlocks, $5cbf, VermilionDockScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5cc6 ; objects
+    dw VermilionDockObject ; objects
 
-INCBIN "baserom.gbc",$1db52,$1dcc6 - $1db52
+VermilionDockScript: ; 0x1db52
+    call $3c3c
+    ld hl, $d803
+    bit 4, [hl]
+    jr nz, .asm_1db8d ; 0x1db5a $31
+    bit 0, [hl]
+    ret z
+    ld a, [$d42f]
+    cp $1
+    ret nz
+    bit 2, [hl]
+    jp z, $5b9b
+    set 4, [hl]
+    call Delay3
+    ld hl, $d730
+    set 7, [hl]
+    ld hl, $ccd3
+    ld a, $40
+    ld [hli], a
+    ld [hli], a
+    ld [hl], a
+    ld a, $3
+    ld [$cd38], a
+    xor a
+    ld [$c206], a
+    ld [$cd3b], a
+    dec a
+    ld [$cd6b], a
+    ret
+.asm_1db8d
+    bit 5, [hl]
+    ret nz
+    ld a, [$cd38]
+    and a
+    ret nz
+    ld [$cd6b], a
+    set 5, [hl]
+    ret
+; 0x1db9b
+
+INCBIN "baserom.gbc",$1db9b,$12b
+
 VermilionDockObject: ; 0x1dcc6 (size=20)
     db $f ; border tile
 
@@ -8520,13 +12233,18 @@
 CeladonMansion5_h: ; 0x1dd2e to 0x1dd3a (12 bytes) (bank=7) (id=132)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41ee, $5d3d, $5d3a ; blocks, texts, scripts
+    dw CeladonMansion5Blocks, CeladonMansion5Texts, CeladonMansion5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5d5c ; objects
+    dw CeladonMansion5Object ; objects
 
-INCBIN "baserom.gbc",$1dd3a,$1dd41 - $1dd3a
+CeladonMansion5Script: ; 0x1dd3a
+    jp $3c3c
+; 0x1dd3d
 
+CeladonMansion5Texts: ; 0x1dd3d
+    dw CeladonMansion5Text1, CeladonMansion5Text2
+
 CeladonMansion5Text1: ; 0x1dd41
     TX_FAR _CeladonMansion5Text1
     db $50
@@ -8563,13 +12281,18 @@
 FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw FuchsiaMartBlocks, $5d8b, $5d88 ; blocks, texts, scripts
+    dw FuchsiaMartBlocks, FuchsiaMartTexts, FuchsiaMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5d9b ; objects
+    dw FuchsiaMartObject ; objects
 
-INCBIN "baserom.gbc",$1dd88,$1dd91 - $1dd88
+FuchsiaMartScript: ; 0x1dd88
+    jp $3c3c
+; 0x1dd8b
 
+FuchsiaMartTexts: ; 0x1dd8b
+    dw FuchsiaMartText1, FuchsiaMartText2, FuchsiaMartText3
+
 FuchsiaMartText2: ; 0x1dd91
     TX_FAR _FuchsiaMartText2
     db $50
@@ -8602,12 +12325,15 @@
 SaffronHouse1_h: ; 0x1ddd1 to 0x1dddd (12 bytes) (bank=7) (id=179)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $5de0, $5ddd ; blocks, texts, scripts
+    dw SaffronHouse1Blocks, SaffronHouse1Texts, SaffronHouse1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e04 ; objects
+    dw SaffronHouse1Object ; objects
 
-INCBIN "baserom.gbc",$1dddd,$1dde0 - $1dddd
+SaffronHouse1Script: ; 0x1dddd
+    jp $3c3c
+; 0x1dde0
+
 SaffronHouse1Texts: ; 0x1dde0
     dw SaffronHouse1Text1, SaffronHouse1Text2, SaffronHouse1Text3, SaffronHouse1Text4
 
@@ -8653,12 +12379,18 @@
 SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $5e3f, $5e3c ; blocks, texts, scripts
+    dw SaffronHouse2Blocks, SaffronHouse2Texts, SaffronHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e8a ; objects
+    dw SaffronHouse2Object ; objects
 
-INCBIN "baserom.gbc",$1de3c,$1de41 - $1de3c
+SaffronHouse2Script: ; 0x1de3c
+    jp $3c3c
+; 0x1de3f
+
+SaffronHouse2Texts: ; 0x1de3f
+    dw SaffronHouse2Text1
+
 SaffronHouse2Text1: ; 0x1de41
     db $08 ; asm
     ld a, [$d7bd]
@@ -8685,6 +12417,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1de75,$15
+
 SaffronHouse2Object: ; 0x1de8a (size=26)
     db $a ; border tile
 
@@ -8704,12 +12437,17 @@
 DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46)
     db $11 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw DiglettsCaveRoute2Blocks, $5eb8, $5eb0 ; blocks, texts, scripts
+    dw DiglettsCaveRoute2Blocks, DiglettsCaveRoute2Texts, DiglettsCaveRoute2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5ebf ; objects
+    dw DiglettsCaveRoute2Object ; objects
 
-INCBIN "baserom.gbc",$1deb0,$1deb8 - $1deb0
+DiglettsCaveRoute2Script: ; 0x1deb0
+    ld a, $d
+    ld [$d365], a
+    jp $3c3c
+; 0x1deb8
+
 DiglettsCaveRoute2Texts: ; 0x1deb8
     dw DiglettsCaveRoute2Text1
 
@@ -8738,13 +12476,18 @@
 Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $5ef0, $5eed ; blocks, texts, scripts
+    dw Route2HouseBlocks, Route2HouseTexts, Route2HouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5f07 ; objects
+    dw Route2HouseObject ; objects
 
-INCBIN "baserom.gbc",$1deed,$1def4 - $1deed
+Route2HouseScript: ; 0x1deed
+    jp $3c3c
+; 0x1def0
 
+Route2HouseTexts: ; 0x1def0
+    dw Route2HouseText1, Route2HouseText2
+
 Route2HouseText1: ; 0x1def4
     TX_FAR _Route2HouseText1
     db $50
@@ -8777,13 +12520,61 @@
 Route5Gate_h: ; 0x1df27 to 0x1df33 (12 bytes) (bank=7) (id=70)
     db $0c ; tileset
     db $03, $04 ; dimensions (y, x)
-    dw Route5GateBlocks, $5fa4, $5f33 ; blocks, texts, scripts
+    dw Route5GateBlocks, Route5GateTexts, Route5GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5ffb ; objects
+    dw Route5GateObject ; objects
 
-INCBIN "baserom.gbc",$1df33,$1dfaa - $1df33
+Route5GateScript: ; 0x1df33
+    call $3c3c
+    ld a, [$d662]
+    ld hl, $5f3f
+    jp $3d97
+; 0x1df3f
 
+Route5GateScripts: ; 0x1df3f
+    dw Route5GateScript0
+
+INCBIN "baserom.gbc",$1df41,$f
+
+Route5GateScript0: ; 0x1df50
+    ld a, [$d728]
+    bit 6, a
+    ret nz
+    ld hl, $5f8f
+    call $34bf
+    ret nc
+    ld a, $2
+    ld [$d528], a
+    xor a
+    ld [$ff00+$b4], a
+    ld b, $16
+    ld hl, $659f
+    call Bankswitch
+    ld a, [$ff00+$db]
+    and a
+    jr nz, .asm_1df82 ; 0x1df70 $10
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $2920
+    call $5f43
+    ld a, $1
+    ld [$d662], a
+    ret
+.asm_1df82
+    ld a, $3
+    ld [$ff00+$8c], a
+    call $2920
+    ld hl, $d728
+    set 6, [hl]
+    ret
+; 0x1df8f
+
+INCBIN "baserom.gbc",$1df8f,$15
+
+Route5GateTexts: ; 0x1dfa4
+    dw Route5GateText1, Route5GateText2, Route5GateText3
+
 Route8GateText1:
 Route7GateText1:
 Route6GateText1:
@@ -8816,8 +12607,20 @@
     jp $24d7
 ; 0x1dfe7
 
-INCBIN "baserom.gbc",$1dfe7,$14
+Route8GateText2:
+Route7GateText2:
+Route6GateText2:
+Route5GateText2: ; 0x1dfe7
+INCBIN "baserom.gbc",$1dfe7,$5
 
+Route8GateText3:
+Route7GateText3:
+Route6GateText3:
+Route5GateText3: ; 0x1dfec
+INCBIN "baserom.gbc",$1dfec,$5
+
+INCBIN "baserom.gbc",$1dff1,$1dffb - $1dff1
+
 Route5GateObject: ; 0x1dffb (size=42)
     db $a ; border tile
 
@@ -8844,12 +12647,61 @@
 Route6Gate_h: ; 0x1e031 to 0x1e03d (12 bytes) (bank=7) (id=73)
     db $0c ; tileset
     db $03, $04 ; dimensions (y, x)
-    dw Route6GateBlocks, $60b8, $603d ; blocks, texts, scripts
+    dw Route6GateBlocks, Route6GateTexts, Route6GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $60be ; objects
+    dw Route6GateObject ; objects
 
-INCBIN "baserom.gbc",$1e03d,$1e0be - $1e03d
+Route6GateScript: ; 0x1e03d
+    call $3c3c
+    ld hl, $604a
+    ld a, [$d636]
+    call $3d97
+    ret
+; 0x1e04a
+
+Route6GateScripts: ; 0x1e04a
+    dw Route6GateScript0
+
+INCBIN "baserom.gbc",$1e04c,$2
+
+Route6GateScript0: ; 0x1e04e
+    ld a, [$d728]
+    bit 6, a
+    ret nz
+    ld hl, $608c
+    call $34bf
+    ret nc
+    ld a, $1
+    ld [$d528], a
+    xor a
+    ld [$ff00+$b4], a
+    ld b, $16
+    ld hl, $659f
+    call Bankswitch
+    ld a, [$ff00+$db]
+    and a
+    jr nz, .asm_1e080 ; 0x1e06e $10
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $2920
+    call $60a1
+    ld a, $1
+    ld [$d636], a
+    ret
+.asm_1e080
+    ld hl, $d728
+    set 6, [hl]
+    ld a, $3
+    ld [$ff00+$8c], a
+    jp $2920
+; 0x1e08c
+
+INCBIN "baserom.gbc",$1e08c,$2c
+
+Route6GateTexts: ; 0x1e0b8
+    dw Route6GateText1, Route6GateText2, Route6GateText3
+
 Route6GateObject: ; 0x1e0be (size=42)
     db $a ; border tile
 
@@ -8876,12 +12728,62 @@
 Route7Gate_h: ; 0x1e0f4 to 0x1e100 (12 bytes) (bank=7) (id=76)
     db $0c ; tileset
     db $04, $03 ; dimensions (y, x)
-    dw Route7GateBlocks, $617f, $6100 ; blocks, texts, scripts
+    dw Route7GateBlocks, Route7GateTexts, Route7GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6185 ; objects
+    dw Route7GateObject ; objects
 
-INCBIN "baserom.gbc",$1e100,$1e185 - $1e100
+Route7GateScript: ; 0x1e100
+    call $3c3c
+    ld a, [$d663]
+    ld hl, $610d
+    call $3d97
+    ret
+; 0x1e10d
+
+Route7GateScripts: ; 0x1e10d
+    dw Route7GateScript0
+
+INCBIN "baserom.gbc",$1e10f,$19
+
+Route7GateScript0: ; 0x1e128
+    ld a, [$d728]
+    bit 6, a
+    ret nz
+    ld hl, $6167
+    call $34bf
+    ret nc
+    ld a, $8
+    ld [$d528], a
+    xor a
+    ld [$ff00+$b4], a
+    ld b, $16
+    ld hl, $659f
+    call Bankswitch
+    ld a, [$ff00+$db]
+    and a
+    jr nz, .asm_1e15a ; 0x1e148 $10
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $2920
+    call $6111
+    ld a, $1
+    ld [$d663], a
+    ret
+.asm_1e15a
+    ld a, $3
+    ld [$ff00+$8c], a
+    call $2920
+    ld hl, $d728
+    set 6, [hl]
+    ret
+; 0x1e167
+
+INCBIN "baserom.gbc",$1e167,$18
+
+Route7GateTexts: ; 0x1e17f
+    dw Route7GateText1, Route7GateText2, Route7GateText3
+
 Route7GateObject: ; 0x1e185 (size=42)
     db $a ; border tile
 
@@ -8908,12 +12810,59 @@
 Route8Gate_h: ; 0x1e1bb to 0x1e1c7 (12 bytes) (bank=7) (id=79)
     db $0c ; tileset
     db $04, $03 ; dimensions (y, x)
-    dw Route8GateBlocks, $6241, $61c7 ; blocks, texts, scripts
+    dw Route8GateBlocks, Route8GateTexts, Route8GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6247 ; objects
+    dw Route8GateObject ; objects
 
-INCBIN "baserom.gbc",$1e1c7,$1e247 - $1e1c7
+Route8GateScript: ; 0x1e1c7
+    call $3c3c
+    ld hl, $61d3
+    ld a, [$d637]
+    jp $3d97
+; 0x1e1d3
+
+Route8GateScripts: ; 0x1e1d3
+    dw Route8GateScript0
+
+INCBIN "baserom.gbc",$1e1d5,$19
+
+Route8GateScript0: ; 0x1e1ee
+    ld a, [$d728]
+    bit 6, a
+    ret nz
+    ld hl, $622c
+    call $34bf
+    ret nc
+    ld a, $2
+    ld [$d528], a
+    xor a
+    ld [$ff00+$b4], a
+    ld b, $16
+    ld hl, $659f
+    call Bankswitch
+    ld a, [$ff00+$db]
+    and a
+    jr nz, .asm_1e220 ; 0x1e20e $10
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $2920
+    call $61d7
+    ld a, $1
+    ld [$d637], a
+    ret
+.asm_1e220
+    ld hl, $d728
+    set 6, [hl]
+    ld a, $3
+    ld [$ff00+$8c], a
+    jp $2920
+; 0x1e22c
+INCBIN "baserom.gbc",$1e22c,$15
+
+Route8GateTexts: ; 0x1e241
+    dw Route8GateText1, Route8GateText2, Route8GateText3
+
 Route8GateObject: ; 0x1e247 (size=42)
     db $a ; border tile
 
@@ -8940,12 +12889,16 @@
 UndergroundPathEntranceRoute8_h: ; 0x1e27d to 0x1e289 (12 bytes) (bank=7) (id=80)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw UndergroundPathEntranceRoute8Blocks, $6291, $6289 ; blocks, texts, scripts
+    dw UndergroundPathEntranceRoute8Blocks, UndergroundPathEntranceRoute8Texts, UndergroundPathEntranceRoute8Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6298 ; objects
+    dw UndergroundPathEntranceRoute8Object ; objects
 
-INCBIN "baserom.gbc",$1e289,$1e291 - $1e289
+UndergroundPathEntranceRoute8Script: ; 0x1e289
+    ld a, $13
+    ld [$d365], a
+    jp $3c3c
+; 0x1e291
 
 UndergroundPathEntranceRoute8Texts: ; 0x1e291
     dw UndergroundPathEntranceRoute8Text1
@@ -8977,13 +12930,28 @@
 PowerPlant_h: ; 0x1e2ba to 0x1e2c6 (12 bytes) (bank=7) (id=83)
     db $16 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw PowerPlantBlocks, $62df, $62c6 ; blocks, texts, scripts
+    dw PowerPlantBlocks, PowerPlantTexts, PowerPlantScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $63bf ; objects
+    dw PowerPlantObject ; objects
 
-INCBIN "baserom.gbc",$1e2c6,$1e368 - $1e2c6
+PowerPlantScript: ; 0x1e2c6
+    call $3c3c
+    ld hl, $62fb
+    ld de, $62d9
+    ld a, [$d663]
+    call $3160
+    ld [$d663], a
+    ret
+; 0x1e2d9
 
+INCBIN "baserom.gbc",$1e2d9,$6
+
+PowerPlantTexts: ; 0x1e2df
+    dw PowerPlantText1, PowerPlantText2, PowerPlantText3, PowerPlantText4, PowerPlantText5, PowerPlantText6, PowerPlantText7, PowerPlantText8, PowerPlantText9, PowerPlantText10, PowerPlantText11, PowerPlantText12, PowerPlantText13, PowerPlantText14
+
+INCBIN "baserom.gbc",$1e2fb,$6d
+
 asm_234cc:
     call $31cc
     ld a, [$da39]
@@ -9035,7 +13003,7 @@
     db $8 ; asm
     ld hl, $635b
     jr asm_234cc ; 0x1e3a8 $be
-    rla
+    rla ; probably a TX_FAR
     ld [$ff00+c], a
     ld b, l
     inc hl
@@ -9086,12 +13054,18 @@
 DiglettsCaveEntranceRoute11_h: ; 0x1e5ae to 0x1e5ba (12 bytes) (bank=7) (id=85)
     db $11 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $420e, $65c3, $65ba ; blocks, texts, scripts
+    dw DiglettsCaveEntranceRoute11Blocks, DiglettsCaveEntranceRoute11Texts, DiglettsCaveEntranceRoute11Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $65ca ; objects
+    dw DiglettsCaveEntranceRoute11Object ; objects
 
-INCBIN "baserom.gbc",$1e5ba,$1e5c3 - $1e5ba
+DiglettsCaveEntranceRoute11Script: ; 0x1e5ba
+    call $3c3c
+    ld a, $16
+    ld [$d365], a
+    ret
+; 0x1e5c3
+
 DiglettsCaveEntranceRoute11Texts: ; 0x1e5c3
     dw DiglettsCaveEntranceRoute11Text1
 
@@ -9122,12 +13096,18 @@
 Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $41de, $65fb, $65f8 ; blocks, texts, scripts
+    dw Route16HouseBlocks, Route16HouseTexts, Route16HouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6657 ; objects
+    dw Route16HouseObject ; objects
 
-INCBIN "baserom.gbc",$1e5f8,$1e5ff - $1e5f8
+Route16HouseScript: ; 0x1e5f8
+    jp $3c3c
+; 0x1e5fb
+
+Route16HouseTexts: ; 0x1e5fb
+    dw Route16HouseText1, Route16HouseText2
+
 Route16HouseText1: ; 0x1e5ff
     db $08 ; asm
     ld a, [$d7e0]
@@ -9150,6 +13130,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1e62b,$1e640 - $1e62b
+
 Route16HouseText2: ; 0x1e640
     db $08 ; asm
     ld hl, $6652
@@ -9160,6 +13141,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$1e652,$5
+
 Route16HouseObject: ; 0x1e657 (size=32)
     db $a ; border tile
 
@@ -9180,12 +13162,59 @@
 Route22Gate_h: ; 0x1e677 to 0x1e683 (12 bytes) (bank=7) (id=193)
     db $0c ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw Route22GateBlocks, $66df, $6683 ; blocks, texts, scripts
+    dw Route22GateBlocks, Route22GateTexts, Route22GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6720 ; objects
+    dw Route22GateObject ; objects
 
-INCBIN "baserom.gbc",$1e683,$1e6e1 - $1e683
+Route22GateScript: ; 0x1e683
+    call $3c3c
+    ld hl, $669e
+    ld a, [$d60e]
+    call $3d97
+    ld a, [$d361]
+    cp $4
+    ld a, $22
+    jr c, .asm_1e69a ; 0x1e696 $2
+    ld a, $21
+.asm_1e69a
+    ld [$d365], a
+    ret
+; 0x1e69e
+
+Route22GateScripts: ; 0x1e69e
+    dw Route22GateScript0, Route22GateScript1
+
+INCBIN "baserom.gbc",$1e6a2,$2
+
+Route22GateScript0: ; 0x1e6a4
+    ld hl, $66b5
+    call $34bf
+    ret nc
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    jp $2920
+; 0x1e6b5
+
+INCBIN "baserom.gbc",$1e6b5,$1e6cd - $1e6b5
+
+Route22GateScript1: ; 0x1e6cd
+    ld a, [$cd38]
+    and a
+    ret nz
+    xor a
+    ld [$cd6b], a
+    call Delay3
+    ld a, $0
+    ld [$d60e], a
+    ret
+; 0x1e6df
+
+Route22GateTexts: ; 0x1e6df
+    dw Route22GateText1
+
 Route22GateText1: ; 0x1e6e1
     db $8
     ld a, [$d356]
@@ -9204,7 +13233,9 @@
     ld [$d60e], a
     jp $24d7
 ; 0x1e704
+
 INCBIN "baserom.gbc",$1e704,$1c
+
 Route22GateObject: ; 0x1e720 (size=42)
     db $a ; border tile
 
@@ -9231,15 +13262,36 @@
 BillsHouse_h: ; 0x1e75e to 0x1e76a (12 bytes) (bank=7) (id=88)
     db $10 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $6905, $6834, $676a ; blocks, texts, scripts
+    dw BillsHouseBlocks, BillsHouseTexts, BillsHouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $68df ; objects
+    dw BillsHouseObject ; objects
 
-INCBIN "baserom.gbc",$1e76a,$1e83d - $1e76a
+BillsHouseScript: ; 0x1e76a
+    call $3c3c
+    ld a, [$d661]
+    ld hl, $6776
+    jp $3d97
+; 0x1e776
 
-;0x1e83d
-BillsHouseText1:
+BillsHouseScripts: ; 0x1e776
+    dw BillsHouseScript0
+
+INCBIN "baserom.gbc",$1e778,$a
+
+BillsHouseScript0: ; 0x1e782
+    ret
+; 0x1e783
+
+INCBIN "baserom.gbc",$1e783,$b1
+
+BillsHouseTexts: ; 0x1e834
+    dw BillsHouseText1, BillsHouseText2, BillsHouseText3, BillsHouseText4
+
+BillsHouseText4:
+    db $fd
+
+BillsHouseText1: ; 0x1e83d
     db $8
     ld hl, $6865
     call PrintText
@@ -9260,7 +13312,7 @@
 asm_fd4e2 ; 0x1e862
     jp $24d7
 
-; dunno what this is
+; dunno what this is (rla indicates $17 or TX_FAR)
     rla
     ld h, a
     ld d, d
@@ -9316,6 +13368,7 @@
     ld hl, $68da
     call PrintText
     jp $24d7
+; 0x1e8da
 
 INCBIN "baserom.gbc",$1e8da,$5
 
@@ -9337,13 +13390,17 @@
     EVENT_DISP $4, $7, $2
     EVENT_DISP $4, $7, $3
 
-INCBIN "baserom.gbc",$1e905,$16fb
+BillsHouseBlocks:
+    INCBIN "maps/billshouse.blk"
 
+INCBIN "baserom.gbc",$1e905 + 16,$16fb - 16
+
 SECTION "bank8",DATA,BANK[$8]
 
 INCBIN "baserom.gbc",$20000,$4000
 
 SECTION "bank9",DATA,BANK[$9]
+
 RhydonPicFront:
 	INCBIN "pic/bmon/rhydon.pic"
 RhydonPicBack:
@@ -10533,6 +14590,7 @@
 	db "LANCE@"
 
 INCBIN "baserom.gbc",$39B87,$39C53 - $39B87
+
 ReadTrainer: ; 5C53
 
 ; don't change any moves in a link battle
@@ -14083,6 +18141,7 @@
 	db "@"
 
 INCBIN "baserom.gbc",$3CA83,$3D6A9 - $3CA83
+
 ; in-battle stuff
 	ld hl,$D062
 	res 4,[hl]
@@ -14682,6 +18741,7 @@
 INCBIN "baserom.gbc",$3EF12,$40000 - $3EF12
 
 SECTION "bank10",DATA,BANK[$10]
+
 INCBIN "baserom.gbc",$40000,$47E
 
 PokedexEntryPointers: ; 447E
@@ -16236,7 +20296,7 @@
 LavenderTown_h: ; 0x44000 to 0x4402d (45 bytes) (bank=11) (id=4)
     db $00 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw LavenderTownBlocks, $410e, $410b ; blocks, texts, scripts
+    dw LavenderTownBlocks, LavenderTownTexts, LavenderTownScript ; blocks, texts, scripts
     db NORTH | SOUTH | WEST ; connections
 
     ; connections data
@@ -16261,7 +20321,7 @@
 
     ; end connection data
 
-    dw $402d ; objects
+    dw LavenderTownObject ; objects
 
 LavenderTownObject: ; 0x4402d (size=88)
     db $2c ; border tile
@@ -16298,13 +20358,19 @@
 LavenderTownBlocks: ; 90
     INCBIN "maps/lavendertown.blk"
 
-ViridianPokeCenterBlocks: ; 28
+ViridianPokecenterBlocks: ; 28
     INCBIN "maps/viridianpokecenter.blk"
 
 SafariZoneRestHouse1Blocks: ; 16
     INCBIN "maps/safarizoneresthouse1.blk"
 
-INCBIN "baserom.gbc",$4410b,$44120 - $4410b
+LavenderTownScript: ; 0x4410b
+    jp $3c3c
+; 0x4410e
+
+LavenderTownTexts: ; 0x4410e
+    dw LavenderTownText1, LavenderTownText2, LavenderTownText3, LavenderTownText4, LavenderTownText5, LavenderTownText6, LavenderTownText7, LavenderTownText8, LavenderTownText9
+
 LavenderTownText1: ; 0x44120
     db $08 ; asm
     ld hl, $413c
@@ -16350,15 +20416,23 @@
 ViridianPokecenter_h: ; 0x44251 to 0x4425d (12 bytes) (bank=11) (id=41)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $40df, $4263, $425d ; blocks, texts, scripts
+    dw ViridianPokecenterBlocks, ViridianPokecenterTexts, ViridianPokeCenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4277 ; objects
+    dw ViridianPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$4425d,$4426c - $4425d
+ViridianPokeCenterScript: ; 0x4425d
+    call $22fa
+    jp $3c3c
+; 0x44263
 
-ViridianPokeCenterText2:
-ViridianPokeCenterText1: ; 0x4426c
+ViridianPokecenterTexts: ; 0x44263
+    dw ViridianPokeCenterText1, ViridianPokeCenterText2, ViridianPokeCenterText3, ViridianPokeCenterText4
+
+ViridianPokeCenterText1: ; 0x4426b
+    db $ff
+
+ViridianPokeCenterText2: ; 0x4426c
     TX_FAR _ViridianPokeCenterText1
     db $50
 
@@ -16368,10 +20442,10 @@
     TX_FAR _ViridianPokeCenterText3
     db $50
 
-;XXX wtf?
-db $f6
+ViridianPokeCenterText4:
+    db $f6
 
-ViridianPokeCenterObject: ; 0x44277 (size=44)
+ViridianPokecenterObject: ; 0x44277 (size=44)
     db $0 ; border tile
 
     db $2 ; warps
@@ -16393,12 +20467,54 @@
 Mansion1_h: ; 0x442a3 to 0x442af (12 bytes) (bank=11) (id=165)
     db $16 ; tileset
     db $0e, $0f ; dimensions (y, x)
-    dw $43fe, $432c, $42af ; blocks, texts, scripts
+    dw Mansion1Blocks, Mansion1Texts, Mansion1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $43a4 ; objects
+    dw Mansion1Object ; objects
 
-INCBIN "baserom.gbc",$442af,$44341 - $442af
+Mansion1Script:
+    call Mansion1Subscript1
+    call $3c3c
+    ld hl, $4334
+    ld de, $4326
+    ld a, [$d63a]
+    call $3160
+    ld [$d63a], a
+    ret
+; 0x442c5
+
+Mansion1Subscript1: ; 0x442c5
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    ret z
+    ld a, [$d796]
+    bit 0, a
+    jr nz, .asm_442ec ; 0x442d2 $18
+    ld bc, $060c
+    call $430b
+    ld bc, $0308
+    call $4304
+    ld bc, $080a
+    call $4304
+    ld bc, $0d0d
+    jp $4304
+.asm_442ec
+    ld bc, $060c
+    call $4304
+    ld bc, $0308
+    call $430b
+    ld bc, $080a
+    call $430b
+    ld bc, $0d0d
+    jp $430b
+; 0x44304
+
+INCBIN "baserom.gbc",$44304,$4432c - $44304
+
+Mansion1Texts: ; 4432c
+INCBIN "baserom.gbc",$4432c,$44341 - $4432c
+
 Mansion1Text1: ; 0x44341
     db $08 ; asm
     ld hl, $4334
@@ -16406,6 +20522,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$4434b,$59
+
 Mansion1Object: ; 0x443a4 (size=90)
     db $2e ; border tile
 
@@ -16436,18 +20553,34 @@
     EVENT_DISP $f, $1b, $1a
     EVENT_DISP $f, $1b, $1b
 
-INCBIN "baserom.gbc",$443fe,$d2
+Mansion1Blocks: ; 203
+    INCBIN "maps/mansion1.blk"
 
 RockTunnel1_h: ; 0x444d0 to 0x444dc (12 bytes) (bank=11) (id=82)
     db $11 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw RockTunnel1Blocks, $44f5, $44dc ; blocks, texts, scripts
+    dw RockTunnel1Blocks, RockTunnel1Texts, RockTunnel1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $45f6 ; objects
+    dw RockTunnel1Object ; objects
 
-INCBIN "baserom.gbc",$444dc,$4455a - $444dc
+RockTunnel1Script: ; 0x444dc
+    call $3c3c
+    ld hl, $4505
+    ld de, $44ef
+    ld a, [$d621]
+    call $3160
+    ld [$d621], a
+    ret
+; 0x444ef
 
+INCBIN "baserom.gbc",$444ef,$6
+
+RockTunnel1Texts: ; 0x444f5
+    dw RockTunnel1Text1, RockTunnel1Text2, RockTunnel1Text3, RockTunnel1Text4, RockTunnel1Text5, RockTunnel1Text6, RockTunnel1Text7, RockTunnel1Text8
+
+INCBIN "baserom.gbc",$44505,$55
+
 RockTunnel1Text1: ; 0x4455a
     db $8
     ld hl, $4505
@@ -16532,14 +20665,59 @@
 SeafoamIslands1_h: ; 0x447dd to 0x447e9 (12 bytes) (bank=11) (id=192)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SeafoamIslands1Blocks, $484b, $47e9 ; blocks, texts, scripts
+    dw SeafoamIslands1Blocks, SeafoamIslands1Texts, SeafoamIslands1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $484f ; objects
+    dw SeafoamIslands1Object ; objects
 
-INCBIN "baserom.gbc",$447e9,$4484b - $447e9
+SeafoamIslands1Script: ; 0x447e9
+    call $3c3c
+    ld hl, $d7e7
+    set 0, [hl]
+    ld hl, $cd60
+    bit 7, [hl]
+    res 7, [hl]
+    jr z, .asm_4483b ; 0x447f8 $41
+    ld hl, $4846
+    call $34e4
+    ret nc
+    ld hl, $d7e8
+    ld a, [$cd3d]
+    cp $1
+    jr nz, .asm_44819 ; 0x44809 $e
+    set 6, [hl]
+    ld a, $d7
+    ld [$d079], a
+    ld a, $d9
+    ld [$d07a], a
+    jr .asm_44825 ; 0x44817 $c
+.asm_44819
+    set 7, [hl]
+    ld a, $d8
+    ld [$d079], a
+    ld a, $da
+    ld [$d07a], a
+.asm_44825
+    ld a, [$d079]
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    ld a, [$d07a]
+    ld [$cc4d], a
+    ld a, $15
+    jp $3e6d
+.asm_4483b
+    ld a, $9f
+    ld [$d71d], a
+    ld hl, $4846
+    jp $6981
+; 0x44846
+
+INCBIN "baserom.gbc",$44846,$5
+
 SeafoamIslands1Texts: ; 0x4484b
     dw SeafoamIslands1Text1, SeafoamIslands1Text2
+
 SeafoamIslands1Object: ; 0x4484f (size=72)
     db $7d ; border tile
 
@@ -16575,13 +20753,18 @@
 SSAnne3_h: ; 0x44926 to 0x44932 (12 bytes) (bank=11) (id=97)
     db $0d ; tileset
     db $03, $0a ; dimensions (y, x)
-    dw SSAnne3Blocks, $4935, $4932 ; blocks, texts, scripts
+    dw SSAnne3Blocks, SSAnne3Texts, SSAnne3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $493c ; objects
+    dw SSAnne3Object ; objects
 
-INCBIN "baserom.gbc",$44932,$44937 - $44932
+SSAnne3Script: ; 0x44932
+    jp $3c3c
+; 0x44935
 
+SSAnne3Texts: ; 0x44935
+    dw SSAnne3Text1
+
 SSAnne3Text1: ; 0x44937
     TX_FAR _SSAnne3Text1
     db $50
@@ -16608,12 +20791,29 @@
 VictoryRoad3_h: ; 0x44974 to 0x44980 (12 bytes) (bank=11) (id=198)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw VictoryRoad3Blocks, $4a24, $4980 ; blocks, texts, scripts
+    dw VictoryRoad3Blocks, VictoryRoad3Texts, VictoryRoad3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4acd ; objects
+    dw VictoryRoad3Object ; objects
 
-INCBIN "baserom.gbc",$44980,$44a69 - $44980
+VictoryRoad3Script: ; 0x44980
+    call $4996
+    call $3c3c
+    ld hl, $4a38
+    ld de, $49b1
+    ld a, [$d640]
+    call $3160
+    ld [$d640], a
+    ret
+; 0x44996
+
+INCBIN "baserom.gbc",$44996,$8e
+
+VictoryRoad3Texts: ; 0x44a24
+    dw VictoryRoad3Text1, VictoryRoad3Text2, VictoryRoad3Text3, VictoryRoad3Text4, VictoryRoad3Text5, VictoryRoad3Text6, VictoryRoad3Text7, VictoryRoad3Text8, VictoryRoad3Text9, VictoryRoad3Text10
+
+INCBIN "baserom.gbc",$44a38,$31
+
 VictoryRoad3Text1: ; 0x44a69
     db $08 ; asm
     ld hl, $4a38
@@ -16639,6 +20839,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$44a91,$3c
+
 VictoryRoad3Object: ; 0x44acd (size=106)
     db $7d ; border tile
 
@@ -16674,12 +20875,29 @@
 RocketHideout1_h: ; 0x44bbe to 0x44bca (12 bytes) (bank=11) (id=199)
     db $16 ; tileset
     db $0e, $0f ; dimensions (y, x)
-    dw RocketHideout1Blocks, $4c14, $4bca ; blocks, texts, scripts
+    dw RocketHideout1Blocks, RocketHideout1Texts, RocketHideout1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4ce7 ; objects
+    dw RocketHideout1Object ; objects
 
-INCBIN "baserom.gbc",$44bca,$44c5f - $44bca
+RocketHideout1Script: ; 0x44bca
+    call $4be0
+    call $3c3c
+    ld hl, $4c22
+    ld de, $4c0e
+    ld a, [$d631]
+    call $3160
+    ld [$d631], a
+    ret
+; 0x44be0
+
+INCBIN "baserom.gbc",$44be0,$34
+
+RocketHideout1Texts: ; 0x44c14
+    dw RocketHideout1Text1, RocketHideout1Text2, RocketHideout1Text3, RocketHideout1Text4, RocketHideout1Text5, RocketHideout1Text6, RocketHideout1Text7
+
+INCBIN "baserom.gbc",$44c22,$3d
+
 RocketHideout1Text1: ; 0x44c5f
     db $08 ; asm
     ld hl, $4c22
@@ -16711,6 +20929,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$44c91,$56
+
 RocketHideout1Object: ; 0x44ce7 (size=98)
     db $2e ; border tile
 
@@ -16745,12 +20964,28 @@
 RocketHideout2_h: ; 0x44e1b to 0x44e27 (12 bytes) (bank=11) (id=200)
     db $16 ; tileset
     db $0e, $0f ; dimensions (y, x)
-    dw RocketHideout2Blocks, $50c7, $4e27 ; blocks, texts, scripts
+    dw RocketHideout2Blocks, RocketHideout2Texts, RocketHideout2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $50f7 ; objects
+    dw RocketHideout2Object ; objects
 
-INCBIN "baserom.gbc",$44e27,$450de - $44e27
+RocketHideout2Script: ; 0x44e27
+    call $3c3c
+    ld hl, $50d1
+    ld de, $4e3a
+    ld a, [$d632]
+    call $3160
+    ld [$d632], a
+    ret
+; 0x44e3a
+
+INCBIN "baserom.gbc",$44e3a,$28d
+
+RocketHideout2Texts: ; 0x450c7
+    dw RocketHideout2Text1, RocketHideout2Text2, RocketHideout2Text3, RocketHideout2Text4, RocketHideout2Text5
+
+INCBIN "baserom.gbc",$450d1,$d
+
 RocketHideout2Text1: ; 0x450de
     db $08 ; asm
     ld hl, $50d1
@@ -16758,6 +20993,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$450e8,$f
+
 RocketHideout2Object: ; 0x450f7 (size=80)
     db $2e ; border tile
 
@@ -16790,12 +21026,28 @@
 RocketHideout3_h: ; 0x45219 to 0x45225 (12 bytes) (bank=11) (id=201)
     db $16 ; tileset
     db $0e, $0f ; dimensions (y, x)
-    dw RocketHideout3Blocks, $52fa, $5225 ; blocks, texts, scripts
+    dw RocketHideout3Blocks, RocketHideout3Texts, RocketHideout3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $534d ; objects
+    dw RocketHideout3Object ; objects
 
-INCBIN "baserom.gbc",$45225,$4531b - $45225
+RocketHideout3Script: ; 0x45225
+    call $3c3c
+    ld hl, $5302
+    ld de, $5238
+    ld a, [$d633]
+    call $3160
+    ld [$d633], a
+    ret
+; 0x45238
+
+INCBIN "baserom.gbc",$45238,$c2
+
+RocketHideout3Texts: ; 0x452fa
+    dw RocketHideout3Text1, RocketHideout3Text2, RocketHideout3Text3, RocketHideout3Text4
+
+INCBIN "baserom.gbc",$45302,$19
+
 RocketHideout3Text1: ; 0x4531b
     db $08 ; asm
     ld hl, $5302
@@ -16803,6 +21055,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$45325,$45334 - $45325
+
 RocketHideout3Text2: ; 0x45334
     db $08 ; asm
     ld hl, $530e
@@ -16810,6 +21063,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$4533e,$f
+
 RocketHideout3Object: ; 0x4534d (size=50)
     db $2e ; border tile
 
@@ -16835,12 +21089,29 @@
 RocketHideout4_h: ; 0x45451 to 0x4545d (12 bytes) (bank=11) (id=202)
     db $16 ; tileset
     db $0c, $0f ; dimensions (y, x)
-    dw RocketHideout4Blocks, $5501, $545d ; blocks, texts, scripts
+    dw RocketHideout4Blocks, RocketHideout4Texts, RocketHideout4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $55f1 ; objects
+    dw RocketHideout4Object ; objects
 
-INCBIN "baserom.gbc",$4545d,$4553a - $4545d
+RocketHideout4Script: ; 0x4545d
+    call $5473
+    call $3c3c
+    ld hl, $5515
+    ld de, $54ae
+    ld a, [$d634]
+    call $3160
+    ld [$d634], a
+    ret
+; 0x45473
+
+INCBIN "baserom.gbc",$45473,$8e
+
+RocketHideout4Texts: ; 0x45501
+    dw RocketHideout4Text1, RocketHideout4Text2, RocketHideout4Text3, RocketHideout4Text4, RocketHideout4Text5, RocketHideout4Text6, RocketHideout4Text7, RocketHideout4Text8, RocketHideout4Text9, RocketHideout4Text10
+
+INCBIN "baserom.gbc",$45515,$25
+
 RocketHideout4Text1: ; 0x4553a
     db $08 ; asm
     ld a, [$d81b]
@@ -16869,7 +21140,11 @@
 .asm_209f0 ; 0x45577
     jp $24d7
 
-INCBIN "baserom.gbc",$4557a,$45589 - $4557a
+INCBIN "baserom.gbc",$4557a,$45584 - $4557a
+
+RocketHideout4Text10: ; 0x45584
+INCBIN "baserom.gbc",$45584,5
+
 RocketHideout4Text2: ; 0x45589
     db $08 ; asm
     ld hl, $5515
@@ -16877,6 +21152,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$45593,$455a2 - $45593
+
 RocketHideout4Text3: ; 0x455a2
     db $08 ; asm
     ld hl, $5521
@@ -16884,6 +21160,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$455ac,$455bb - $455ac
+
 RocketHideout4Text4: ; 0x455bb
     db $08 ; asm
     ld hl, $552d
@@ -16891,6 +21168,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$455c5,$2c
+
 RocketHideout4Object: ; 0x455f1 (size=95)
     db $2e ; border tile
 
@@ -16923,12 +21201,33 @@
 RocketHideoutElevator_h: ; 0x45704 to 0x45710 (12 bytes) (bank=11) (id=203)
     db $12 ; tileset
     db $04, $03 ; dimensions (y, x)
-    dw RocketHideoutElevatorBlocks, $576b, $5710 ; blocks, texts, scripts
+    dw RocketHideoutElevatorBlocks, RocketHideoutElevatorTexts, RocketHideoutElevatorScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5791 ; objects
+    dw RocketHideoutElevatorObject ; objects
 
-INCBIN "baserom.gbc",$45710,$4576d - $45710
+RocketHideoutElevatorScript: ; 0x45710
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    push hl
+    call nz, $572c
+    pop hl
+    bit 7, [hl]
+    res 7, [hl]
+    call nz, $575f
+    xor a
+    ld [$cf0c], a
+    inc a
+    ld [$cc3c], a
+    ret
+; 0x4572c
+
+INCBIN "baserom.gbc",$4572c,$3f
+
+RocketHideoutElevatorTexts: ; 0x4576b
+    dw RocketHideoutElevatorText1
+
 RocketHideoutElevatorText1: ; 0x4576d
     db $08 ; asm
     ld b,LIFT_KEY
@@ -16946,6 +21245,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$4578b,$6
+
 RocketHideoutElevatorObject: ; 0x45791 (size=23)
     db $f ; border tile
 
@@ -16968,12 +21268,33 @@
 SilphCoElevator_h: ; 0x457b4 to 0x457c0 (12 bytes) (bank=11) (id=236)
     db $12 ; tileset
     db $02, $02 ; dimensions (y, x)
-    dw SilphCoElevatorBlocks, $5833, $57c0 ; blocks, texts, scripts
+    dw SilphCoElevatorBlocks, SilphCoElevatorTexts, SilphCoElevatorScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5844 ; objects
+    dw SilphCoElevatorObject ; objects
 
-INCBIN "baserom.gbc",$457c0,$45835 - $457c0
+SilphCoElevatorScript: ; 0x457c0
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    push hl
+    call nz, $57dc
+    pop hl
+    bit 7, [hl]
+    res 7, [hl]
+    call nz, $5827
+    xor a
+    ld [$cf0c], a
+    inc a
+    ld [$cc3c], a
+    ret
+; 0x457dc
+
+INCBIN "baserom.gbc",$457dc,$57
+
+SilphCoElevatorTexts: ; 0x45833
+    dw SilphCoElevatorText1
+
 SilphCoElevatorText1: ; 0x45835
     db $08 ; asm
     call $57f1
@@ -17004,13 +21325,18 @@
 SafariZoneEast_h: ; 0x4585f to 0x4586b (12 bytes) (bank=11) (id=217)
     db $03 ; tileset
     db $0d, $0f ; dimensions (y, x)
-    dw SafariZoneEastBlocks, $586e, $586b ; blocks, texts, scripts
+    dw SafariZoneEastBlocks, SafariZoneEastTexts, SafariZoneEastScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $588b ; objects
+    dw SafariZoneEastObject ; objects
 
-INCBIN "baserom.gbc",$4586b,$4587c - $4586b
+SafariZoneEastScript: ; 0x4586b
+    jp $3c3c
+; 0x4586e
 
+SafariZoneEastTexts: ; 0x4586e
+    dw SafariZoneEastText1, SafariZoneEastText2, SafariZoneEastText3, SafariZoneEastText4, SafariZoneEastText5, SafariZoneEastText6, SafariZoneEastText7
+
 SafariZoneEastText5: ; 0x4587c
     TX_FAR _SafariZoneEastText5
     db $50
@@ -17057,13 +21383,18 @@
 SafariZoneNorth_h: ; 0x4599f to 0x459ab (12 bytes) (bank=11) (id=218)
     db $03 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw SafariZoneNorthBlocks, $59ae, $59ab ; blocks, texts, scripts
+    dw SafariZoneNorthBlocks, SafariZoneNorthTexts, SafariZoneNorthScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $59d5 ; objects
+    dw SafariZoneNorthObject ; objects
 
-INCBIN "baserom.gbc",$459ab,$459bc - $459ab
+SafariZoneNorthScript: ; 0x459ab
+    jp $3c3c
+; 0x459ae
 
+SafariZoneNorthTexts: ; 0x459ae
+    dw SafariZoneNorthText1, SafariZoneNorthText2, SafariZoneNorthText3, SafariZoneNorthText4, SafariZoneNorthText5, SafariZoneNorthText6, SafariZoneNorthText7
+
 SafariZoneNorthText3: ; 0x459bc
     TX_FAR _SafariZoneNorthText3
     db $50
@@ -17126,13 +21457,18 @@
 SafariZoneCenter_h: ; 0x45ba6 to 0x45bb2 (12 bytes) (bank=11) (id=220)
     db $03 ; tileset
     db $0d, $0f ; dimensions (y, x)
-    dw SafariZoneCenterBlocks, $5bb5, $5bb2 ; blocks, texts, scripts
+    dw SafariZoneCenterBlocks, SafariZoneCenterTexts, SafariZoneCenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5bc5 ; objects
+    dw SafariZoneCenterObject ; objects
 
-INCBIN "baserom.gbc",$45bb2,$45bbb - $45bb2
+SafariZoneCenterScript: ; 0x45bb2
+    jp $3c3c
+; 0x45bb5
 
+SafariZoneCenterTexts: ; 0x45bb5
+    dw SafariZoneCenterText1, SafariZoneCenterText2, SafariZoneCenterText3
+
 SafariZoneCenterText2: ; 0x45bbb
     TX_FAR _SafariZoneCenterText2
     db $50
@@ -17179,12 +21515,15 @@
 SafariZoneRestHouse1_h: ; 0x45ce1 to 0x45ced (12 bytes) (bank=11) (id=221)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw SafariZoneRestHouse1Blocks, $5cf0, $5ced ; blocks, texts, scripts
+    dw SafariZoneRestHouse1Blocks, SafariZoneRestHouse1Texts, SafariZoneRestHouse1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5cfe ; objects
+    dw SafariZoneRestHouse1Object ; objects
 
-INCBIN "baserom.gbc",$45ced,$45cf0 - $45ced
+SafariZoneRestHouse1Script: ; 0x45ced
+    jp $3c3c
+; 0x45cf0
+
 SafariZoneRestHouse1Texts: ; 0x45cf0
     dw SafariZoneRestHouse1Text1, SafariZoneRestHouse1Text2
 
@@ -17216,12 +21555,16 @@
 SafariZoneRestHouse2_h: ; 0x45d1e to 0x45d2a (12 bytes) (bank=11) (id=223)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $40fb, $5d2e, $5d2a ; blocks, texts, scripts
+    dw $40fb, SafariZoneRestHouse2Texts, SafariZoneRestHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5d43 ; objects
+    dw SafariZoneRestHouse2Object ; objects
 
-INCBIN "baserom.gbc",$45d2a,$45d2e - $45d2a
+SafariZoneRestHouse2Script: ; 0x45d2a
+    call $3c3c
+    ret
+; 0x45d2e
+
 SafariZoneRestHouse2Texts: ; 0x45d2e
     dw SafariZoneRestHouse2Text1, SafariZoneRestHouse2Text2, SafariZoneRestHouse2Text3
 
@@ -17258,12 +21601,16 @@
 SafariZoneRestHouse3_h: ; 0x45d69 to 0x45d75 (12 bytes) (bank=11) (id=224)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $40fb, $5d79, $5d75 ; blocks, texts, scripts
+    dw $40fb, SafariZoneRestHouse3Texts, SafariZoneRestHouse3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5d8e ; objects
+    dw SafariZoneRestHouse3Object ; objects
 
-INCBIN "baserom.gbc",$45d75,$45d79 - $45d75
+SafariZoneRestHouse3Script: ; 0x45d75
+    call $3c3c
+    ret
+; 0x45d79
+
 SafariZoneRestHouse3Texts: ; 0x45d79
     dw SafariZoneRestHouse3Text1, SafariZoneRestHouse3Text2, SafariZoneRestHouse3Text3
 
@@ -17300,12 +21647,16 @@
 SafariZoneRestHouse4_h: ; 0x45db4 to 0x45dc0 (12 bytes) (bank=11) (id=225)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $40fb, $5dc4, $5dc0 ; blocks, texts, scripts
+    dw $40fb, SafariZoneRestHouse4Texts, SafariZoneRestHouse4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5dd9 ; objects
+    dw SafariZoneRestHouse4Object ; objects
 
-INCBIN "baserom.gbc",$45dc0,$45dc4 - $45dc0
+SafariZoneRestHouse4Script: ; 0x45dc0
+    call $3c3c
+    ret
+; 0x45dc4
+
 SafariZoneRestHouse4Texts: ; 0x45dc4
     dw SafariZoneRestHouse4Text1, SafariZoneRestHouse4Text2, SafariZoneRestHouse4Text3
 
@@ -17342,12 +21693,18 @@
 UnknownDungeon2_h: ; 0x45dff to 0x45e0b (12 bytes) (bank=11) (id=226)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw UnknownDungeon2Blocks, $5e0e, $5e0b ; blocks, texts, scripts
+    dw UnknownDungeon2Blocks, UnknownDungeon2Texts, UnknownDungeon2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e14 ; objects
+    dw UnknownDungeon2Object ; objects
 
-INCBIN "baserom.gbc",$45e0b,$45e14 - $45e0b
+UnknownDungeon2Script: ; 0x45e0b
+    jp $3c3c
+; 0x45e0e
+
+UnknownDungeon2Texts: ; 0x45e0e
+    dw UnknownDungeon2Text1, UnknownDungeon2Text2, UnknownDungeon2Text3
+
 UnknownDungeon2Object: ; 0x45e14 (size=73)
     db $7d ; border tile
 
@@ -17380,12 +21737,28 @@
 UnknownDungeon3_h: ; 0x45ee4 to 0x45ef0 (12 bytes) (bank=11) (id=227)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw UnknownDungeon3Blocks, $5f09, $5ef0 ; blocks, texts, scripts
+    dw UnknownDungeon3Blocks, UnknownDungeon3Texts, UnknownDungeon3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5f36 ; objects
+    dw UnknownDungeon3Object ; objects
 
-INCBIN "baserom.gbc",$45ef0,$45f1c - $45ef0
+UnknownDungeon3Script: ; 0x45ef0
+    call $3c3c
+    ld hl, $5f0f
+    ld de, $5f03
+    ld a, [$d650]
+    call $3160
+    ld [$d650], a
+    ret
+; 0x45f03
+
+INCBIN "baserom.gbc",$45f03,$6
+
+UnknownDungeon3Texts: ; 0x45f09
+    dw UnknownDungeon3Text1, UnknownDungeon3Text2, UnknownDungeon3Text3
+
+INCBIN "baserom.gbc",$45f0f,$d
+
 UnknownDungeon3Text1: ; 0x45f1c
     db $08 ; asm
     ld hl, $5f0f
@@ -17393,6 +21766,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$45f26,$10
+
 UnknownDungeon3Object: ; 0x45f36 (size=34)
     db $7d ; border tile
 
@@ -17415,12 +21789,28 @@
 RockTunnel2_h: ; 0x45fdf to 0x45feb (12 bytes) (bank=11) (id=232)
     db $11 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw RockTunnel2Blocks, $6004, $5feb ; blocks, texts, scripts
+    dw RockTunnel2Blocks, RockTunnel2Texts, RockTunnel2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $613d ; objects
+    dw RockTunnel2Object ; objects
 
-INCBIN "baserom.gbc",$45feb,$46075 - $45feb
+RockTunnel2Script: ; 0x45feb
+    call $3c3c
+    ld hl, $6014
+    ld de, $5ffe
+    ld a, [$d620]
+    call $3160
+    ld [$d620], a
+    ret
+; 0x45ffe
+
+INCBIN "baserom.gbc",$45ffe,$6
+
+RockTunnel2Texts: ; 0x46004
+    dw RockTunnel2Text1, RockTunnel2Text2, RockTunnel2Text3, RockTunnel2Text4, RockTunnel2Text5, RockTunnel2Text6, RockTunnel2Text7, RockTunnel2Text8
+
+INCBIN "baserom.gbc",$46014,$61
+
 RockTunnel2Text1: ; 0x46075
     db $08 ; asm
     ld hl, $6014
@@ -17470,6 +21860,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$460c5,$78
+
 RockTunnel2Object: ; 0x4613d (size=100)
     db $3 ; border tile
 
@@ -17503,14 +21894,57 @@
 SeafoamIslands2_h: ; 0x46309 to 0x46315 (12 bytes) (bank=11) (id=159)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SeafoamIslands2Blocks, $6372, $6315 ; blocks, texts, scripts
+    dw SeafoamIslands2Blocks, SeafoamIslands2Texts, SeafoamIslands2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6376 ; objects
+    dw SeafoamIslands2Object ; objects
 
-INCBIN "baserom.gbc",$46315,$46372 - $46315
+SeafoamIslands2Script: ; 0x46315
+    call $3c3c
+    ld hl, $cd60
+    bit 7, [hl]
+    res 7, [hl]
+    jr z, .asm_46362 ; 0x4631f $41
+    ld hl, $636d
+    call $34e4
+    ret nc
+    ld hl, $d87f
+    ld a, [$cd3d]
+    cp $1
+    jr nz, .asm_46340 ; 0x46330 $e
+    set 0, [hl]
+    ld a, $d9
+    ld [$d079], a
+    ld a, $db
+    ld [$d07a], a
+    jr .asm_4634c ; 0x4633e $c
+.asm_46340
+    set 1, [hl]
+    ld a, $da
+    ld [$d079], a
+    ld a, $dc
+    ld [$d07a], a
+.asm_4634c
+    ld a, [$d079]
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    ld a, [$d07a]
+    ld [$cc4d], a
+    ld a, $15
+    jp $3e6d
+.asm_46362
+    ld a, $a0
+    ld [$d71d], a
+    ld hl, $636d
+    jp $6981
+; 0x4636d
+
+INCBIN "baserom.gbc",$4636d,$5
+
 SeafoamIslands2Texts: ; 0x46372
     dw SeafoamIslands2Text1, SeafoamIslands2Text2
+
 SeafoamIslands2Object: ; 0x46376 (size=72)
     db $7d ; border tile
 
@@ -17544,14 +21978,57 @@
 SeafoamIslands3_h: ; 0x46445 to 0x46451 (12 bytes) (bank=11) (id=160)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SeafoamIslands3Blocks, $64ae, $6451 ; blocks, texts, scripts
+    dw SeafoamIslands3Blocks, SeafoamIslands3Texts, SeafoamIslands3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $64b2 ; objects
+    dw SeafoamIslands3Object ; objects
 
-INCBIN "baserom.gbc",$46451,$464ae - $46451
+SeafoamIslands3Script: ; 0x46451
+    call $3c3c
+    ld hl, $cd60
+    bit 7, [hl]
+    res 7, [hl]
+    jr z, .asm_4649e ; 0x4645b $41
+    ld hl, $64a9
+    call $34e4
+    ret nc
+    ld hl, $d880
+    ld a, [$cd3d]
+    cp $1
+    jr nz, .asm_4647c ; 0x4646c $e
+    set 0, [hl]
+    ld a, $db
+    ld [$d079], a
+    ld a, $df
+    ld [$d07a], a
+    jr .asm_46488 ; 0x4647a $c
+.asm_4647c
+    set 1, [hl]
+    ld a, $dc
+    ld [$d079], a
+    ld a, $e0
+    ld [$d07a], a
+.asm_46488
+    ld a, [$d079]
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    ld a, [$d07a]
+    ld [$cc4d], a
+    ld a, $15
+    jp $3e6d
+.asm_4649e
+    ld a, $a1
+    ld [$d71d], a
+    ld hl, $64a9
+    jp $6981
+; 0x464a9
+
+INCBIN "baserom.gbc",$464a9,$5
+
 SeafoamIslands3Texts: ; 0x464ae
     dw SeafoamIslands3Text1, SeafoamIslands3Text2
+
 SeafoamIslands3Object: ; 0x464b2 (size=72)
     db $7d ; border tile
 
@@ -17585,14 +22062,107 @@
 SeafoamIslands4_h: ; 0x46581 to 0x4658d (12 bytes) (bank=11) (id=161)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SeafoamIslands4Blocks, $669a, $658d ; blocks, texts, scripts
+    dw SeafoamIslands4Blocks, SeafoamIslands4Texts, SeafoamIslands4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $66a6 ; objects
+    dw SeafoamIslands4Object ; objects
 
-INCBIN "baserom.gbc",$4658d,$4669a - $4658d
+SeafoamIslands4Script: ; 0x4658d
+    call $3c3c
+    ld hl, $cd60
+    bit 7, [hl]
+    res 7, [hl]
+    jr z, .asm_465dc ; 0x46597 $43
+    ld hl, $65f6
+    call $34e4
+    ret nc
+    ld hl, $d881
+    ld a, [$cd3d]
+    cp $1
+    jr nz, .asm_465b8 ; 0x465a8 $e
+    set 0, [hl]
+    ld a, $dd
+    ld [$d079], a
+    ld a, $e1
+    ld [$d07a], a
+    jr .asm_465c4 ; 0x465b6 $c
+.asm_465b8
+    set 1, [hl]
+    ld a, $de
+    ld [$d079], a
+    ld a, $e2
+    ld [$d07a], a
+.asm_465c4
+    ld a, [$d079]
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    ld a, [$d07a]
+    ld [$cc4d], a
+    ld a, $15
+    call Predef
+    jr .asm_465ed ; 0x465da $11
+.asm_465dc
+    ld a, $a2
+    ld [$d71d], a
+    ld hl, $65f6
+    call $6981
+    ld a, [$d732]
+    bit 4, a
+    ret nz
+.asm_465ed
+    ld hl, $65fb
+    ld a, [$d666]
+    jp $3d97
+; 0x465f6
+
+INCBIN "baserom.gbc",$465f6,$465fb - $465f6
+
+SeafoamIslands4Scripts: ; 0x465fb
+    dw SeafoamIslands4Script0, SeafoamIslands4Script1
+
+INCBIN "baserom.gbc",$465ff,$4
+
+SeafoamIslands4Script0: ; 0x46603
+    ld a, [$d880]
+    and $3
+    cp $3
+    ret z
+    ld a, [$d361]
+    cp $8
+    ret nz
+    ld a, [$d362]
+    cp $f
+    ret nz
+    ld hl, $ccd3
+    ld de, $6632
+    call $350c
+    dec a
+    ld [$cd38], a
+    call $3486
+    ld hl, $d733
+    set 2, [hl]
+    ld a, $1
+    ld [$d666], a
+    ret
+; 0x46632
+
+INCBIN "baserom.gbc",$46632,$46639 - $46632
+
+SeafoamIslands4Script1: ; 0x46639
+    ld a, [$cd38]
+    and a
+    ret nz
+    ld a, $0
+    ld [$d666], a
+    ret
+; 0x46644
+
+INCBIN "baserom.gbc",$46644,$56
+
 SeafoamIslands4Texts: ; 0x4669a
     dw SeafoamIslands4Text1, SeafoamIslands4Text2, SeafoamIslands4Text3, SeafoamIslands4Text4, SeafoamIslands4Text5, SeafoamIslands4Text6
+
 SeafoamIslands4Object: ; 0x466a6 (size=96)
     db $7d ; border tile
 
@@ -17630,12 +22200,74 @@
 SeafoamIslands5_h: ; 0x4678d to 0x46799 (12 bytes) (bank=11) (id=162)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SeafoamIslands5Blocks, $687c, $6799 ; blocks, texts, scripts
+    dw SeafoamIslands5Blocks, SeafoamIslands5Texts, SeafoamIslands5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $68bc ; objects
+    dw SeafoamIslands5Object ; objects
 
-INCBIN "baserom.gbc",$46799,$46893 - $46799
+SeafoamIslands5Script: ; 0x46799
+    call $3c3c
+    ld a, [$d668]
+    ld hl, $67ad
+    jp $3d97
+; 0x467a5
+
+INCBIN "baserom.gbc",$467a5,$467ad - $467a5
+
+SeafoamIslands5Scripts: ; 0x467ad
+    dw SeafoamIslands5Script0, SeafoamIslands5Script1
+
+INCBIN "baserom.gbc",$467b1,$16
+
+SeafoamIslands5Script0: ; 0x467c7
+    ld a, [$d880]
+    and $3
+    cp $3
+    ret z
+    ld hl, $67fe
+    call $34bf
+    ret nc
+    ld a, [$cd3d]
+    cp $3
+    jr nc, .asm_467e6 ; 0x467db $9
+    ld a, $40
+    ld [$ccd4], a
+    ld a, $2
+    jr .asm_467e8 ; 0x467e4 $2
+.asm_467e6
+    ld a, $1
+.asm_467e8
+    ld [$cd38], a
+    ld a, $40
+    ld [$ccd3], a
+    call $3486
+    ld hl, $d733
+    res 2, [hl]
+    ld a, $1
+    ld [$d668], a
+    ret
+; 0x467fe
+
+INCBIN "baserom.gbc",$467fe,$46807 - $467fe
+
+SeafoamIslands5Script1: ; 0x46807
+    ld a, [$cd38]
+    and a
+    ret nz
+    xor a
+    ld [$cd6b], a
+    ld a, $0
+    ld [$d668], a
+    ret
+; 0x46816
+
+INCBIN "baserom.gbc",$46816,$66
+
+SeafoamIslands5Texts: ; 0x4687c
+    dw SeafoamIslands5Text1, SeafoamIslands5Text2, SeafoamIslands5Text3, SeafoamIslands5Text4, SeafoamIslands5Text5
+
+INCBIN "baserom.gbc",$46886,$d
+
 SeafoamIslands5Text3: ; 0x46893
     db $08 ; asm
     ld hl, $6886
@@ -17644,7 +22276,15 @@
     ld [$d668], a
     jp $24d7
 
-INCBIN "baserom.gbc",$468a2,$10
+; 0x468a2 TX_FAR
+db $17, $75, $40, $22
+; 0x468a6
+    db $8
+    ld a, $4a
+    call $13d0
+    call $3748
+    jp TextScriptEnd
+; 0x468b2
 
 SeafoamIslands5Text4: ; 0x468b2
     TX_FAR _SeafoamIslands5Text4
@@ -17680,6 +22320,7 @@
 
 SeafoamIslands5Blocks: ; 135
     INCBIN "maps/seafoamislands5.blk"
+
 INCBIN "baserom.gbc",$46981,$167f
 
 SECTION "bank12",DATA,BANK[$12]
@@ -17687,7 +22328,7 @@
 Route7_h: ; 0x48000 to 0x48022 (34 bytes) (bank=12) (id=18)
     db $00 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw Route7Blocks, $4155, $4152 ; blocks, texts, scripts
+    dw Route7Blocks, $4155, Route7Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -17706,7 +22347,7 @@
 
     ; end connection data
 
-    dw $4022 ; objects
+    dw Route7Object ; objects
 
 Route7Object: ; 0x48022 (size=47)
     db $f ; border tile
@@ -17742,17 +22383,22 @@
 Route11GateUpstairsBlocks: ; 16
     INCBIN "maps/route11gateupstairs.blk"
 
-INCBIN "baserom.gbc",$480eb,$48157 - $480eb
+INCBIN "baserom.gbc",$480eb,$48152 - $480eb
 
+Route7Script: ; 0x48152
+    jp $3c3c
+; 0x48155
+
+INCBIN "baserom.gbc",$48155,$2
+
 Route7Text1: ; 0x48157
     TX_FAR _Route7Text1
     db $50
 
-
 RedsHouse1F_h: ; 415C
 	db $01 ; tileset
 	db $04,$04 ; dimensions
-	dw RedsHouse1FBlocks,RedsHouse1FTexts,RedsHouse1FScript
+	dw RedsHouse1FBlocks, RedsHouse1FTexts, RedsHouse1FScript
 	db 0 ; no connections
 	dw RedsHouse1FObject
 
@@ -17857,12 +22503,18 @@
 CeladonMart3_h: ; 0x48219 to 0x48225 (12 bytes) (bank=12) (id=124)
     db $12 ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw CeladonMart3Blocks, $4228, $4225 ; blocks, texts, scripts
+    dw CeladonMart3Blocks, CeladonMart3Texts, CeladonMart3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $42c4 ; objects
+    dw CeladonMart3Object ; objects
 
-INCBIN "baserom.gbc",$48225,$4824a - $48225
+CeladonMart3Script: ; 0x48225
+    jp $3c3c
+; 0x48228
+
+CeladonMart3Texts: ; 0x48228
+    dw CeladonMart3Text1, CeladonMart3Text2, CeladonMart3Text3, CeladonMart3Text4, CeladonMart3Text5, CeladonMart3Text6, CeladonMart3Text7, CeladonMart3Text8, CeladonMart3Text9, CeladonMart3Text10, CeladonMart3Text11, CeladonMart3Text12, CeladonMart3Text13, CeladonMart3Text14, CeladonMart3Text15, CeladonMart3Text16, CeladonMart3Text17
+
 CeladonMart3Text1: ; 0x4824a
     db $08 ; asm
     ld a, [$d778]
@@ -17977,13 +22629,18 @@
 CeladonMart4_h: ; 0x4834a to 0x48356 (12 bytes) (bank=12) (id=125)
     db $12 ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw CeladonMart4Blocks, $4359, $4356 ; blocks, texts, scripts
+    dw CeladonMart4Blocks, CeladonMart4Texts, CeladonMart4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4370 ; objects
+    dw CeladonMart4Object ; objects
 
-INCBIN "baserom.gbc",$48356,$48361 - $48356
+CeladonMart4Script: ; 0x48356
+    jp $3c3c
+; 0x48359
 
+CeladonMart4Texts: ; 0x48359
+    dw CeladonMart4Text1, CeladonMart4Text2, CeladonMart4Text3, CeladonMart4Text4
+
 CeladonMart4Text2: ; 0x48361
     TX_FAR _CeladonMart4Text2
     db $50
@@ -18023,12 +22680,16 @@
 CeladonMartRoof_h: ; 0x483c9 to 0x483d5 (12 bytes) (bank=12) (id=126)
     db $12 ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw CeladonMartRoofBlocks, $455b, $43d5 ; blocks, texts, scripts
+    dw CeladonMartRoofBlocks, $455b, CeladonMartRoofScript ; blocks, texts, scripts
     db $00 ; connections
+    
+    dw CeladonMartRoofObject ; objects
 
-    dw $45a8 ; objects
+CeladonMartRoofScript: ; 0x483d5
+    jp $3c3c
+; 0x483d8
 
-INCBIN "baserom.gbc",$483d5,$48567 - $483d5
+INCBIN "baserom.gbc",$483d8,$18f
 
 CeladonMartRoofText1: ; 0x48567
     TX_FAR _CeladonMartRoofText1
@@ -18087,12 +22748,33 @@
 CeladonMartElevator_h: ; 0x485f4 to 0x48600 (12 bytes) (bank=12) (id=127)
     db $12 ; tileset
     db $02, $02 ; dimensions (y, x)
-    dw CeladonMartElevatorBlocks, $465c, $4600 ; blocks, texts, scripts
+    dw CeladonMartElevatorBlocks, CeladonMartElevatorTexts, CeladonMartElevatorScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $466d ; objects
+    dw CeladonMartElevatorObject ; objects
 
-INCBIN "baserom.gbc",$48600,$4865e - $48600
+CeladonMartElevatorScript: ; 0x48600
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    push hl
+    call nz, $461c
+    pop hl
+    bit 7, [hl]
+    res 7, [hl]
+    call nz, $4654
+    xor a
+    ld [$cf0c], a
+    inc a
+    ld [$cc3c], a
+    ret
+; 0x4861c
+
+INCBIN "baserom.gbc",$4861c,$40
+
+CeladonMartElevatorTexts: ; 0x4865c
+    dw CeladonMartElevatorText1
+
 CeladonMartElevatorText1: ; 0x4865e
     db $08 ; asm
     call $4631
@@ -18123,16 +22805,23 @@
 CeladonMansion1_h: ; 0x48688 to 0x48694 (12 bytes) (bank=12) (id=128)
     db $13 ; tileset
     db $06, $04 ; dimensions (y, x)
-    dw CeladonMansion1Blocks, $4697, $4694 ; blocks, texts, scripts
+    dw CeladonMansion1Blocks, CeladonMansion1Texts, CeladonMansion1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $46cf ; objects
+    dw CeladonMansion1Object ; objects
 
-INCBIN "baserom.gbc",$48694,$48697 - $48694
+CeladonMansion1Script: ; 0x48694
+    jp $3c3c
+; 0x48697
+
 CeladonMansion1Texts: ; 0x48697
     dw CeladonMansion1Text1, CeladonMansion1Text2, CeladonMansion1Text3, CeladonMansion1Text4, CeladonMansion1Text5
-INCBIN "baserom.gbc",$486a1,$6
 
+;0x486a1
+    call $13d0
+    jp TextScriptEnd
+; 0x486a7
+
 CeladonMansion1Text1: ; 0x486a7
     TX_FAR _CeladonMansion1Text1
     db $08 ; asm
@@ -18193,12 +22882,16 @@
 CeladonMansion2_h: ; 0x4872e to 0x4873a (12 bytes) (bank=12) (id=129)
     db $13 ; tileset
     db $06, $04 ; dimensions (y, x)
-    dw CeladonMansion2Blocks, $473e, $473a ; blocks, texts, scripts
+    dw CeladonMansion2Blocks, CeladonMansion2Texts, CeladonMansion2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4745 ; objects
+    dw CeladonMansion2Object ; objects
 
-INCBIN "baserom.gbc",$4873a,$4873e - $4873a
+CeladonMansion2Script: ; 0x4873a
+    call $3c3c
+    ret
+; 0x4873e
+
 CeladonMansion2Texts: ; 0x4873e
     dw CeladonMansion2Text1
 
@@ -18232,13 +22925,18 @@
 CeladonMansion3_h: ; 0x48784 to 0x48790 (12 bytes) (bank=12) (id=130)
     db $13 ; tileset
     db $06, $04 ; dimensions (y, x)
-    dw CeladonMansion3Blocks, $4793, $4790 ; blocks, texts, scripts
+    dw CeladonMansion3Blocks, CeladonMansion3Texts, CeladonMansion3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $47ff ; objects
+    dw CeladonMansion3Object ; objects
 
-INCBIN "baserom.gbc",$48790,$487a3 - $48790
+CeladonMansion3Script: ; 0x48790
+    jp $3c3c
+; 0x48793
 
+CeladonMansion3Texts: ; 0x48793
+    dw CeladonMansion3Text1, CeladonMansion3Text2, CeladonMansion3Text3, CeladonMansion3Text4, CeladonMansion3Text5, CeladonMansion3Text6, CeladonMansion3Text7, CeladonMansion3Text8
+
 CeladonMansion3Text1: ; 0x487a3
     TX_FAR _CeladonMansion3Text1
     db $50
@@ -18318,12 +23016,15 @@
 CeladonMansion4_h: ; 0x4885f to 0x4886b (12 bytes) (bank=12) (id=131)
     db $13 ; tileset
     db $06, $04 ; dimensions (y, x)
-    dw CeladonMansion4Blocks, $486e, $486b ; blocks, texts, scripts
+    dw CeladonMansion4Blocks, CeladonMansion4Texts, CeladonMansion4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4875 ; objects
+    dw CeladonMansion4Object ; objects
 
-INCBIN "baserom.gbc",$4886b,$4886e - $4886b
+CeladonMansion4Script: ; 0x4886b
+    jp $3c3c
+; 0x4886e
+
 CeladonMansion4Texts: ; 0x4886e
     dw CeladonMansion4Text1
 
@@ -18355,13 +23056,21 @@
 CeladonPokecenter_h: ; 0x488ac to 0x488b8 (12 bytes) (bank=12) (id=133)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $40ab, $48be, $48b8 ; blocks, texts, scripts
+    dw $40ab, $48be, CeladonPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $48d2 ; objects
+    dw CeladonPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$488b8,$488c8 - $488b8
+CeladonPokecenterScript: ; 0x488b8
+    call $22fa
+    jp $3c3c
+; 0x488be
 
+INCBIN "baserom.gbc",$488be,$8
+
+CeladonPokecenterText4:
+    db $f6, $ff
+
 CeladonPokecenterText2: ; _CeladonPokecenterText2
 CeladonPokecenterText1: ; 0x488c8
     TX_FAR _CeladonPokecenterText1
@@ -18372,7 +23081,6 @@
     TX_FAR _CeladonPokecenterText3
     db $50
 
-
 CeladonPokecenterObject: ; 0x488d2 (size=44)
     db $0 ; border tile
 
@@ -18395,12 +23103,32 @@
 CeladonGym_h: ; 0x488fe to 0x4890a (12 bytes) (bank=12) (id=134)
     db $07 ; tileset
     db $09, $05 ; dimensions (y, x)
-    dw CeladonGymBlocks, $49a6, $490a ; blocks, texts, scripts
+    dw CeladonGymBlocks, CeladonGymTexts, CeladonGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4b30 ; objects
+    dw CeladonGymObject ; objects
 
-INCBIN "baserom.gbc",$4890a,$48a11 - $4890a
+CeladonGymScript: ; 0x4890a
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    call nz, $4927
+    call $3c3c
+    ld hl, $49bc
+    ld de, $494e
+    ld a, [$d5ff]
+    call $3160
+    ld [$d5ff], a
+    ret
+; 0x48927
+
+INCBIN "baserom.gbc",$48927,$7f
+
+CeladonGymTexts: ; 0x489a6
+    dw CeladonGymText1, CeladonGymText2, CeladonGymText3, CeladonGymText4, CeladonGymText5, CeladonGymText6, CeladonGymText7, CeladonGymText8, CeladonGymText9, CeladonGymText10, CeladonGymText11
+
+INCBIN "baserom.gbc",$489bc,$55
+
 CeladonGymText1: ; 0x48a11
     db $08 ; asm
     ld a, [$d77c]
@@ -18436,7 +23164,20 @@
 .asm_96252 ; 0x48a5b
     jp $24d7
 
-INCBIN "baserom.gbc",$48a5e,$48a81 - $48a5e
+INCBIN "baserom.gbc",$48a5e,$48a6d - $48a5e
+
+CeladonGymText9: ; 0x48a6d
+INCBIN "baserom.gbc",$48a6d,$5
+
+CeladonGymText10: ; 0x48a72
+INCBIN "baserom.gbc",$48a72,$4
+db $0b
+
+INCBIN "baserom.gbc",$48a77,$48a7c - $48a77
+
+CeladonGymText11: ; 0x48a7c
+INCBIN "baserom.gbc",$48a7c,$5
+
 CeladonGymText2: ; 0x48a81
     db $08 ; asm
     ld hl, $49bc
@@ -18444,6 +23185,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48a8b,$48a9a - $48a8b
+
 CeladonGymText3: ; 0x48a9a
     db $08 ; asm
     ld hl, $49c8
@@ -18451,6 +23193,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48aa4,$48ab3 - $48aa4
+
 CeladonGymText4: ; 0x48ab3
     db $08 ; asm
     ld hl, $49d4
@@ -18458,6 +23201,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48abd,$48acc - $48abd
+
 CeladonGymText5: ; 0x48acc
     db $08 ; asm
     ld hl, $49e0
@@ -18465,6 +23209,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48ad6,$48ae5 - $48ad6
+
 CeladonGymText6: ; 0x48ae5
     db $08 ; asm
     ld hl, $49ec
@@ -18472,6 +23217,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48aef,$48afe - $48aef
+
 CeladonGymText7: ; 0x48afe
     db $08 ; asm
     ld hl, $49f8
@@ -18479,6 +23225,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48b08,$48b17 - $48b08
+
 CeladonGymText8: ; 0x48b17
     db $08 ; asm
     ld hl, $4a04
@@ -18486,6 +23233,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48b21,$f
+
 CeladonGymObject: ; 0x48b30 (size=84)
     db $3 ; border tile
 
@@ -18515,13 +23263,36 @@
 CeladonGameCorner_h: ; 0x48bb1 to 0x48bbd (12 bytes) (bank=12) (id=135)
     db $12 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw CeladonGameCornerBlocks, $4c8a, $4bbd ; blocks, texts, scripts
+    dw CeladonGameCornerBlocks, CeladonGameCornerTexts, CeladonGameCornerScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4fa0 ; objects
+    dw CeladonGameCornerObject ; objects
 
-INCBIN "baserom.gbc",$48bbd,$48ca4 - $48bbd
+CeladonGameCornerScript: ; 0x48bbd
+    call $4bcf
+    call $4bec
+    call $3c3c
+    ld hl, $4c12
+    ld a, [$d65f]
+    jp $3d97
+; 0x48bcf
 
+INCBIN "baserom.gbc",$48bcf,$48c12 - $48bcf
+
+CeladonGameCornerScripts: ; 0x48c12
+    dw CeladonGameCornerScript0
+
+INCBIN "baserom.gbc",$48c14,$4
+
+CeladonGameCornerScript0: ; 0x48c18
+    ret
+; 0x48c19
+
+INCBIN "baserom.gbc",$48c19,$71
+
+CeladonGameCornerTexts: ; 0x48c8a
+    dw CeladonGameCornerText1, CeladonGameCornerText2, CeladonGameCornerText3, CeladonGameCornerText4, CeladonGameCornerText5, CeladonGameCornerText6, CeladonGameCornerText7, CeladonGameCornerText8, CeladonGameCornerText9, CeladonGameCornerText10, CeladonGameCornerText11, CeladonGameCornerText12, CeladonGameCornerText13
+
 CeladonGameCornerText1: ; 0x48ca4
     TX_FAR _CeladonGameCornerText1
     db $50
@@ -18697,6 +23468,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48e26,$48e3b - $48e26
+
 CeladonGameCornerText10: ; 0x48e3b
     db $08 ; asm
     ld a, [$d77e]
@@ -18736,6 +23508,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48e88,$48e9d - $48e88
+
 CeladonGameCornerText11: ; 0x48e9d
     db $08 ; asm
     ld hl, $4ece
@@ -18758,7 +23531,11 @@
     ld [$d65f], a
     jp $24d7
 
-INCBIN "baserom.gbc",$48ece,$48edd - $48ece
+INCBIN "baserom.gbc",$48ece,$48ed8 - $48ece
+
+CeladonGameCornerText13: ; 0x48ed8
+INCBIN "baserom.gbc",$48ed8,5
+
 CeladonGameCornerText12: ; 0x48edd
     db $08 ; asm
     ld a, $1
@@ -18779,6 +23556,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$48f09,$97
+
 CeladonGameCornerObject: ; 0x48fa0 (size=99)
     db $f ; border tile
 
@@ -18814,13 +23592,18 @@
 CeladonMart5_h: ; 0x4905d to 0x49069 (12 bytes) (bank=12) (id=136)
     db $12 ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw CeladonMart5Blocks, $506c, $5069 ; blocks, texts, scripts
+    dw CeladonMart5Blocks, CeladonMart5Texts, CeladonMart5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5085 ; objects
+    dw CeladonMart5Object ; objects
 
-INCBIN "baserom.gbc",$49069,$49076 - $49069
+CeladonMart5Script: ; 0x49069
+    jp $3c3c
+; 0x4906c
 
+CeladonMart5Texts: ; 0x4906c
+    dw CeladonMart5Text1, CeladonMart5Text2, CeladonMart5Text3, CeladonMart5Text4, CeladonMart5Text5
+
 CeladonMart5Text1: ; 0x49076
     TX_FAR _CeladonMart5Text1
     db $50
@@ -18864,10 +23647,14 @@
     dw CeladonPrizeRoomBlocks, $50f3, $50f0 ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5108 ; objects
+    dw CeladonPrizeRoomObject ; objects
 
-INCBIN "baserom.gbc",$490f0,$490fd - $490f0
+CeladonPrizeRoomScript: ; 0x490f0
+    jp $3c3c
+; 0x490f3
 
+INCBIN "baserom.gbc",$490f3,$a
+
 CeladonPrizeRoomText1: ; 0x490fd
     TX_FAR _CeladonPrizeRoomText1
     db $50
@@ -18904,13 +23691,19 @@
 CeladonDiner_h: ; 0x49145 to 0x49151 (12 bytes) (bank=12) (id=138)
     db $12 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw CeladonDinerBlocks, $5155, $5151 ; blocks, texts, scripts
+    dw CeladonDinerBlocks, CeladonDinerTexts, CeladonDinerScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $51bc ; objects
+    dw CeladonDinerObject ; objects
 
-INCBIN "baserom.gbc",$49151,$4915f - $49151
+CeladonDinerScript: ; 0x49151
+    call $3c3c
+    ret
+; 0x49155
 
+CeladonDinerTexts: ; 0x49155
+    dw CeladonDinerText1, CeladonDinerText2, CeladonDinerText3, CeladonDinerText4, CeladonDinerText5
+
 CeladonDinerText1: ; 0x4915f
     TX_FAR _CeladonDinerText1
     db $50
@@ -18980,12 +23773,16 @@
 CeladonHouse_h: ; 0x49202 to 0x4920e (12 bytes) (bank=12) (id=139)
     db $13 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw CeladonHouseBlocks, $5212, $520e ; blocks, texts, scripts
+    dw CeladonHouseBlocks, CeladonHouseTexts, CeladonHouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5227 ; objects
+    dw CeladonHouseObject ; objects
 
-INCBIN "baserom.gbc",$4920e,$49212 - $4920e
+CeladonHouseScript: ; 0x4920e
+    call $3c3c
+    ret
+; 0x49212
+
 CeladonHouseTexts: ; 0x49212
     dw CeladonHouseText1, CeladonHouseText2, CeladonHouseText3
 
@@ -19025,12 +23822,15 @@
 CeladonHotel_h: ; 0x4925d to 0x49269 (12 bytes) (bank=12) (id=140)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw CeladonHotelBlocks, $526c, $5269 ; blocks, texts, scripts
+    dw CeladonHotelBlocks, CeladonHotelTexts, CeladonHotelScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5281 ; objects
+    dw CeladonHotelObject ; objects
 
-INCBIN "baserom.gbc",$49269,$4926c - $49269
+CeladonHotelScript: ; 0x49269
+    jp $3c3c
+; 0x4926c
+
 CeladonHotelTexts: ; 0x4926c
     dw CeladonHotelText1, CeladonHotelText2, CeladonHotelText3
 
@@ -19070,13 +23870,18 @@
 MtMoonPokecenter_h: ; 0x492c3 to 0x492cf (12 bytes) (bank=12) (id=68)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw MtMoonPokecenterBlocks, $52d5, $52cf ; blocks, texts, scripts
+    dw MtMoonPokecenterBlocks, $52d5, MtMoonPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5376 ; objects
+    dw MtMoonPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$492cf,$492e2 - $492cf
+MtMoonPokecenterScript: ; 0x492cf
+    call $22fa
+    jp $3c3c
+; 0x492d5
 
+INCBIN "baserom.gbc",$492d5,$d
+
 MtMoonPokecenterText2:
 MtMoonPokecenterText1: ; 0x492e2
     TX_FAR _MtMoonPokecenterText1
@@ -19142,8 +23947,8 @@
     TX_FAR _MtMoonPokecenterText5
     db $50
 
-;XXX wtf?
-db $f6
+MtMoonPokecenterText6:
+    db $f6
 
 MtMoonPokecenterObject: ; 0x49376 (size=56)
     db $0 ; border tile
@@ -19169,13 +23974,18 @@
 RockTunnelPokecenter_h: ; 0x493ae to 0x493ba (12 bytes) (id=81)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $40ab, $53c0, $53ba ; blocks, texts, scripts
+    dw $40ab, $53c0, RockTunnelPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $53d4 ; objects
+    dw RockTunnelPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$493ba,$493c9 - $493ba
+RockTunnelPokecenterScript: ; 0x493ba
+    call $22fa
+    jp $3c3c
+; 0x493c0
 
+INCBIN "baserom.gbc",$493c0,$9
+
 RockTunnelPokecenterText2:
 RockTunnelPokecenterText1: ; 0x493c9
     TX_FAR _RockTunnelPokecenterText1
@@ -19186,10 +23996,9 @@
     TX_FAR _RockTunnelPokecenterText3
     db $50
 
-; RockTunnelPokecenterText4: ; 0x493d3
+RockTunnelPokecenterText4: ; 0x493d3
+    db $f6
 
-INCBIN "baserom.gbc",$493ce+5,$493d4-($493ce+5)
-
 RockTunnelPokecenterObject: ; 0x493d4 (size=44)
     db $0 ; border tile
 
@@ -19212,12 +24021,15 @@
 Route11Gate_h: ; 0x49400 to 0x4940c (12 bytes) (id=84)
     db $0c ; tileset
     db $05, $04 ; dimensions (y, x)
-    dw Route11GateBlocks, $540f, $540c ; blocks, texts, scripts
+    dw Route11GateBlocks, Route11GateTexts, Route11GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5416 ; objects
+    dw Route11GateObject ; objects
 
-INCBIN "baserom.gbc",$4940c,$4940f - $4940c
+Route11GateScript: ; 0x4940c
+    jp $3c3c
+; 0x4940f
+
 Route11GateTexts: ; 0x4940f
     dw Route11GateText1
 
@@ -19250,12 +24062,17 @@
 Route11GateUpstairs_h: ; 0x49448 to 0x49454 (12 bytes) (id=86)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw Route11GateUpstairsBlocks, $5457, $5454 ; blocks, texts, scripts
+    dw Route11GateUpstairsBlocks, $5457, Route11GateUpstairsScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $54da ; objects
+    dw Route11GateUpstairsObject ; objects
 
-INCBIN "baserom.gbc",$49454,$4945f - $49454
+Route11GateUpstairsScript: ; 0x49454
+    jp $3c3f
+; 0x49457
+
+INCBIN "baserom.gbc",$49457,$8
+
 Route11GateUpstairsText1: ; 0x4945f
     db $08 ; asm
     xor a
@@ -19262,9 +24079,41 @@
     ld [W_WHICHTRADE], a
     ld a, $54
     call Predef
+asm_49469:
     jp $24d7
 
-INCBIN "baserom.gbc",$4946c,$494a8 - $4946c
+Route11GateUpstairsText2: ; 0x4946c
+    db $8
+    ld a, [$d7d6]
+    add a
+    jr c, .asm_4949b ; 0x49471 $28
+    ld a, $1e
+    ld [$ff00+$db], a
+    ld a, $47
+    ld [$ff00+$dc], a
+    ld [$d11e], a
+    call $2fcf
+    ld h, d
+    ld l, e
+    ld de, $cc5b
+    ld bc, $000d
+    call CopyData
+    ld a, $62
+    call Predef
+    ld a, [$ff00+$db]
+    dec a
+    jr nz, .asm_494a1 ; 0x49494 $b
+    ld hl, $d7d6
+    set 7, [hl]
+.asm_4949b
+    ld hl, $54a3
+    call PrintText
+.asm_494a1
+    jr asm_49469 ; 0x494a1 $c6
+; 0x494a3
+
+INCBIN "baserom.gbc",$494a3,$5
+
 Route11GateUpstairsText3: ; 0x494a8
     db $08 ; asm
     ld a, [$c109]
@@ -19279,8 +24128,16 @@
     call PrintText
     jp $24d7
 
-INCBIN "baserom.gbc",$494c4,$16
+INCBIN "baserom.gbc",$494c4,$494ce - $494c4
 
+Route11GateUpstairsText4: ; 0x494ce
+    db $8
+    ld hl, $54d5
+    jp $55c9
+; 0x494d5
+
+INCBIN "baserom.gbc",$494d5,$5
+
 Route11GateUpstairsObject: ; 0x494da (size=30)
     db $a ; border tile
 
@@ -19301,12 +24158,15 @@
 Route12Gate_h: ; 0x494f8 to 0x49504 (12 bytes) (id=87)
     db $0c ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw Route12GateBlocks, $5507, $5504 ; blocks, texts, scripts
+    dw Route12GateBlocks, Route12GateTexts, Route12GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $550e ; objects
+    dw Route12GateObject ; objects
 
-INCBIN "baserom.gbc",$49504,$49507 - $49504
+Route12GateScript: ; 0x49504
+    jp $3c3c
+; 0x49507
+
 Route12GateTexts: ; 0x49507
     dw Route12GateText1
 
@@ -19342,12 +24202,18 @@
 Route12GateUpstairs_h: ; 0x49554 to 0x49560 (12 bytes) (id=195)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $40db, $5563, $5560 ; blocks, texts, scripts
+    dw $40db, Route12GateUpstairsTexts, Route12GateUpstairsScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $55de ; objects
+    dw Route12GateUpstairsObject ; objects
 
-INCBIN "baserom.gbc",$49560,$49569 - $49560
+Route12GateUpstairsScript: ; 0x49560
+    jp $3c3f
+; 0x49563
+
+Route12GateUpstairsTexts: ; 0x49563
+    dw Route12GateUpstairsText1, Route12GateUpstairsText2, Route12GateUpstairsText3
+
 Route12GateUpstairsText1: ; 0x49569
     db $08 ; asm
     ld a, [$d7d7]
@@ -19410,12 +24276,15 @@
 Route15Gate_h: ; 0x495f6 to 0x49602 (12 bytes) (id=184)
     db $0c ; tileset
     db $05, $04 ; dimensions (y, x)
-    dw $40c7, $5605, $5602 ; blocks, texts, scripts
+    dw $40c7, Route15GateTexts, Route15GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $560c ; objects
+    dw Route15GateObject ; objects
 
-INCBIN "baserom.gbc",$49602,$49605 - $49602
+Route15GateScript: ; 0x49602
+    jp $3c3c
+; 0x49605
+
 Route15GateTexts: ; 0x49605
     dw Route15GateText1
 
@@ -19450,12 +24319,62 @@
 Route16GateMap_h: ; 0x496b2 to 0x496be (12 bytes) (id=186)
     db $0c ; tileset
     db $07, $04 ; dimensions (y, x)
-    dw Route16GateMapBlocks, $575a, $56be ; blocks, texts, scripts
+    dw Route16GateMapBlocks, Route16GateMapTexts, Route16GateMapScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $578b ; objects
+    dw Route16GateMapObject ; objects
 
-INCBIN "baserom.gbc",$496be,$49760 - $496be
+Route16GateMapScript: ; 0x496be
+    ld hl, $d732
+    res 5, [hl]
+    call $3c3c
+    ld a, [$d660]
+    ld hl, $56cf
+    jp $3d97
+; 0x496cf
+
+Route16GateMapScripts: ; 0x496cf
+    dw Route16GateMapScript0
+
+INCBIN "baserom.gbc",$496d1,$6
+
+Route16GateMapScript0: ; 0x496d7
+    call $5755
+    ret nz
+    ld hl, $5714
+    call $34bf
+    ret nc
+    ld a, $3
+    ld [$ff00+$8c], a
+    call $2920
+    xor a
+    ld [$ff00+$b4], a
+    ld a, [$cd3d]
+    cp $1
+    jr z, .asm_4970e ; 0x496f1 $1b
+    ld a, [$cd3d]
+    dec a
+    ld [$cd38], a
+    ld b, $0
+    ld c, a
+    ld a, $40
+    ld hl, $ccd3
+    call $36e0
+    call $3486
+    ld a, $1
+    ld [$d660], a
+    ret
+.asm_4970e
+    ld a, $2
+    ld [$d660], a
+    ret
+; 0x49714
+
+INCBIN "baserom.gbc",$49714,$46
+
+Route16GateMapTexts: ; 0x4975a
+    dw Route16GateMapText1, Route16GateMapText2, Route16GateMapText3
+
 Route16GateMapText1: ; 0x49760
     db $08 ; asm
     call $5755
@@ -19469,8 +24388,11 @@
 .asm_56c9d ; 0x49774
     jp $24d7
 
-INCBIN "baserom.gbc",$49777,$f
+INCBIN "baserom.gbc",$49777,$49781 - $49777
 
+Route16GateMapText3: ; 0x49781
+INCBIN "baserom.gbc",$49781,5
+
 Route16GateMapText2: ; 0x49786
     TX_FAR _Route16GateMapText2
     db $50
@@ -19512,12 +24434,18 @@
 Route16GateUpstairs_h: ; 0x497ff to 0x4980b (12 bytes) (id=187)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $40db, $580e, $580b ; blocks, texts, scripts
+    dw $40db, Route16GateUpstairsTexts, Route16GateUpstairsScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $584c ; objects
+    dw Route16GateUpstairsObject ; objects
 
-INCBIN "baserom.gbc",$4980b,$49816 - $4980b
+Route16GateUpstairsScript: ; 0x4980b
+    jp $3c3f
+; 0x4980e
+
+Route16GateUpstairsTexts: ; 0x4980e
+    dw Route16GateUpstairsText1, Route16GateUpstairsText2, Route16GateUpstairsText3, Route16GateUpstairsText4
+
 Route16GateUpstairsText1: ; 0x49816
     db $08 ; asm
     ld hl, $5820
@@ -19525,6 +24453,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$49820,$49825 - $49820
+
 Route16GateUpstairsText2: ; 0x49825
     db $08 ; asm
     ld hl, $582f
@@ -19532,17 +24461,21 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$4982f,$49834 - $4982f
+
 Route16GateUpstairsText3: ; 0x49834
     db $8
     ld hl, $583b
     jp $55c9
 ; 0x4983b
+
 INCBIN "baserom.gbc",$4983b,$5
+
 Route16GateUpstairsText4: ; 0x49840
     db $8
     ld hl, $5847
     jp $55c9
 ; 0x49847
+
 INCBIN "baserom.gbc",$49847,$5
 
 Route16GateUpstairsObject: ; 0x4984c (size=30)
@@ -19565,12 +24498,62 @@
 Route18Gate_h: ; 0x4986a to 0x49876 (12 bytes) (id=190)
     db $0c ; tileset
     db $05, $04 ; dimensions (y, x)
-    dw $40c7, $590d, $5876 ; blocks, texts, scripts
+    dw $40c7, Route18GateTexts, Route18GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5937 ; objects
+    dw Route18GateObject ; objects
 
-INCBIN "baserom.gbc",$49876,$49911 - $49876
+Route18GateScript: ; 0x49876
+    ld hl, $d732
+    res 5, [hl]
+    call $3c3c
+    ld a, [$d669]
+    ld hl, $5887
+    jp $3d97
+; 0x49887
+
+Route18GateScripts: ; 0x49887
+    dw Route18GateScript0
+
+INCBIN "baserom.gbc",$49889,$6
+
+Route18GateScript0: ; 0x4988f
+    call $5755
+    ret nz
+    ld hl, $58cc
+    call $34bf
+    ret nc
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $2920
+    xor a
+    ld [$ff00+$b4], a
+    ld a, [$cd3d]
+    cp $1
+    jr z, .asm_498c6 ; 0x498a9 $1b
+    ld a, [$cd3d]
+    dec a
+    ld [$cd38], a
+    ld b, $0
+    ld c, a
+    ld a, $40
+    ld hl, $ccd3
+    call $36e0
+    call $3486
+    ld a, $1
+    ld [$d669], a
+    ret
+.asm_498c6
+    ld a, $2
+    ld [$d669], a
+    ret
+; 0x498cc
+
+INCBIN "baserom.gbc",$498cc,$41
+
+Route18GateTexts: ; 0x4990d
+    dw Route18GateText1, Route18GateText2
+
 Route18GateText1: ; 0x49911
     db $08 ; asm
     call $5755
@@ -19584,8 +24567,11 @@
 .asm_a8410 ; 0x49925
     jp $24d7
 
-INCBIN "baserom.gbc",$49928,$f
+INCBIN "baserom.gbc",$49928,$49932 - $49928
 
+Route18GateText2: ; 0x49932
+INCBIN "baserom.gbc",$49932,5
+
 Route18GateObject: ; 0x49937 (size=50)
     db $a ; border tile
 
@@ -19611,12 +24597,18 @@
 Route18GateHeader_h: ; 0x49969 to 0x49975 (12 bytes) (id=191)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $40db, $5978, $5975 ; blocks, texts, scripts
+    dw $40db, Route18GateHeaderTexts, Route18GateHeaderScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $59a4 ; objects
+    dw Route18GateHeaderObject ; objects
 
-INCBIN "baserom.gbc",$49975,$4997e - $49975
+Route18GateHeaderScript: ; 0x49975
+    jp $3c3f
+; 0x49978
+
+Route18GateHeaderTexts: ; 0x49978
+    dw Route18GateHeaderText1, Route18GateHeaderText2, Route18GateHeaderText3
+
 Route18GateHeaderText1: ; 0x4997e
     db $08 ; asm
     ld a, $5
@@ -19630,12 +24622,15 @@
     ld hl, $5993
     jp $55c9
 ; 0x49993
+
 INCBIN "baserom.gbc",$49993,$5
+
 Route18GateHeaderText3: ; 0x49998
     db $8
     ld hl, $599f
     jp $55c9
 ; 0x4999f
+
 INCBIN "baserom.gbc",$4999f,$5
 
 Route18GateHeaderObject: ; 0x499a4 (size=24)
@@ -19657,12 +24652,28 @@
 MtMoon1_h: ; 0x499bc to 0x499c8 (12 bytes) (id=59)
     db $11 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw MtMoon1Blocks, $59e1, $59c8 ; blocks, texts, scripts
+    dw MtMoon1Blocks, MtMoon1Texts, MtMoon1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5b06 ; objects
+    dw MtMoon1Object ; objects
 
-INCBIN "baserom.gbc",$499c8,$49a52 - $499c8
+MtMoon1Script: ; 0x499c8
+    call $3c3c
+    ld hl, $59fd
+    ld de, $59db
+    ld a, [$d606]
+    call $3160
+    ld [$d606], a
+    ret
+; 0x499db
+
+INCBIN "baserom.gbc",$499db,$6
+
+MtMoon1Texts: ; 0x499e1
+    dw MtMoon1Text1, MtMoon1Text2, MtMoon1Text3, MtMoon1Text4, MtMoon1Text5, MtMoon1Text6, MtMoon1Text7, MtMoon1Text8, MtMoon1Text9, MtMoon1Text10, MtMoon1Text11, MtMoon1Text12, MtMoon1Text13, MtMoon1Text14
+
+INCBIN "baserom.gbc",$499fd,$55
+
 MtMoon1Text1: ; 0x49a52
     db $08 ; asm
     ld hl, $59fd
@@ -19752,12 +24763,40 @@
 MtMoon3_h: ; 0x49cff to 0x49d0b (12 bytes) (id=61)
     db $11 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw MtMoon3Blocks, $5e34, $5d0b ; blocks, texts, scripts
+    dw MtMoon3Blocks, MtMoon3Texts, MtMoon3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5fdb ; objects
+    dw MtMoon3Object ; objects
 
-INCBIN "baserom.gbc",$49d0b,$49e79 - $49d0b
+MtMoon3Script: ; 0x49d0b
+    call $3c3c
+    ld hl, $5e48
+    ld de, $5d63
+    ld a, [$d607]
+    call $3160
+    ld [$d607], a
+    ld a, [$d7f6]
+    bit 1, a
+    ret z
+    ld hl, $5d37
+    call $34bf
+    jr nc, .asm_49d31 ; 0x49d29 $6
+    ld hl, $d72e
+    set 4, [hl]
+    ret
+.asm_49d31
+    ld hl, $d72e
+    res 4, [hl]
+    ret
+; 0x49d37
+
+INCBIN "baserom.gbc",$49d37,$fd
+
+MtMoon3Texts: ; 0x49e34
+    dw MtMoon3Text1, MtMoon3Text2, MtMoon3Text3, MtMoon3Text4, MtMoon3Text5, MtMoon3Text6, MtMoon3Text7, MtMoon3Text8, MtMoon3Text9
+
+INCBIN "baserom.gbc",$49e46,$33
+
 MtMoon3Text1: ; 0x49e79
     db $08 ; asm
     ld a, [$d7f6]
@@ -19842,6 +24881,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$49f24,$49f29 - $49f24
+
 MtMoon3Text7: ; 0x49f29
     db $08 ; asm
     ld a, $1
@@ -19904,13 +24944,18 @@
 SafariZoneWest_h: ; 0x4a1a9 to 0x4a1b5 (12 bytes) (id=219)
     db $03 ; tileset
     db $0d, $0f ; dimensions (y, x)
-    dw SafariZoneWestBlocks, $61b8, $61b5 ; blocks, texts, scripts
+    dw SafariZoneWestBlocks, SafariZoneWestTexts, SafariZoneWestScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $61dc ; objects
+    dw SafariZoneWestObject ; objects
 
-INCBIN "baserom.gbc",$4a1b5,$4a1c8 - $4a1b5
+SafariZoneWestScript: ; 0x4a1b5
+    jp $3c3c
+; 0x4a1b8
 
+SafariZoneWestTexts: ; 0x4a1b8
+    dw SafariZoneWestText1, SafariZoneWestText2, SafariZoneWestText3, SafariZoneWestText4, SafariZoneWestText5, SafariZoneWestText6, SafariZoneWestText7, SafariZoneWestText8
+
 SafariZoneWestText5: ; 0x4a1c8
     TX_FAR _SafariZoneWestText5
     db $50
@@ -19968,12 +25013,18 @@
 SafariZoneSecretHouse_h: ; 0x4a30b to 0x4a317 (12 bytes) (id=222)
     db $14 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw SafariZoneSecretHouseBlocks, $631a, $6317 ; blocks, texts, scripts
+    dw SafariZoneSecretHouseBlocks, SafariZoneSecretHouseTexts, SafariZoneSecretHouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6365 ; objects
+    dw SafariZoneSecretHouseObject ; objects
 
-INCBIN "baserom.gbc",$4a317,$4a31c - $4a317
+SafariZoneSecretHouseScript: ; 0x4a317
+    jp $3c3c
+; 0x4a31a
+
+SafariZoneSecretHouseTexts: ; 0x4a31a
+    dw SafariZoneSecretHouseText1
+
 SafariZoneSecretHouseText1: ; 0x4a31c
     db $08 ; asm
     ld a, [$d857]
@@ -20000,6 +25051,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$4a350,$15
+
 SafariZoneSecretHouseObject: ; 0x4a365 (size=26)
     db $17 ; border tile
 
@@ -20118,12 +25170,44 @@
 BattleCenterM_h: ; 0x4fd04 to 0x4fd10 (12 bytes) (id=239)
     db $15 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw BattleCenterMBlocks, $7d4c, $7d10 ; blocks, texts, scripts
+    dw BattleCenterMBlocks, BattleCenterMTexts, BattleCenterMScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $7d53 ; objects
+    dw BattleCenterMObject ; objects
 
-INCBIN "baserom.gbc",$4fd10,$4fd4c - $4fd10
+BattleCenterMScript: ; 0x4fd10
+    call $3c3c
+    ld a, [$ff00+$aa]
+    cp $2
+    ld a, $8
+    jr z, .asm_4fd1d ; 0x4fd19 $2
+    ld a, $c
+.asm_4fd1d
+    ld [$ff00+$8d], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $34ae
+    ld hl, $d72d
+    bit 0, [hl]
+    set 0, [hl]
+    ret nz
+    ld hl, $c214
+    ld a, $8
+    ld [hli], a
+    ld a, $a
+    ld [hl], a
+    ld a, $8
+    ld [$c119], a
+    ld a, [$ff00+$aa]
+    cp $2
+    ret z
+    ld a, $7
+    ld [$c215], a
+    ld a, $c
+    ld [$c119], a
+    ret
+; 0x4fd4c
+
 BattleCenterMTexts: ; 0x4fd4c
     dw BattleCenterMText1
 
@@ -20147,12 +25231,15 @@
 TradeCenterM_h: ; 0x4fd71 to 0x4fd7d (12 bytes) (id=240)
     db $15 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw TradeCenterMBlocks, $7d80, $7d7d ; blocks, texts, scripts
+    dw TradeCenterMBlocks, TradeCenterMTexts, TradeCenterMScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $7d87 ; objects
+    dw TradeCenterMObject ; objects
 
-INCBIN "baserom.gbc",$4fd7d,$4fd80 - $4fd7d
+TradeCenterMScript: ; 0x4fd7d
+    jp $7d10
+; 0x4fd80
+
 TradeCenterMTexts: ; 0x4fd80
     dw TradeCenterMText1
 
@@ -20336,10 +25423,11 @@
         dbw $16,$5035
 
 SECTION "bank14",DATA,BANK[$14]
+
 Route22_h: ; 0x50000 to 0x50022 (34 bytes) (id=33)
     db $00 ; tileset
     db $09, $14 ; dimensions (y, x)
-    dw Route22Blocks, $5175, $4eb2 ; blocks, texts, scripts
+    dw Route22Blocks, Route22Texts, Route22Script ; blocks, texts, scripts
     db NORTH | EAST ; connections
 
     ; connections data
@@ -20358,7 +25446,7 @@
 
     ; end connection data
 
-    dw $4022 ; objects
+    dw Route22Object ; objects
 
 Route22Object: ; 0x50022 (size=27)
     db $2c ; border tile
@@ -20382,7 +25470,7 @@
 Route20_h: ; 0x500f1 to 0x50113 (34 bytes) (id=31)
     db $00 ; tileset
     db $09, $32 ; dimensions (y, x)
-    dw Route20Blocks, $4d22, $4ca9 ; blocks, texts, scripts
+    dw Route20Blocks, Route20Texts, Route20Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -20401,7 +25489,7 @@
 
     ; end connection data
 
-    dw $4113 ; objects
+    dw Route20Object ; objects
 
 Route20Object: ; 0x50113 (size=106)
     db $43 ; border tile
@@ -20436,7 +25524,7 @@
 Route23_h: ; 0x5033f to 0x50361 (34 bytes) (id=34)
     db $17 ; tileset
     db $48, $0a ; dimensions (y, x)
-    dw Route23Blocks, $52f7, $51da ; blocks, texts, scripts
+    dw Route23Blocks, Route23Texts, Route23Script ; blocks, texts, scripts
     db NORTH | SOUTH ; connections
 
     ; connections data
@@ -20455,7 +25543,7 @@
 
     ; end connection data
 
-    dw $4361 ; objects
+    dw Route23Object ; objects
 
 Route23Object: ; 0x50361 (size=81)
     db $f ; border tile
@@ -20490,7 +25578,7 @@
 Route24_h: ; 0x50682 to 0x506a4 (34 bytes) (id=35)
     db $00 ; tileset
     db $12, $0a ; dimensions (y, x)
-    dw Route24Blocks, $544b, $53ad ; blocks, texts, scripts
+    dw Route24Blocks, Route24Texts, Route24Script ; blocks, texts, scripts
     db SOUTH | EAST ; connections
 
     ; connections data
@@ -20509,7 +25597,7 @@
 
     ; end connection data
 
-    dw $46a4 ; objects
+    dw Route24Object ; objects
 
 Route24Object: ; 0x506a4 (size=67)
     db $2c ; border tile
@@ -20534,7 +25622,7 @@
 Route25_h: ; 0x5079b to 0x507b2 (23 bytes) (id=36)
     db $00 ; tileset
     db $09, $1e ; dimensions (y, x)
-    dw Route25Blocks, $5628, $55cb ; blocks, texts, scripts
+    dw Route25Blocks, Route25Texts, Route25Script ; blocks, texts, scripts
     db WEST ; connections
 
     ; connections data
@@ -20547,7 +25635,7 @@
 
     ; end connection data
 
-    dw $47b2 ; objects
+    dw Route25Object ; objects
 
 Route25Object: ; 0x507b2 (size=94)
     db $2c ; border tile
@@ -20579,7 +25667,7 @@
 IndigoPlateau_h: ; 0x5091e to 0x50935 (23 bytes) (id=9)
     db $17 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw IndigoPlateauBlocks, $4936, $4935 ; blocks, texts, scripts
+    dw IndigoPlateauBlocks, $4936, IndigoPlateauScript ; blocks, texts, scripts
     db SOUTH ; connections
 
     ; connections data
@@ -20592,9 +25680,12 @@
 
     ; end connection data
 
-    dw $4936 ; objects
+    dw IndigoPlateauObject ; objects
 
-INCBIN "baserom.gbc",$50935,$50936 - $50935
+IndigoPlateauScript: ; 0x50935
+    ret
+; 0x50936
+
 IndigoPlateauObject: ; 0x50936 (size=20)
     db $e ; border tile
 
@@ -20616,7 +25707,7 @@
 SaffronCity_h: ; 0x509a4 to 0x509dc (56 bytes) (id=10)
     db $00 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw SaffronCityBlocks, $4c03, $4c00 ; blocks, texts, scripts
+    dw SaffronCityBlocks, SaffronCityTexts, SaffronCityScript ; blocks, texts, scripts
     db NORTH | SOUTH | WEST | EAST ; connections
 
     ; connections data
@@ -20647,7 +25738,7 @@
 
     ; end connection data
 
-    dw $49dc ; objects
+    dw SaffronCityObject ; objects
 
 SaffronCityObject: ; 0x509dc (size=188)
     db $f ; border tile
@@ -20704,8 +25795,13 @@
 SaffronCityBlocks: ; 360
     INCBIN "maps/saffroncity.blk"
 
-INCBIN "baserom.gbc",$50c00,$50c35 - $50c00
+SaffronCityScript: ; 0x50c00
+    jp $3c3c
+; 0x50c03
 
+SaffronCityTexts: ; 0x50c03
+    dw SaffronCityText1, SaffronCityText2, SaffronCityText3, SaffronCityText4, SaffronCityText5, SaffronCityText6, SaffronCityText7, SaffronCityText8, SaffronCityText9, SaffronCityText10, SaffronCityText11, SaffronCityText12, SaffronCityText13, SaffronCityText14, SaffronCityText15, SaffronCityText16, SaffronCityText17, SaffronCityText18, SaffronCityText19, SaffronCityText20, SaffronCityText21, SaffronCityText22, SaffronCityText23, SaffronCityText24, SaffronCityText25
+
 SaffronCityText1: ; 0x50c35
     TX_FAR _SaffronCityText1
     db $50
@@ -20799,7 +25895,27 @@
     TX_FAR _SaffronCityText25
     db $50
 
-INCBIN "baserom.gbc",$50ca9,$50db3 - $50ca9
+Route20Script: ; 0x50ca9
+    ld hl, $d7e7
+    bit 0, [hl]
+    res 0, [hl]
+    call nz, $4cc6
+    call $3c3c
+    ld hl, $4d3a
+    ld de, $4d1c
+    ld a, [$d628]
+    call $3160
+    ld [$d628], a
+    ret
+; 0x50cc6
+
+INCBIN "baserom.gbc",$50cc6,$5c
+
+Route20Texts: ; 0x50d22
+    dw Route20Text1, Route20Text2, Route20Text3, Route20Text4, Route20Text5, Route20Text6, Route20Text7, Route20Text8, Route20Text9, Route20Text10, Route20Text11, Route20Text12
+
+INCBIN "baserom.gbc",$50d3a,$79
+
 Route20Text1: ; 0x50db3
     db $08 ; asm
     ld hl, $4d3a
@@ -20867,7 +25983,177 @@
     TX_FAR _Route20Text11
     db $50
 
-INCBIN "baserom.gbc",$50eb2,$5117b - $50eb2
+Route22Script: ; 0x50eb2
+    call $3c3c
+    ld hl, $4ebe
+    ld a, [$d60a]
+    jp $3d97
+; 0x50ebe
+
+Route22Scripts: ; 0x50ebe
+    dw Route22Script0, Route22Script1, Route22Script2, Route22Script3
+
+INCBIN "baserom.gbc",$50ec6,$3a
+
+Route22Script0: ; 0x50f00
+    ld a, [$d7eb]
+    bit 7, a
+    ret z
+    ld hl, $4f2d
+    call $34bf
+    ret nc
+    ld a, [$cd3d]
+    ld [$cf0d], a
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $f0
+    ld [$cd6b], a
+    ld a, $2
+    ld [$d528], a
+    ld a, [$d7eb]
+    bit 0, a
+    jr nz, .asm_50f32 ; 0x50f25 $b
+    bit 1, a
+    jp nz, $504e
+    ret
+    inc b
+    dec e
+    dec b
+    dec e
+    rst $38
+.asm_50f32
+    ld a, $1
+    ld [$cd4f], a
+    xor a
+    ld [$cd50], a
+    ld a, $4c
+    call Predef
+    ld a, [$d700]
+    and a
+    jr z, .asm_50f4e ; 0x50f44 $8
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+.asm_50f4e
+    ld c, $2
+    ld a, $de
+    call $23a1
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $4ee6
+    ld a, $1
+    ld [$d60a], a
+    ret
+; 0x50f62
+
+Route22Script1: ; 0x50f62
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    ld a, [$cf0d]
+    cp $1
+    jr nz, .asm_50f78 ; 0x50f6d $9
+    ld a, $4
+    ld [$d528], a
+    ld a, $4
+    jr .asm_50f7a ; 0x50f76 $2
+.asm_50f78
+    ld a, $c
+.asm_50f7a
+    ld [$ff00+$8d], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $34a6
+    xor a
+    ld [$cd6b], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    ld hl, $d72d
+    set 6, [hl]
+    set 7, [hl]
+    ld hl, $51b7
+    ld de, $51bc
+    call $3354
+    ld a, $e1
+    ld [$d059], a
+    ld hl, $4faf
+    call $4ed6
+    ld a, $2
+    ld [$d60a], a
+    ret
+; 0x50faf
+
+INCBIN "baserom.gbc",$50faf,$50fb5 - $50faf
+
+Route22Script2: ; 0x50fb5
+    ld a, [$d057]
+    cp $ff
+    jp z, $4ece
+    ld a, [$c109]
+    and a
+    jr nz, .asm_50fc7 ; 0x50fc1 $4
+    ld a, $4
+    jr .asm_50fc9 ; 0x50fc5 $2
+.asm_50fc7
+    ld a, $c
+.asm_50fc9
+    ld [$ff00+$8d], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $34a6
+    ld a, $f0
+    ld [$cd6b], a
+    ld hl, $d7eb
+    set 5, [hl]
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+    ld b, $2
+    ld hl, $5b47
+    call Bankswitch
+    ld a, [$cf0d]
+    cp $1
+    jr nz, .asm_50fff ; 0x50ff8 $5
+    call $5008
+    jr .asm_51002 ; 0x50ffd $3
+.asm_50fff
+    call $500d
+.asm_51002
+    ld a, $3
+    ld [$d60a], a
+    ret
+; 0x51008
+
+INCBIN "baserom.gbc",$51008,$5102a - $51008
+
+Route22Script3: ; 0x5102a
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    xor a
+    ld [$cd6b], a
+    ld a, $22
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    call $2307
+    ld hl, $d7eb
+    res 0, [hl]
+    res 7, [hl]
+    ld a, $0
+    ld [$d60a], a
+    ret
+; 0x5104e
+
+INCBIN "baserom.gbc",$5104e,$127
+
+Route22Texts: ; 0x51175
+    dw Route22Text1, Route22Text2, Route22Text3
+
 Route22Text1: ; 0x5117b
     db $08 ; asm
     ld a, [$d7eb]
@@ -20902,7 +26188,64 @@
     TX_FAR _Route22Text3
     db $50
 
-INCBIN "baserom.gbc",$511da,$51307 - $511da
+Route23Script: ; 0x511da
+    call $51e9
+    call $3c3c
+    ld hl, $5213
+    ld a, [$d667]
+    jp $3d97
+; 0x511e9
+
+INCBIN "baserom.gbc",$511e9,$51213 - $511e9
+
+Route23Scripts: ; 0x51213
+    dw Route23Script0
+
+INCBIN "baserom.gbc",$51215,$4
+
+Route23Script0: ; 0x51219
+    ld hl, $5255
+    ld a, [$d361]
+    ld b, a
+    ld e, $0
+    ld c, $7
+.asm_51224
+    ld a, [hli]
+    cp $ff
+    ret z
+    inc e
+    dec c
+    cp b
+    jr nz, .asm_51224 ; 0x5122b $f7
+    cp $23
+    jr nz, .asm_51237 ; 0x5122f $6
+    ld a, [$d362]
+    cp $e
+    ret nc
+.asm_51237
+    ld a, e
+    ld [$ff00+$8c], a
+    ld a, c
+    ld [$cd3d], a
+    ld b, $2
+    ld hl, $d7ed
+    ld a, $10
+    call Predef
+    ld a, c
+    and a
+    ret nz
+    call $525d
+    call $2920
+    xor a
+    ld [$ff00+$b4], a
+    ret
+; 0x51255
+
+INCBIN "baserom.gbc",$51255,$a2
+
+Route23Texts: ; 0x512f7
+    dw Route23Text1, Route23Text2, Route23Text3, Route23Text4, Route23Text5, Route23Text6, Route23Text7, Route23Text8
+
 Route23Text1: ; 0x51307
     db $08 ; asm
     ld a, $6
@@ -20952,8 +26295,23 @@
     TX_FAR _Route23Text8
     db $50
 
-INCBIN "baserom.gbc",$513ad,$514a4 - $513ad
+Route24Script: ; 0x513ad
+    call $3c3c
+    ld hl, $545b
+    ld de, $53cb
+    ld a, [$d602]
+    call $3160
+    ld [$d602], a
+    ret
+; 0x513c0
 
+INCBIN "baserom.gbc",$513c0,$8b
+
+Route24Texts: ; 0x5144b
+    dw Route24Text1, Route24Text2, Route24Text3, Route24Text4, Route24Text5, Route24Text6, Route24Text7, Route24Text8
+
+INCBIN "baserom.gbc",$5145b,$49
+
 Route24Text1: ; 0x514a4
     db $8
     ld hl, $d7f0
@@ -21038,7 +26396,26 @@
     call LoadTrainerHeader
     jp $24d7
 
-INCBIN "baserom.gbc",$51571,$516ab - $51571
+INCBIN "baserom.gbc",$51571,$515cb - $51571
+
+Route25Script: ; 0x515cb
+    call $55e1
+    call $3c3c
+    ld hl, $563e
+    ld de, $5622
+    ld a, [$d603]
+    call $3160
+    ld [$d603], a
+    ret
+; 0x515e1
+
+INCBIN "baserom.gbc",$515e1,$47
+
+Route25Texts: ; 0x51628
+    dw Route25Text1, Route25Text2, Route25Text3, Route25Text4, Route25Text5, Route25Text6, Route25Text7, Route25Text8, Route25Text9, Route25Text10, Route25Text11
+
+INCBIN "baserom.gbc",$5163e,$6d
+
 Route25Text1: ; 0x516ab
     db $08 ; asm
     ld hl, $563e
@@ -21102,12 +26479,36 @@
 VictoryRoad2_h: ; 0x51791 to 0x5179d (12 bytes) (id=194)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw VictoryRoad2Blocks, $581b, $579d ; blocks, texts, scripts
+    dw VictoryRoad2Blocks, VictoryRoad2Texts, VictoryRoad2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5915 ; objects
+    dw VictoryRoad2Object ; objects
 
-INCBIN "baserom.gbc",$5179d,$5187e - $5179d
+VictoryRoad2Script: ; 0x5179d
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    call nz, $57c4
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    call nz, $57c9
+    call $3c3c
+    ld hl, $5835
+    ld de, $57eb
+    ld a, [$d63f]
+    call $3160
+    ld [$d63f], a
+    ret
+; 0x517c4
+
+INCBIN "baserom.gbc",$517c4,$57
+
+VictoryRoad2Texts: ; 0x5181b
+    dw VictoryRoad2Text1, VictoryRoad2Text2, VictoryRoad2Text3, VictoryRoad2Text4, VictoryRoad2Text5, VictoryRoad2Text6, VictoryRoad2Text7, VictoryRoad2Text8, VictoryRoad2Text9, VictoryRoad2Text10, VictoryRoad2Text11, VictoryRoad2Text12, VictoryRoad2Text13
+
+INCBIN "baserom.gbc",$51835,$49
+
 VictoryRoad2Text1: ; 0x5187e
     db $08 ; asm
     ld hl, $5835
@@ -21145,6 +26546,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$518ba,$5b
+
 VictoryRoad2Object: ; 0x51915 (size=154)
     db $7d ; border tile
 
@@ -21189,12 +26591,18 @@
 MtMoon2_h: ; 0x51a36 to 0x51a42 (12 bytes) (id=60)
     db $11 ; tileset
     db $0e, $0e ; dimensions (y, x)
-    dw MtMoon2Blocks, $5a46, $5a42 ; blocks, texts, scripts
+    dw MtMoon2Blocks, $5a46, MtMoon2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5a4d ; objects
+    dw MtMoon2Object ; objects
 
-INCBIN "baserom.gbc",$51a42,$51a4d - $51a42
+MtMoon2Script: ; 0x51a42
+    call $3c3c
+    ret
+; 0x51a46
+
+INCBIN "baserom.gbc",$51a46,$7
+
 MtMoon2Object: ; 0x51a4d (size=68)
     db $3 ; border tile
 
@@ -21228,12 +26636,29 @@
 SilphCo7_h: ; 0x51b55 to 0x51b61 (12 bytes) (id=212)
     db $16 ; tileset
     db $09, $0d ; dimensions (y, x)
-    dw SilphCo7Blocks, $5d3f, $5b61 ; blocks, texts, scripts
+    dw SilphCo7Blocks, SilphCo7Texts, SilphCo7Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5ed7 ; objects
+    dw SilphCo7Object ; objects
 
-INCBIN "baserom.gbc",$51b61,$51d8e - $51b61
+SilphCo7Script: ; 0x51b61
+    call $5b77
+    call $3c3c
+    ld hl, $5d5d
+    ld de, $5c17
+    ld a, [$d648]
+    call $3160
+    ld [$d648], a
+    ret
+; 0x51b77
+
+INCBIN "baserom.gbc",$51b77,$1c8
+
+SilphCo7Texts: ; 0x51d3f
+    dw SilphCo7Text1, SilphCo7Text2, SilphCo7Text3, SilphCo7Text4, SilphCo7Text5, SilphCo7Text6, SilphCo7Text7, SilphCo7Text8, SilphCo7Text9, SilphCo7Text10, SilphCo7Text11, SilphCo7Text12, SilphCo7Text13, SilphCo7Text14, SilphCo7Text15
+
+INCBIN "baserom.gbc",$51d55 + 8,$39 - 8
+
 SilphCo7Text1: ; 0x51d8e
     db $08 ; asm
     ld a, [$d72e]
@@ -21267,6 +26692,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51dd3,$51de7 - $51dd3
+
 SilphCo7Text2: ; 0x51de7
     db $8
     ld a, [$d838]
@@ -21282,6 +26708,7 @@
     jp $24d7
 ; 0x51e00
 INCBIN "baserom.gbc",$51e00,$a
+
 SilphCo7Text3: ; 0x51e0a
     db $08 ; asm
     ld a, [$d838]
@@ -21297,6 +26724,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51e23,$51e2d - $51e23
+
 SilphCo7Text4: ; 0x51e2d
     db $08 ; asm
     ld a, [$d838]
@@ -21312,6 +26740,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51e46,$51e50 - $51e46
+
 SilphCo7Text5: ; 0x51e50
     db $08 ; asm
     ld hl, $5d5d
@@ -21319,6 +26748,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51e5a,$51e69 - $51e5a
+
 SilphCo7Text6: ; 0x51e69
     db $08 ; asm
     ld hl, $5d69
@@ -21326,6 +26756,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51e73,$51e82 - $51e73
+
 SilphCo7Text7: ; 0x51e82
     db $08 ; asm
     ld hl, $5d75
@@ -21333,6 +26764,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51e8c,$51e9b - $51e8c
+
 SilphCo7Text8: ; 0x51e9b
     db $08 ; asm
     ld hl, $5d81
@@ -21340,6 +26772,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$51ea5,$51eb4 - $51ea5
+
 SilphCo7Text9: ; 0x51eb4
     db $08 ; asm
     ld hl, $5ebe
@@ -21346,7 +26779,19 @@
     call PrintText
     jp $24d7
 
-INCBIN "baserom.gbc",$51ebe,$19
+INCBIN "baserom.gbc",$51ebe,$51ec3 - $51ebe
+
+SilphCo7Text13: ; 0x51ec3
+INCBIN "baserom.gbc",$51ec3,5
+
+SilphCo7Text14: ; 0x51ec8
+INCBIN "baserom.gbc",$51ec8,5
+
+INCBIN "baserom.gbc",$51ecd,$51ed2 - $51ecd
+
+SilphCo7Text15: ; 0x51ed2
+INCBIN "baserom.gbc",$51ed2,5
+
 SilphCo7Object: ; 0x51ed7 (size=128)
     db $2e ; border tile
 
@@ -21390,9 +26835,10 @@
     dw $6110, $604d, $5fd8 ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $60d1 ; objects
+    dw Mansion2Object ; objects
 
 INCBIN "baserom.gbc",$51fd8,$52064 - $51fd8
+
 Mansion2Text1: ; 0x52064
     db $08 ; asm
     ld hl, $6057
@@ -21410,6 +26856,7 @@
     db $50
 
 INCBIN "baserom.gbc",$52087,$4a
+
 Mansion2Object: ; 0x520d1 (size=63)
     db $1 ; border tile
 
@@ -21441,9 +26888,10 @@
     dw $6326, $628a, $61ee ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $62e6 ; objects
+    dw Mansion3Object ; objects
 
 INCBIN "baserom.gbc",$521ee,$522af - $521ee
+
 Mansion3Text1: ; 0x522af
     db $08 ; asm
     ld hl, $6296
@@ -21492,9 +26940,10 @@
     dw $64dd, $6436, $63b9 ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6498 ; objects
+    dw Mansion4Object ; objects
 
 INCBIN "baserom.gbc",$523b9,$52461 - $523b9
+
 Mansion4Text1: ; 0x52461
     db $08 ; asm
     ld hl, $6448
@@ -21909,6 +27358,7 @@
 SECTION "bank15",DATA,BANK[$15]
 
 INCBIN "baserom.gbc",$54000,$54022 - $54000
+
 Route2Object: ; 0x54022 (size=72)
     db $f ; border tile
 
@@ -21944,7 +27394,7 @@
 Route3_h: ; 0x541e6 to 0x54208 (34 bytes) (id=14)
     db $00 ; tileset
     db $09, $23 ; dimensions (y, x)
-    dw Route3Blocks, $5511, $54f8 ; blocks, texts, scripts
+    dw Route3Blocks, Route3Texts, Route3Script ; blocks, texts, scripts
     db NORTH | WEST ; connections
 
     ; connections data
@@ -21963,7 +27413,7 @@
 
     ; end connection data
 
-    dw $4208 ; objects
+    dw Route3Object ; objects
 
 Route3Object: ; 0x54208 (size=77)
     db $2c ; border tile
@@ -21990,7 +27440,7 @@
 Route4_h: ; 0x54390 to 0x543b2 (34 bytes) (id=15)
     db $00 ; tileset
     db $09, $2d ; dimensions (y, x)
-    dw Route4Blocks, $5671, $5658 ; blocks, texts, scripts
+    dw Route4Blocks, Route4Texts, Route4Script; blocks, texts, scripts
     db SOUTH | EAST ; connections
 
     ; connections data
@@ -22009,7 +27459,7 @@
 
     ; end connection data
 
-    dw $43b2 ; objects
+    dw Route4Object ; objects
 
 Route4Object: ; 0x543b2 (size=58)
     db $2c ; border tile
@@ -22040,7 +27490,7 @@
 Route5_h: ; 0x54581 to 0x545a3 (34 bytes) (id=16)
     db $00 ; tileset
     db $12, $0a ; dimensions (y, x)
-    dw Route5Blocks, $56b5, $56b2 ; blocks, texts, scripts
+    dw Route5Blocks, Route5Texts, Route5Script ; blocks, texts, scripts
     db NORTH | SOUTH ; connections
 
     ; connections data
@@ -22059,7 +27509,7 @@
 
     ; end connection data
 
-    dw $45a3 ; objects
+    dw Route5Object ; objects
 
 Route5Object: ; 0x545a3 (size=47)
     db $a ; border tile
@@ -22089,7 +27539,7 @@
 Route9_h: ; 0x54686 to 0x546a8 (34 bytes) (id=20)
     db $00 ; tileset
     db $09, $1e ; dimensions (y, x)
-    dw Route9Blocks, $56d5, $56bc ; blocks, texts, scripts
+    dw Route9Blocks, Route9Texts, Route9Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -22108,7 +27558,7 @@
 
     ; end connection data
 
-    dw $46a8 ; objects
+    dw Route9Object ; objects
 
 Route9Object: ; 0x546a8 (size=86)
     db $2c ; border tile
@@ -22136,7 +27586,7 @@
 Route13_h: ; 0x5480c to 0x5482e (34 bytes) (id=24)
     db $00 ; tileset
     db $09, $1e ; dimensions (y, x)
-    dw Route13Blocks, $5837, $581e ; blocks, texts, scripts
+    dw Route13Blocks, Route13Texts, Route13Script ; blocks, texts, scripts
     db NORTH | WEST ; connections
 
     ; connections data
@@ -22155,7 +27605,7 @@
 
     ; end connection data
 
-    dw $482e ; objects
+    dw Route13Object ; objects
 
 Route13Object: ; 0x5482e (size=93)
     db $43 ; border tile
@@ -22185,7 +27635,7 @@
 Route14_h: ; 0x54999 to 0x549bb (34 bytes) (id=25)
     db $00 ; tileset
     db $1b, $0a ; dimensions (y, x)
-    dw Route14Blocks, $59ec, $59d3 ; blocks, texts, scripts
+    dw Route14Blocks, Route14Texts, Route14Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -22204,7 +27654,7 @@
 
     ; end connection data
 
-    dw $49bb ; objects
+    dw Route14Object ; objects
 
 Route14Object: ; 0x549bb (size=87)
     db $43 ; border tile
@@ -22232,7 +27682,7 @@
 Route17_h: ; 0x54b20 to 0x54b42 (34 bytes) (id=28)
     db $00 ; tileset
     db $48, $0a ; dimensions (y, x)
-    dw Route17Blocks, $5b93, $5b7a ; blocks, texts, scripts
+    dw Route17Blocks, Route17Texts, Route17Script ; blocks, texts, scripts
     db NORTH | SOUTH ; connections
 
     ; connections data
@@ -22251,7 +27701,7 @@
 
     ; end connection data
 
-    dw $4b42 ; objects
+    dw Route17Object ; objects
 
 Route17Object: ; 0x54b42 (size=102)
     db $43 ; border tile
@@ -22284,7 +27734,7 @@
 Route19_h: ; 0x54e78 to 0x54e9a (34 bytes) (id=30)
     db $00 ; tileset
     db $1b, $0a ; dimensions (y, x)
-    dw Route19Blocks, $5d5d, $5d44 ; blocks, texts, scripts
+    dw Route19Blocks, Route19Texts, Route19Script ; blocks, texts, scripts
     db NORTH | WEST ; connections
 
     ; connections data
@@ -22303,7 +27753,7 @@
 
     ; end connection data
 
-    dw $4e9a ; objects
+    dw Route19Object ; objects
 
 Route19Object: ; 0x54e9a (size=87)
     db $43 ; border tile
@@ -22331,7 +27781,7 @@
 Route21_h: ; 0x54fff to 0x55021 (34 bytes) (id=32)
     db $00 ; tileset
     db $2d, $0a ; dimensions (y, x)
-    dw Route21Blocks, $5f04, $5eeb ; blocks, texts, scripts
+    dw Route21Blocks, Route21Texts, Route21Script ; blocks, texts, scripts
     db NORTH | SOUTH ; connections
 
     ; connections data
@@ -22350,7 +27800,7 @@
 
     ; end connection data
 
-    dw $5021 ; objects
+    dw Route21Object ; objects
 
 Route21Object: ; 0x55021 (size=76)
     db $43 ; border tile
@@ -22379,8 +27829,14 @@
 FuchsiaHouse3Blocks: ; 16
     INCBIN "maps/fuchsiahouse3.blk"
 
-INCBIN "baserom.gbc",$5524f,$554ee - $5524f
+INCBIN "baserom.gbc",$5524f,$554e3 - $5524f
 
+Route2Script: ; 0x554e3
+    jp $3c3c
+; 0x554e6
+
+INCBIN "baserom.gbc",$554e6,$8
+
 Route2Text3: ; 0x554ee
     TX_FAR _Route2Text3
     db $50
@@ -22389,8 +27845,23 @@
     TX_FAR _Route2Text4
     db $50
 
-INCBIN "baserom.gbc",$554f8,$55586 - $554f8
+Route3Script: ; 0x554f8
+    call $3c3c
+    ld hl, $5525
+    ld de, $550b
+    ld a, [$d5f8]
+    call $3160
+    ld [$d5f8], a
+    ret
+; 0x5550b
 
+INCBIN "baserom.gbc",$5550b,$6
+
+Route3Texts: ; 0x55511
+    dw Route3Text1, Route3Text2, Route3Text3, Route3Text4, Route3Text5, Route3Text6, Route3Text7, Route3Text8, Route3Text9, Route3Text10
+
+INCBIN "baserom.gbc",$55525,$61
+
 Route3Text1: ; 0x55586
     TX_FAR _Route3Text1
     db $50
@@ -22402,6 +27873,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55595,$555a4 - $55595
+
 Route3Text3: ; 0x555a4
     db $08 ; asm
     ld hl, $5531
@@ -22409,6 +27881,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$555ae,$555bd - $555ae
+
 Route3Text4: ; 0x555bd
     db $08 ; asm
     ld hl, $553d
@@ -22416,6 +27889,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$555c7,$555d6 - $555c7
+
 Route3Text5: ; 0x555d6
     db $08 ; asm
     ld hl, $5549
@@ -22423,6 +27897,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$555e0,$555ef - $555e0
+
 Route3Text6: ; 0x555ef
     db $08 ; asm
     ld hl, $5555
@@ -22430,6 +27905,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$555f9,$55608 - $555f9
+
 Route3Text7: ; 0x55608
     db $08 ; asm
     ld hl, $5561
@@ -22437,6 +27913,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55612,$55621 - $55612
+
 Route3Text8: ; 0x55621
     db $08 ; asm
     ld hl, $556d
@@ -22444,6 +27921,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5562b,$5563a - $5562b
+
 Route3Text9: ; 0x5563a
     db $08 ; asm
     ld hl, $5579
@@ -22456,8 +27934,23 @@
     TX_FAR _Route3Text10
     db $50
 
-INCBIN "baserom.gbc",$55658,$5568a - $55658
+Route4Script: ; 0x55658
+    call $3c3c
+    ld hl, $567d
+    ld de, $566b
+    ld a, [$d5f9]
+    call $3160
+    ld [$d5f9], a
+    ret
+; 0x5566b
 
+INCBIN "baserom.gbc",$5566b,$6
+
+Route4Texts: ; 0x55671
+    dw Route4Text1, Route4Text2, Route4Text3, Route4Text4, Route4Text5, Route4Text6
+
+INCBIN "baserom.gbc",$5567d,$d
+
 Route4Text1: ; 0x5568a
     TX_FAR _Route4Text1
     db $50
@@ -22478,7 +27971,10 @@
     TX_FAR _Route4Text6
     db $50
 
-INCBIN "baserom.gbc",$556b2,$556b5 - $556b2
+Route5Script: ; 0x556b2
+    jp $3c3c
+; 0x556b5
+
 Route5Texts: ; 0x556b5
     dw Route5Text1
 
@@ -22486,7 +27982,27 @@
     TX_FAR _Route5Text1
     db $50
 
-INCBIN "baserom.gbc",$556bc,$55758 - $556bc
+Route9Script: ; 0x556bc
+    call $3c3c
+    ld hl, $56eb
+    ld de, $56cf
+    ld a, [$d604]
+    call $3160
+    ld [$d604], a
+    ret
+; 0x556cf
+
+INCBIN "baserom.gbc",$556cf,$6
+
+Route9Texts: ; 0x556d5
+    dw Route9Text1, Route9Text2, Route9Text3, Route9Text4, Route9Text5, Route9Text6, Route9Text7, Route9Text8, Route9Text9, Route9Text10, Route9Text11
+
+Route12Text13: ; 0x556eb
+INCBIN "baserom.gbc",$556eb,$556f0 - $556eb
+
+Route12Text14: ; 0x556f0
+INCBIN "baserom.gbc",$556f0,$55758 - $556f0
+
 Route9Text1: ; 0x55758
     db $8 ; asm
     ld hl, $56eb
@@ -22541,7 +28057,23 @@
     TX_FAR _Route9Text11
     db $50
 
-INCBIN "baserom.gbc",$5581e,$558ca - $5581e
+Route13Script: ; 0x5581e
+    call $3c3c
+    ld hl, $5851
+    ld de, $5831
+    ld a, [$d61a]
+    call $3160
+    ld [$d61a], a
+    ret
+; 0x55831
+
+INCBIN "baserom.gbc",$55831,$6
+
+Route13Texts: ; 0x55837
+    dw Route13Text1, Route13Text2, Route13Text3, Route13Text4, Route13Text5, Route13Text6, Route13Text7, Route13Text8, Route13Text9, Route13Text10, Route13Text11, Route13Text12, Route13Text13
+
+INCBIN "baserom.gbc",$55851,$79
+
 Route13Text1: ; 0x558ca
     db $08 ; asm
     ld hl, $5851
@@ -22549,6 +28081,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$558d4,$558e3 - $558d4
+
 Route13Text2: ; 0x558e3
     db $08 ; asm
     ld hl, $585d
@@ -22556,6 +28089,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$558ed,$558fc - $558ed
+
 Route13Text3: ; 0x558fc
     db $08 ; asm
     ld hl, $5869
@@ -22563,6 +28097,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55906,$55915 - $55906
+
 Route13Text4: ; 0x55915
     db $08 ; asm
     ld hl, $5875
@@ -22570,6 +28105,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5591f,$5592e - $5591f
+
 Route13Text5: ; 0x5592e
     db $08 ; asm
     ld hl, $5881
@@ -22577,6 +28113,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55938,$55947 - $55938
+
 Route13Text6: ; 0x55947
     db $08 ; asm
     ld hl, $588d
@@ -22584,6 +28121,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55951,$55960 - $55951
+
 Route13Text7: ; 0x55960
     db $08 ; asm
     ld hl, $5899
@@ -22591,6 +28129,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5596a,$55979 - $5596a
+
 Route13Text8: ; 0x55979
     db $08 ; asm
     ld hl, $58a5
@@ -22598,6 +28137,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55983,$55992 - $55983
+
 Route13Text9: ; 0x55992
     db $08 ; asm
     ld hl, $58b1
@@ -22605,6 +28145,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5599c,$559ab - $5599c
+
 Route13Text10: ; 0x559ab
     db $08 ; asm
     ld hl, $58bd
@@ -22625,7 +28166,23 @@
     TX_FAR _Route13Text13
     db $50
 
-INCBIN "baserom.gbc",$559d3,$55a7b - $559d3
+Route14Script: ; 0x559d3
+    call $3c3c
+    ld hl, $5a02
+    ld de, $59e6
+    ld a, [$d61b]
+    call $3160
+    ld [$d61b], a
+    ret
+; 0x559e6
+
+INCBIN "baserom.gbc",$559e6,$6
+
+Route14Texts: ; 0x559ec
+    dw Route14Text1, Route14Text2, Route14Text3, Route14Text4, Route14Text5, Route14Text6, Route14Text7, Route14Text8, Route14Text9, Route14Text10, Route14Text11
+
+INCBIN "baserom.gbc",$55a02,$79
+
 Route14Text1: ; 0x55a7b
     db $08 ; asm
     ld hl, $5a02
@@ -22633,6 +28190,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55a85,$55a94 - $55a85
+
 Route14Text2: ; 0x55a94
     db $08 ; asm
     ld hl, $5a0e
@@ -22640,6 +28198,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55a9e,$55aad - $55a9e
+
 Route14Text3: ; 0x55aad
     db $08 ; asm
     ld hl, $5a1a
@@ -22647,6 +28206,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55ab7,$55ac6 - $55ab7
+
 Route14Text4: ; 0x55ac6
     db $08 ; asm
     ld hl, $5a26
@@ -22654,6 +28214,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55ad0,$55adf - $55ad0
+
 Route14Text5: ; 0x55adf
     db $08 ; asm
     ld hl, $5a32
@@ -22661,6 +28222,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55ae9,$55af8 - $55ae9
+
 Route14Text6: ; 0x55af8
     db $08 ; asm
     ld hl, $5a3e
@@ -22668,6 +28230,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55b02,$55b11 - $55b02
+
 Route14Text7: ; 0x55b11
     db $08 ; asm
     ld hl, $5a4a
@@ -22675,6 +28238,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55b1b,$55b2a - $55b1b
+
 Route14Text8: ; 0x55b2a
     db $08 ; asm
     ld hl, $5a56
@@ -22682,6 +28246,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55b34,$55b43 - $55b34
+
 Route14Text9: ; 0x55b43
     db $08 ; asm
     ld hl, $5a62
@@ -22689,6 +28254,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55b4d,$55b5c - $55b4d
+
 Route14Text10: ; 0x55b5c
     db $08 ; asm
     ld hl, $5a6e
@@ -22701,7 +28267,23 @@
     TX_FAR _Route14Text11
     db $50
 
-INCBIN "baserom.gbc",$55b7a,$55c2c - $55b7a
+Route17Script: ; 0x55b7a
+    call $3c3c
+    ld hl, $5bb3
+    ld de, $5b8d
+    ld a, [$d61c]
+    call $3160
+    ld [$d61c], a
+    ret
+; 0x55b8d
+
+INCBIN "baserom.gbc",$55b8d,$6
+
+Route17Texts: ; 0x55b93
+    dw Route17Text1, Route17Text2, Route17Text3, Route17Text4, Route17Text5, Route17Text6, Route17Text7, Route17Text8, Route17Text9, Route17Text10, Route17Text11, Route17Text12, Route17Text13, Route17Text14, Route17Text15, Route17Text16
+
+INCBIN "baserom.gbc",$55bb3,$79
+
 Route17Text1: ; 0x55c2c
     db $08 ; asm
     ld hl, $5bb3
@@ -22709,6 +28291,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55c36,$55c45 - $55c36
+
 Route17Text2: ; 0x55c45
     db $08 ; asm
     ld hl, $5bbf
@@ -22716,6 +28299,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55c4f,$55c5e - $55c4f
+
 Route17Text3: ; 0x55c5e
     db $08 ; asm
     ld hl, $5bcb
@@ -22723,6 +28307,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55c68,$55c77 - $55c68
+
 Route17Text4: ; 0x55c77
     db $08 ; asm
     ld hl, $5bd7
@@ -22730,6 +28315,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55c81,$55c90 - $55c81
+
 Route17Text5: ; 0x55c90
     db $08 ; asm
     ld hl, $5be3
@@ -22737,6 +28323,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55c9a,$55ca9 - $55c9a
+
 Route17Text6: ; 0x55ca9
     db $08 ; asm
     ld hl, $5bef
@@ -22744,6 +28331,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55cb3,$55cc2 - $55cb3
+
 Route17Text7: ; 0x55cc2
     db $08 ; asm
     ld hl, $5bfb
@@ -22751,6 +28339,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55ccc,$55cdb - $55ccc
+
 Route17Text8: ; 0x55cdb
     db $08 ; asm
     ld hl, $5c07
@@ -22758,6 +28347,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55ce5,$55cf4 - $55ce5
+
 Route17Text9: ; 0x55cf4
     db $08 ; asm
     ld hl, $5c13
@@ -22765,6 +28355,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$55cfe,$55d0d - $55cfe
+
 Route17Text10: ; 0x55d0d
     db $08 ; asm
     ld hl, $5c1f
@@ -22797,7 +28388,23 @@
     TX_FAR _Route17Text16
     db $50
 
-INCBIN "baserom.gbc",$55d44,$55dec - $55d44
+Route19Script: ; 0x55d44
+    call $3c3c
+    ld hl, $5d73
+    ld de, $5d57
+    ld a, [$d61d]
+    call $3160
+    ld [$d61d], a
+    ret
+; 0x55d57
+
+INCBIN "baserom.gbc",$55d57,$6
+
+Route19Texts: ; 0x55d5d
+    dw Route19Text1, Route19Text2, Route19Text3, Route19Text4, Route19Text5, Route19Text6, Route19Text7, Route19Text8, Route19Text9, Route19Text10, Route19Text11
+
+INCBIN "baserom.gbc",$55d73,$79
+
 Route19Text1: ; 0x55dec
     db $08 ; asm
     ld hl, $5d73
@@ -22864,7 +28471,23 @@
     TX_FAR _Route19Text11
     db $50
 
-INCBIN "baserom.gbc",$55eeb,$55f83 - $55eeb
+Route21Script: ; 0x55eeb
+    call $3c3c
+    ld hl, $5f16
+    ld de, $5efe
+    ld a, [$d61e]
+    call $3160
+    ld [$d61e], a
+    ret
+; 0x55efe
+
+INCBIN "baserom.gbc",$55efe,$6
+
+Route21Texts: ; 0x55f04
+    dw Route21Text1, Route21Text2, Route21Text3, Route21Text4, Route21Text5, Route21Text6, Route21Text7, Route21Text8, Route21Text9
+
+INCBIN "baserom.gbc",$55f16,$6d
+
 Route21Text1: ; 0x55f83
     db $08 ; asm
     ld hl, $5f16
@@ -22924,12 +28547,18 @@
 VermilionHouse2_h: ; 0x56064 to 0x56070 (12 bytes) (id=163)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $522f, $6073, $6070 ; blocks, texts, scripts
+    dw $522f, VermilionHouse2Texts, VermilionHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $60cf ; objects
+    dw VermilionHouse2Object ; objects
 
-INCBIN "baserom.gbc",$56070,$56075 - $56070
+VermilionHouse2Script: ; 0x56070
+    jp $3c3c
+; 0x56073
+
+VermilionHouse2Texts: ; 0x56073
+    dw VermilionHouse2Text1
+
 VermilionHouse2Text1: ; 0x56075
     db $08 ; asm
     ld a, [$d728]
@@ -22961,6 +28590,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$560b1,$1e
+
 VermilionHouse2Object: ; 0x560cf (size=26)
     db $a ; border tile
 
@@ -22980,13 +28610,18 @@
 CeladonMart2_h: ; 0x560e9 to 0x560f5 (12 bytes) (id=123)
     db $12 ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw CeladonMart2Blocks, $60f8, $60f5 ; blocks, texts, scripts
+    dw CeladonMart2Blocks, CeladonMart2Texts, CeladonMart2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6111 ; objects
+    dw CeladonMart2Object ; objects
 
-INCBIN "baserom.gbc",$560f5,$56102 - $560f5
+CeladonMart2Script: ; 0x560f5
+    jp $3c3c
+; 0x560f8
 
+CeladonMart2Texts: ; 0x560f8
+    dw CeladonMart2Text1, CeladonMart2Text2, CeladonMart2Text3, CeladonMart2Text4, CeladonMart2Text5
+
 CeladonMart2Text3: ; 0x56102
     TX_FAR _CeladonMart2Text3
     db $50
@@ -23027,12 +28662,18 @@
 FuchsiaHouse3_h: ; 0x56170 to 0x5617c (12 bytes) (id=164)
     db $0d ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw FuchsiaHouse3Blocks, $617f, $617c ; blocks, texts, scripts
+    dw FuchsiaHouse3Blocks, FuchsiaHouse3Texts, FuchsiaHouse3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6221 ; objects
+    dw FuchsiaHouse3Object ; objects
 
-INCBIN "baserom.gbc",$5617c,$56181 - $5617c
+FuchsiaHouse3Script: ; 0x5617c
+    jp $3c3c
+; 0x5617f
+
+FuchsiaHouse3Texts: ; 0x5617f
+    dw FuchsiaHouse3Text1
+
 FuchsiaHouse3Text1: ; 0x56181
     db $08 ; asm
     ld a, [$d728]
@@ -23064,6 +28705,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$561bd,$64
+
 FuchsiaHouse3Object: ; 0x56221 (size=34)
     db $c ; border tile
 
@@ -23085,12 +28727,18 @@
 DayCareM_h: ; 0x56243 to 0x5624f (12 bytes) (id=72)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw DayCareMBlocks, $6252, $624f ; blocks, texts, scripts
+    dw DayCareMBlocks, DayCareMTexts, DayCareMScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6459 ; objects
+    dw DayCareMObject ; objects
 
-INCBIN "baserom.gbc",$5624f,$56254 - $5624f
+DayCareMScript: ; 0x5624f
+    jp $3c3c
+; 0x56252
+
+DayCareMTexts: ; 0x56252
+    dw DayCareMText1
+
 DayCareMText1: ; 0x56254
     db $8
     call $36f4
@@ -23148,6 +28796,7 @@
     jp $6409
 ; 0x562e1
 INCBIN "baserom.gbc",$562e1,$178
+
 DayCareMObject: ; 0x56459 (size=26)
     db $a ; border tile
 
@@ -23167,12 +28816,18 @@
 Route12House_h: ; 0x56473 to 0x5647f (12 bytes) (id=189)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $522f, $6482, $647f ; blocks, texts, scripts
+    dw $522f, Route12HouseTexts, Route12HouseScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $64de ; objects
+    dw Route12HouseObject ; objects
 
-INCBIN "baserom.gbc",$5647f,$56484 - $5647f
+Route12HouseScript: ; 0x5647f
+    jp $3c3c
+; 0x56482
+
+Route12HouseTexts: ; 0x56482
+    dw Route12HouseText1
+
 Route12HouseText1: ; 0x56484
     db $08 ; asm
     ld a, [$d728]
@@ -23204,6 +28859,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$564c0,$1e
+
 Route12HouseObject: ; 0x564de (size=26)
     db $a ; border tile
 
@@ -23223,12 +28879,29 @@
 SilphCo8_h: ; 0x564f8 to 0x56504 (12 bytes) (id=213)
     db $16 ; tileset
     db $09, $0d ; dimensions (y, x)
-    dw SilphCo8Blocks, $657d, $6504 ; blocks, texts, scripts
+    dw SilphCo8Blocks, SilphCo8Texts, SilphCo8Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6613 ; objects
+    dw SilphCo8Object ; objects
 
-INCBIN "baserom.gbc",$56504,$565aa - $56504
+SilphCo8Script: ; 0x56504
+    call $651a
+    call $3c3c
+    ld hl, $6585
+    ld de, $6577
+    ld a, [$d649]
+    call $3160
+    ld [$d649], a
+    ret
+; 0x5651a
+
+INCBIN "baserom.gbc",$5651a,$63
+
+SilphCo8Texts: ; 0x5657d
+    dw SilphCo8Text1, SilphCo8Text2, SilphCo8Text3, SilphCo8Text4
+
+INCBIN "baserom.gbc",$56585,$25
+
 SilphCo8Text1: ; 0x565aa
     db $08 ; asm
     ld a, [$d838]
@@ -23241,6 +28914,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$565be,$565c8 - $565be
+
 SilphCo8Text2: ; 0x565c8
     db $08 ; asm
     ld hl, $6585
@@ -23260,6 +28934,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$565e6,$2d
+
 SilphCo8Object: ; 0x56613 (size=90)
     db $2e ; border tile
 
@@ -23295,10 +28970,11 @@
 INCBIN "baserom.gbc",$566e2,$191e
 
 SECTION "bank16",DATA,BANK[$16]
+
 Route6_h: ; 0x58000 to 0x58022 (34 bytes) (id=17)
     db $00 ; tileset
     db $12, $0a ; dimensions (y, x)
-    dw Route6Blocks, $50c9, $50b0 ; blocks, texts, scripts
+    dw Route6Blocks, $50c9, Route6Script ; blocks, texts, scripts
     db NORTH | SOUTH ; connections
 
     ; connections data
@@ -23317,7 +28993,7 @@
 
     ; end connection data
 
-    dw $4022 ; objects
+    dw Route6Object ; objects
 
 Route6Object: ; 0x58022 (size=87)
     db $f ; border tile
@@ -23351,7 +29027,7 @@
 Route8_h: ; 0x5812d to 0x5814f (34 bytes) (id=19)
     db $00 ; tileset
     db $09, $1e ; dimensions (y, x)
-    dw Route8Blocks, $51cf, $51b6 ; blocks, texts, scripts
+    dw Route8Blocks, $51cf, Route8Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -23370,7 +29046,7 @@
 
     ; end connection data
 
-    dw $414f ; objects
+    dw Route8Object ; objects
 
 Route8Object: ; 0x5814f (size=119)
     db $2c ; border tile
@@ -23409,7 +29085,7 @@
 Route10_h: ; 0x582d4 to 0x582f6 (34 bytes) (id=21)
     db $00 ; tileset
     db $24, $0a ; dimensions (y, x)
-    dw Route10Blocks, $534f, $5336 ; blocks, texts, scripts
+    dw Route10Blocks, Route10Texts, Route10Script ; blocks, texts, scripts
     db SOUTH | WEST ; connections
 
     ; connections data
@@ -23428,7 +29104,7 @@
 
     ; end connection data
 
-    dw $42f6 ; objects
+    dw Route10Object ; objects
 
 Route10Object: ; 0x582f6 (size=96)
     db $2c ; border tile
@@ -23465,7 +29141,7 @@
 Route11_h: ; 0x584be to 0x584e0 (34 bytes) (id=22)
     db $00 ; tileset
     db $09, $1e ; dimensions (y, x)
-    dw Route11Blocks, $5465, $544c ; blocks, texts, scripts
+    dw Route11Blocks, $5465, Route11Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -23484,7 +29160,7 @@
 
     ; end connection data
 
-    dw $44e0 ; objects
+    dw Route11Object ; objects
 
 Route11Object: ; 0x584e0 (size=127)
     db $f ; border tile
@@ -23524,7 +29200,7 @@
 Route12_h: ; 0x5866d to 0x5869a (45 bytes) (id=23)
     db $00 ; tileset
     db $36, $0a ; dimensions (y, x)
-    dw Route12Blocks, $5675, $55f3 ; blocks, texts, scripts
+    dw Route12Blocks, Route12Texts, Route12Script ; blocks, texts, scripts
     db NORTH | SOUTH | WEST ; connections
 
     ; connections data
@@ -23549,7 +29225,7 @@
 
     ; end connection data
 
-    dw $469a ; objects
+    dw Route12Object ; objects
 
 Route12Object: ; 0x5869a (size=118)
     db $43 ; border tile
@@ -23588,7 +29264,7 @@
 Route15_h: ; 0x5892c to 0x5894e (34 bytes) (id=26)
     db $00 ; tileset
     db $09, $1e ; dimensions (y, x)
-    dw Route15Blocks, $57c7, $57ae ; blocks, texts, scripts
+    dw Route15Blocks, Route15Texts, Route15Script ; blocks, texts, scripts
     db WEST | EAST ; connections
 
     ; connections data
@@ -23607,7 +29283,7 @@
 
     ; end connection data
 
-    dw $494e ; objects
+    dw Route15Object ; objects
 
 Route15Object: ; 0x5894e (size=126)
     db $43 ; border tile
@@ -23646,7 +29322,7 @@
 Route16_h: ; 0x58ada to 0x58afc (34 bytes) (id=27)
     db $00 ; tileset
     db $09, $14 ; dimensions (y, x)
-    dw Route16Blocks, $59b9, $5933 ; blocks, texts, scripts
+    dw Route16Blocks, Route16Texts, Route16Script ; blocks, texts, scripts
     db SOUTH | EAST ; connections
 
     ; connections data
@@ -23665,7 +29341,7 @@
 
     ; end connection data
 
-    dw $4afc ; objects
+    dw Route16Object ; objects
 
 Route16Object: ; 0x58afc (size=136)
     db $f ; border tile
@@ -23711,7 +29387,7 @@
 Route18_h: ; 0x58c38 to 0x58c5a (34 bytes) (id=29)
     db $00 ; tileset
     db $09, $19 ; dimensions (y, x)
-    dw Route18Blocks, $5ae0, $5ac7 ; blocks, texts, scripts
+    dw Route18Blocks, Route18Texts, Route18Script ; blocks, texts, scripts
     db NORTH | EAST ; connections
 
     ; connections data
@@ -23730,7 +29406,7 @@
 
     ; end connection data
 
-    dw $4c5a ; objects
+    dw Route18Object ; objects
 
 Route18Object: ; 0x58c5a (size=66)
     db $43 ; border tile
@@ -23759,7 +29435,20 @@
 Route18Blocks: ; 225
     INCBIN "maps/route18.blk"
 
-INCBIN "baserom.gbc",$58d7d,$59120 - $58d7d
+INCBIN "baserom.gbc",$58d7d,$590b0 - $58d7d
+
+Route6Script: ; 0x590b0
+    call $3c3c
+    ld hl, $50d7
+    ld de, $50c3
+    ld a, [$d600]
+    call $3160
+    ld [$d600], a
+    ret
+; 0x590c3
+
+INCBIN "baserom.gbc",$590c3,$5d
+
 Route6Text1: ; 0x59120
     db $8
     ld hl, $50d7
@@ -23766,7 +29455,9 @@
     call $31cc
     jp $24d7
 ; 0x5912a
+
 INCBIN "baserom.gbc",$5912a,$f
+
 Route6Text2: ; 0x59139
     db $08 ; asm
     ld hl, $50e3
@@ -23774,6 +29465,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59143,$5914d - $59143
+
 Route6Text3: ; 0x5914d
     db $08 ; asm
     ld hl, $50ef
@@ -23781,6 +29473,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59157,$59166 - $59157
+
 Route6Text4: ; 0x59166
     db $08 ; asm
     ld hl, $50fb
@@ -23788,6 +29481,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59170,$5917f - $59170
+
 Route6Text5: ; 0x5917f
     db $08 ; asm
     ld hl, $5107
@@ -23795,6 +29489,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59189,$59198 - $59189
+
 Route6Text6: ; 0x59198
     db $08 ; asm
     ld hl, $5113
@@ -23807,7 +29502,18 @@
     TX_FAR _Route6Text7
     db $50
 
-INCBIN "baserom.gbc",$591b6,$59269 - $591b6
+Route8Script: ; 0x591b6
+    call $3c3c
+    ld hl, $51e3
+    ld de, $51c9
+    ld a, [$d601]
+    call $3160
+    ld [$d601], a
+    ret
+; 0x591c9
+
+INCBIN "baserom.gbc",$591c9,$a0
+
 Route8Text2: ; 0x59269
     db $08 ; asm
     ld hl, $51ef
@@ -23815,6 +29521,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59273,$59282 - $59273
+
 Route8Text3: ; 0x59282
     db $08 ; asm
     ld hl, $51fb
@@ -23822,6 +29529,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5928c,$5929b - $5928c
+
 Route8Text4: ; 0x5929b
     db $08 ; asm
     ld hl, $5207
@@ -23829,6 +29537,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$592a5,$592b4 - $592a5
+
 Route8Text5: ; 0x592b4
     db $08 ; asm
     ld hl, $5213
@@ -23836,6 +29545,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$592be,$592cd - $592be
+
 Route8Text6: ; 0x592cd
     db $08 ; asm
     ld hl, $521f
@@ -23843,6 +29553,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$592d7,$592e6 - $592d7
+
 Route8Text7: ; 0x592e6
     db $08 ; asm
     ld hl, $522b
@@ -23850,6 +29561,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$592f0,$592ff - $592f0
+
 Route8Text8: ; 0x592ff
     db $08 ; asm
     ld hl, $5237
@@ -23857,6 +29569,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59309,$59318 - $59309
+
 Route8Text9: ; 0x59318
     db $08 ; asm
     ld hl, $5243
@@ -23869,7 +29582,23 @@
     TX_FAR _Route8Text10
     db $50
 
-INCBIN "baserom.gbc",$59336,$593ac - $59336
+Route10Script: ; 0x59336
+    call $3c3c
+    ld hl, $5363
+    ld de, $5349
+    ld a, [$d605]
+    call $3160
+    ld [$d605], a
+    ret
+; 0x59349
+
+INCBIN "baserom.gbc",$59349,$6
+
+Route10Texts: ; 0x5934f
+    dw Route10Text1, Route10Text2, Route10Text3, Route10Text4, Route10Text5, Route10Text6, Route10Text7, Route10Text8, Route10Text9, Route10Text10
+
+INCBIN "baserom.gbc",$59363,$49
+
 Route10Text1: ; 0x593ac
     db $08 ; asm
     ld hl, $5363
@@ -23877,6 +29606,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$593b6,$593c5 - $593b6
+
 Route10Text2: ; 0x593c5
     db $08 ; asm
     ld hl, $536f
@@ -23884,6 +29614,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$593cf,$593de - $593cf
+
 Route10Text3: ; 0x593de
     db $08 ; asm
     ld hl, $537b
@@ -23891,6 +29622,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$593e8,$593f7 - $593e8
+
 Route10Text4: ; 0x593f7
     db $08 ; asm
     ld hl, $5387
@@ -23898,6 +29630,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59401,$59410 - $59401
+
 Route10Text5: ; 0x59410
     db $08 ; asm
     ld hl, $5393
@@ -23905,6 +29638,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5941a,$59429 - $5941a
+
 Route10Text6: ; 0x59429
     db $08 ; asm
     ld hl, $539f
@@ -23922,7 +29656,18 @@
     TX_FAR _Route10Text10
     db $50
 
-INCBIN "baserom.gbc",$5944c,$5950d - $5944c
+Route11Script: ; 0x5944c
+    call $3c3c
+    ld hl, $547b
+    ld de, $545f
+    ld a, [$d623]
+    call $3160
+    ld [$d623], a
+    ret
+; 0x5945f
+
+INCBIN "baserom.gbc",$5945f,$ae
+
 Route11Text2: ; 0x5950d
     db $08 ; asm
     ld hl, $5487
@@ -23930,6 +29675,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59517,$59526 - $59517
+
 Route11Text3: ; 0x59526
     db $08 ; asm
     ld hl, $5493
@@ -23937,6 +29683,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59530,$5953f - $59530
+
 Route11Text4: ; 0x5953f
     db $08 ; asm
     ld hl, $549f
@@ -23944,6 +29691,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59549,$59558 - $59549
+
 Route11Text5: ; 0x59558
     db $08 ; asm
     ld hl, $54ab
@@ -23951,6 +29699,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59562,$59571 - $59562
+
 Route11Text6: ; 0x59571
     db $08 ; asm
     ld hl, $54b7
@@ -23958,6 +29707,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5957b,$5958a - $5957b
+
 Route11Text7: ; 0x5958a
     db $08 ; asm
     ld hl, $54c3
@@ -23965,6 +29715,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59594,$595a3 - $59594
+
 Route11Text8: ; 0x595a3
     db $08 ; asm
     ld hl, $54cf
@@ -23972,6 +29723,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$595ad,$595bc - $595ad
+
 Route11Text9: ; 0x595bc
     db $08 ; asm
     ld hl, $54db
@@ -23979,6 +29731,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$595c6,$595d5 - $595c6
+
 Route11Text10: ; 0x595d5
     db $08 ; asm
     ld hl, $54e7
@@ -23991,13 +29744,29 @@
     TX_FAR _Route11Text11
     db $50
 
-INCBIN "baserom.gbc",$595f3,$596e6 - $595f3
+Route12Script: ; 0x595f3
+    call $3c3c
+    ld hl, $5691
+    ld de, $5611
+    ld a, [$d624]
+    call $3160
+    ld [$d624], a
+    ret
+; 0x59606
 
+INCBIN "baserom.gbc",$59606,$6f
+
+Route12Texts: ; 0x59675
+    dw Route12Text1, Route12Text2, Route12Text3, Route12Text4, Route12Text5, Route12Text6, Route12Text7, Route12Text8, Route12Text9, Route12Text10, Route12Text11, Route12Text12, Route12Text13, Route12Text14
+
+INCBIN "baserom.gbc",$59691,$55
+
 Route12Text1: ; 0x596e6
     TX_FAR _Route12Text1
     db $50
 
 INCBIN "baserom.gbc",$596eb,$596f5 - $596eb
+
 Route12Text2: ; 0x596f5
     db $08 ; asm
     ld hl, $5691
@@ -24005,6 +29774,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$596ff,$5970e - $596ff
+
 Route12Text3: ; 0x5970e
     db $08 ; asm
     ld hl, $569d
@@ -24012,6 +29782,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59718,$59727 - $59718
+
 Route12Text4: ; 0x59727
     db $08 ; asm
     ld hl, $56a9
@@ -24019,6 +29790,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59731,$59740 - $59731
+
 Route12Text5: ; 0x59740
     db $08 ; asm
     ld hl, $56b5
@@ -24026,6 +29798,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5974a,$59759 - $5974a
+
 Route12Text6: ; 0x59759
     db $08 ; asm
     ld hl, $56c1
@@ -24033,6 +29806,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59763,$59772 - $59763
+
 Route12Text7: ; 0x59772
     db $08 ; asm
     ld hl, $56cd
@@ -24040,6 +29814,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5977c,$5978b - $5977c
+
 Route12Text8: ; 0x5978b
     db $08 ; asm
     ld hl, $56d9
@@ -24056,8 +29831,23 @@
     TX_FAR _Route12Text12
     db $50
 
-INCBIN "baserom.gbc",$597ae,$59858 - $597ae
+Route15Script: ; 0x597ae
+    call $3c3c
+    ld hl, $57df
+    ld de, $57c1
+    ld a, [$d625]
+    call $3160
+    ld [$d625], a
+    ret
+; 0x597c1
 
+INCBIN "baserom.gbc",$597c1,$6
+
+Route15Texts: ; 0x597c7
+    dw Route15Text1, Route15Text2, Route15Text3, Route15Text4, Route15Text5, Route15Text6, Route15Text7, Route15Text8, Route15Text9, Route15Text10, Route15Text11, Route15Text12
+
+INCBIN "baserom.gbc",$597df,$79
+
 Route15Text1: ; 0x59858
     db $8 ; asm
     ld hl, $57df
@@ -24117,7 +29907,23 @@
     TX_FAR _Route15Text12
     db $50
 
-INCBIN "baserom.gbc",$59933,$59a18 - $59933
+Route16Script: ; 0x59933
+    call $3c3c
+    ld hl, $59cf
+    ld de, $5951
+    ld a, [$d626]
+    call $3160
+    ld [$d626], a
+    ret
+; 0x59946
+
+INCBIN "baserom.gbc",$59946,$73
+
+Route16Texts: ; 0x599b9
+    dw Route16Text1, Route16Text2, Route16Text3, Route16Text4, Route16Text5, Route16Text6, Route16Text7, Route16Text8, Route16Text9, Route16Text10, Route16Text11
+
+INCBIN "baserom.gbc",$599cb + 4,$4d - 4
+
 Route16Text1: ; 0x59a18
     db $08 ; asm
     ld hl, $59cf
@@ -24125,6 +29931,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59a22,$59a31 - $59a22
+
 Route16Text2: ; 0x59a31
     db $08 ; asm
     ld hl, $59db
@@ -24132,6 +29939,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59a3b,$59a4a - $59a3b
+
 Route16Text3: ; 0x59a4a
     db $08 ; asm
     ld hl, $59e7
@@ -24139,6 +29947,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59a54,$59a63 - $59a54
+
 Route16Text4: ; 0x59a63
     db $08 ; asm
     ld hl, $59f3
@@ -24146,6 +29955,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59a6d,$59a7c - $59a6d
+
 Route16Text5: ; 0x59a7c
     db $08 ; asm
     ld hl, $59ff
@@ -24153,6 +29963,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59a86,$59a95 - $59a86
+
 Route16Text6: ; 0x59a95
     db $08 ; asm
     ld hl, $5a0b
@@ -24165,8 +29976,12 @@
     TX_FAR _Route16Text7
     db $50
 
-INCBIN "baserom.gbc",$59ab3,$59abd - $59ab3
+Route16Text10: ; 0x59ab3
+INCBIN "baserom.gbc",$59ab3,5
 
+Route16Text11: ; 0x59ab8
+INCBIN "baserom.gbc",$59ab8,5
+
 Route16Text8: ; 0x59abd
     TX_FAR _Route16Text8
     db $50
@@ -24175,7 +29990,23 @@
     TX_FAR _Route16Text9
     db $50
 
-INCBIN "baserom.gbc",$59ac7,$59b0f - $59ac7
+Route18Script: ; 0x59ac7
+    call $3c3c
+    ld hl, $5aea
+    ld de, $5ada
+    ld a, [$d627]
+    call $3160
+    ld [$d627], a
+    ret
+; 0x59ada
+
+INCBIN "baserom.gbc",$59ada,$6
+
+Route18Texts: ; 0x59ae0
+    dw Route18Text1, Route18Text2, Route18Text3, Route18Text4, Route18Text5
+
+INCBIN "baserom.gbc",$59aea,$25
+
 Route18Text1: ; 0x59b0f
     db $08 ; asm
     ld hl, $5aea
@@ -24183,6 +30014,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59b19,$59b28 - $59b19
+
 Route18Text2: ; 0x59b28
     db $08 ; asm
     ld hl, $5af6
@@ -24190,6 +30022,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59b32,$59b41 - $59b32
+
 Route18Text3: ; 0x59b41
     db $08 ; asm
     ld hl, $5b02
@@ -24209,12 +30042,20 @@
 FanClub_h: ; 0x59b64 to 0x59b70 (12 bytes) (id=90)
     db $10 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw FanClubBlocks, $5b84, $5b70 ; blocks, texts, scripts
+    dw FanClubBlocks, FanClubTexts, FanClubScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5c97 ; objects
+    dw FanClubObject ; objects
 
-INCBIN "baserom.gbc",$59b70,$59b94 - $59b70
+FanClubScript: ; 0x59b70
+    jp $3c3c
+; 0x59b73
+
+INCBIN "baserom.gbc",$59b73,$11
+
+FanClubTexts: ; 0x59b84
+    dw FanClubText1, FanClubText2, FanClubText3, FanClubText4, FanClubText5, FanClubText6, FanClubText7, FanClubText8
+
 FanClubText1: ; 0x59b94
     db $08 ; asm
     ld a, [$d771]
@@ -24234,6 +30075,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59bb7,$59bc1 - $59bb7
+
 FanClubText2: ; 0x59bc1
     db $08 ; asm
     ld a, [$d771]
@@ -24354,12 +30196,29 @@
 SilphCo2_h: ; 0x59ce5 to 0x59cf1 (12 bytes) (id=207)
     db $16 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SilphCo2Blocks, $5d86, $5cf1 ; blocks, texts, scripts
+    dw SilphCo2Blocks, SilphCo2Texts, SilphCo2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e66 ; objects
+    dw SilphCo2Object ; objects
 
-INCBIN "baserom.gbc",$59cf1,$59dc1 - $59cf1
+SilphCo2Script: ; 0x59cf1
+    call $5d07
+    call $3c3c
+    ld hl, $5d90
+    ld de, $5d80
+    ld a, [$d643]
+    call $3160
+    ld [$d643], a
+    ret
+; 0x59d07
+
+INCBIN "baserom.gbc",$59d07,$7f
+
+SilphCo2Texts: ; 0x59d86
+    dw SilphCo2Text1, SilphCo2Text2, SilphCo2Text3, SilphCo2Text4, SilphCo2Text5
+
+INCBIN "baserom.gbc",$59d90,$31
+
 SilphCo2Text1: ; 0x59dc1
     db $08 ; asm
     ld a, [$d826]
@@ -24382,6 +30241,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59ded,$59e02 - $59ded
+
 SilphCo2Text2: ; 0x59e02
     db $08 ; asm
     ld hl, $5d90
@@ -24407,6 +30267,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59e2a,$3c
+
 SilphCo2Object: ; 0x59e66 (size=98)
     db $2e ; border tile
 
@@ -24443,12 +30304,29 @@
 SilphCo3_h: ; 0x59f4f to 0x59f5b (12 bytes) (id=208)
     db $16 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SilphCo3Blocks, $5fc4, $5f5b ; blocks, texts, scripts
+    dw SilphCo3Blocks, SilphCo3Texts, SilphCo3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6035 ; objects
+    dw SilphCo3Object ; objects
 
-INCBIN "baserom.gbc",$59f5b,$59fe5 - $59f5b
+SilphCo3Script: ; 0x59f5b
+    call $5f71
+    call $3c3c
+    ld hl, $5fcc
+    ld de, $5fbe
+    ld a, [$d644]
+    call $3160
+    ld [$d644], a
+    ret
+; 0x59f71
+
+INCBIN "baserom.gbc",$59f71,$53
+
+SilphCo3Texts: ; 0x59fc4
+    dw SilphCo3Text1, SilphCo3Text2, SilphCo3Text3, SilphCo3Text4
+
+INCBIN "baserom.gbc",$59fcc,$19
+
 SilphCo3Text1: ; 0x59fe5
     db $08 ; asm
     ld a, [$d838]
@@ -24461,6 +30339,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$59ff9,$5a003 - $59ff9
+
 SilphCo3Text2: ; 0x5a003
     db $08 ; asm
     ld hl, $5fcc
@@ -24468,6 +30347,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5a00d,$5a01c - $5a00d
+
 SilphCo3Text3: ; 0x5a01c
     db $08 ; asm
     ld hl, $5fd8
@@ -24475,6 +30355,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5a026,$f
+
 SilphCo3Object: ; 0x5a035 (size=113)
     db $2e ; border tile
 
@@ -24516,12 +30397,29 @@
 SilphCo10_h: ; 0x5a12d to 0x5a139 (12 bytes) (id=234)
     db $16 ; tileset
     db $09, $08 ; dimensions (y, x)
-    dw SilphCo10Blocks, $6186, $6139 ; blocks, texts, scripts
+    dw SilphCo10Blocks, SilphCo10Texts, SilphCo10Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $61fb ; objects
+    dw SilphCo10Object ; objects
 
-INCBIN "baserom.gbc",$5a139,$5a1ab - $5a139
+SilphCo10Script: ; 0x5a139
+    call $614f
+    call $3c3c
+    ld hl, $6192
+    ld de, $6180
+    ld a, [$d658]
+    call $3160
+    ld [$d658], a
+    ret
+; 0x5a14f
+
+INCBIN "baserom.gbc",$5a14f,$37
+
+SilphCo10Texts: ; 0x5a186
+    dw SilphCo10Text1, SilphCo10Text2, SilphCo10Text3, SilphCo10Text4, SilphCo10Text5, SilphCo10Text6
+
+INCBIN "baserom.gbc",$5a192,$19
+
 SilphCo10Text1: ; 0x5a1ab
     db $08 ; asm
     ld hl, $6192
@@ -24546,6 +30444,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5a1d3,$28
+
 SilphCo10Object: ; 0x5a1fb (size=95)
     db $2e ; border tile
 
@@ -24581,12 +30480,29 @@
 Lance_h: ; 0x5a2a2 to 0x5a2ae (12 bytes) (id=113)
     db $05 ; tileset
     db $0d, $0d ; dimensions (y, x)
-    dw LanceBlocks, $6395, $62ae ; blocks, texts, scripts
+    dw LanceBlocks, LanceTexts, LanceScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $63c5 ; objects
+    dw LanceObject ; objects
 
-INCBIN "baserom.gbc",$5a2ae,$5a3a4 - $5a2ae
+LanceScript: ; 0x5a2ae
+    call $62c4
+    call $3c3c
+    ld hl, $6397
+    ld de, $62fa
+    ld a, [$d653]
+    call $3160
+    ld [$d653], a
+    ret
+; 0x5a2c4
+
+INCBIN "baserom.gbc",$5a2c4,$d1
+
+LanceTexts: ; 0x5a395
+    dw LanceText1
+
+INCBIN "baserom.gbc",$5a397,$d
+
 LanceText1: ; 0x5a3a4
     db $08 ; asm
     ld hl, $6397
@@ -24594,6 +30510,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5a3ae,$17
+
 LanceObject: ; 0x5a3c5 (size=36)
     db $3 ; border tile
 
@@ -24618,12 +30535,116 @@
 HallofFameRoom_h: ; 0x5a492 to 0x5a49e (12 bytes) (id=118)
     db $07 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw HallofFameRoomBlocks, $656a, $649e ; blocks, texts, scripts
+    dw HallofFameRoomBlocks, HallofFameRoomTexts, HallofFameRoomScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6571 ; objects
+    dw HallofFameRoomObject ; objects
 
-INCBIN "baserom.gbc",$5a49e,$5a56a - $5a49e
+HallofFameRoomScript: ; 0x5a49e
+    call $3c3c
+    ld hl, $64b2
+    ld a, [$d64b]
+    jp $3d97
+; 0x5a4aa
+
+INCBIN "baserom.gbc",$5a4aa,$5a4b2 - $5a4aa
+
+HallofFameRoomScripts: ; 0x5a4b2
+    dw HallofFameRoomScript0, HallofFameRoomScript1, HallofFameRoomScript2
+
+INCBIN "baserom.gbc",$5a4b8,$3
+
+HallofFameRoomScript2: ; 0x5a4bb
+    call Delay3
+    ld a, [$d358]
+    push af
+    xor a
+    ld [$cd6b], a
+    ld a, $55
+    call Predef
+    pop af
+    ld [$d358], a
+    ld hl, $d733
+    res 1, [hl]
+    inc hl
+    set 0, [hl]
+    xor a
+    ld hl, $d64d
+    ld [hli], a
+    ld [hli], a
+    ld [hl], a
+    ld [$d653], a
+    ld [$d64b], a
+    ld hl, $d863
+    ld [hli], a
+    ld [hli], a
+    ld [hli], a
+    ld [hli], a
+    ld [hl], a
+    xor a
+    ld [$d64b], a
+    ld a, $0
+    ld [$d719], a
+    ld b, $1c
+    ld hl, $7848
+    call Bankswitch
+    ld b, $5
+.asm_5a4ff
+    ld c, $78
+    call $3739
+    dec b
+    jr nz, .asm_5a4ff ; 0x5a505 $f8
+    call $3865
+    jp $1f54
+; 0x5a50d
+
+HallofFameRoomScript0: ; 0x5a50d
+    ld a, $ff
+    ld [$cd6b], a
+    ld hl, $ccd3
+    ld de, $6528
+    call $350c
+    dec a
+    ld [$cd38], a
+    call $3486
+    ld a, $1
+    ld [$d64b], a
+    ret
+; 0x5a528
+
+INCBIN "baserom.gbc",$5a528,$5a52b - $5a528
+
+HallofFameRoomScript1: ; 0x5a52b
+    ld a, [$cd38]
+    and a
+    ret nz
+    ld a, $1
+    ld [$d528], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $3541
+    ld a, $8
+    ld [$ff00+$8d], a
+    call $34a6
+    call Delay3
+    xor a
+    ld [$cd6b], a
+    inc a
+    ld [$d528], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $ff
+    ld [$cd6b], a
+    ld a, $8
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    ld a, $2
+    ld [$d64b], a
+    ret
+; 0x5a56a
+
 HallofFameRoomTexts: ; 0x5a56a
     dw HallofFameRoomText1
 
@@ -24678,7 +30699,7 @@
 RedsHouse2F_h:
 	db $04 ; tileset
 	db $04,$04 ; dimensions
-	dw RedsHouse2FBlocks,RedsHouse2FTexts,RedsHouse2FScript
+	dw RedsHouse2FBlocks, RedsHouse2FTexts, RedsHouse2FScript
 	db 0 ; no connections
 	dw RedsHouse2FObject
 
@@ -24724,13 +30745,49 @@
 MuseumF1_h: ; 0x5c0eb to 0x5c0f7 (12 bytes) (id=52)
     db $0a ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw MuseumF1Blocks, $412b, $40f7 ; blocks, texts, scripts
+    dw MuseumF1Blocks, MuseumF1Texts, MuseumF1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $42c1 ; objects
+    dw MuseumF1Object ; objects
 
-INCBIN "baserom.gbc",$5c0f7,$5c135 - $5c0f7
+MuseumF1Script: ; 0x5c0f7
+    ld a, $1
+    ld [$cf0c], a
+    xor a
+    ld [$cc3c], a
+    ld hl, $4109
+    ld a, [$d619]
+    jp $3d97
+; 0x5c109
 
+MuseumF1Scripts: ; 0x5c109
+    dw MuseumF1Script0, MuseumF1Script1
+
+MuseumF1Script0: ; 0x5c10d
+    ld a, [$d361]
+    cp $4
+    ret nz
+    ld a, [$d362]
+    cp $9
+    jr z, .asm_5c120 ; 0x5c118 $6
+    ld a, [$d362]
+    cp $a
+    ret nz
+.asm_5c120
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    jp $2920
+; 0x5c12a
+
+MuseumF1Script1: ; 0x5c12a
+    ret
+; 0x5c12b
+
+MuseumF1Texts: ; 0x5c12b
+    dw MuseumF1Text1, MuseumF1Text2, MuseumF1Text3, MuseumF1Text4, MuseumF1Text5
+
 MuseumF1Text1: ; 0x5c135
     db $8
     ld a, [$d361]
@@ -24874,6 +30931,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c28e,$5c2a3 - $5c28e
+
 MuseumF1Text4: ; 0x5c2a3
     db $08 ; asm
     ld hl, $42ad
@@ -24881,6 +30939,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c2ad,$5c2b2 - $5c2ad
+
 MuseumF1Text5: ; 0x5c2b2
     db $08 ; asm
     ld hl, $42bc
@@ -24888,6 +30947,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c2bc,$5
+
 MuseumF1Object: ; 0x5c2c1 (size=74)
     db $a ; border tile
 
@@ -24917,12 +30977,15 @@
 MuseumF2_h: ; 0x5c30b to 0x5c317 (12 bytes) (id=53)
     db $0a ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw MuseumF2Blocks, $431a, $4317 ; blocks, texts, scripts
+    dw MuseumF2Blocks, MuseumF2Texts, MuseumF2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $434b ; objects
+    dw MuseumF2Object ; objects
 
-INCBIN "baserom.gbc",$5c317,$5c31a - $5c317
+MuseumF2Script: ; 0x5c317
+    jp $3c3c
+; 0x5c31a
+
 MuseumF2Texts: ; 0x5c31a
     dw MuseumF2Text1, MuseumF2Text2, MuseumF2Text3, MuseumF2Text4, MuseumF2Text5, MuseumF2Text6, MuseumF2Text7
 
@@ -24977,12 +31040,32 @@
 PewterGym_h: ; 0x5c37b to 0x5c387 (12 bytes) (id=54)
     db $07 ; tileset
     db $07, $05 ; dimensions (y, x)
-    dw PewterGymBlocks, $4435, $4387 ; blocks, texts, scripts
+    dw PewterGymBlocks, PewterGymTexts, PewterGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $452e ; objects
+    dw PewterGymObject ; objects
 
-INCBIN "baserom.gbc",$5c387,$5c44e - $5c387
+PewterGymScript: ; 0x5c387
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    call nz, $43a4
+    call $3c3c
+    ld hl, $4441
+    ld de, $43ca
+    ld a, [$d5fc]
+    call $3160
+    ld [$d5fc], a
+    ret
+; 0x5c3a4
+
+INCBIN "baserom.gbc",$5c3a4,$91
+
+PewterGymTexts: ; 0x5c435
+    dw PewterGymText1, PewterGymText2, PewterGymText3, PewterGymText4, PewterGymText5, PewterGymText6
+
+INCBIN "baserom.gbc",$5c43b + 6,$13 - 6
+
 PewterGymText1: ; 0x5c44e
     db $08 ; asm
     ld a, [$d755]
@@ -25020,7 +31103,21 @@
 .asm_e0ffb ; 0x5c49b
     jp $24d7
 
-INCBIN "baserom.gbc",$5c49e,$5c4c6 - $5c49e
+INCBIN "baserom.gbc",$5c49e,$5c4a8 - $5c49e
+
+PewterGymText4: ; 0x5c4a8
+INCBIN "baserom.gbc",$5c4a8,5
+
+PewterGymText5: ; 0x5c4ad
+INCBIN "baserom.gbc",$5c4ad,6
+
+INCBIN "baserom.gbc",$5c4b3,$5c4b7 - $5c4b3
+
+PewterGymText6: ; 0x5c4b7
+INCBIN "baserom.gbc",$5c4b7,5
+
+INCBIN "baserom.gbc",$5c4bc,$5c4c6 - $5c4bc
+
 PewterGymText2: ; 0x5c4c6
     db $08 ; asm
     ld hl, $4441
@@ -25028,6 +31125,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c4d0,$5c4df - $5c4d0
+
 PewterGymText3: ; 0x5c4df
     db $08 ; asm
     ld a, [$d72a]
@@ -25056,6 +31154,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c515,$19
+
 PewterGymObject: ; 0x5c52e (size=42)
     db $3 ; border tile
 
@@ -25080,19 +31179,72 @@
 PewterPokecenter_h: ; 0x5c57b to 0x5c587 (12 bytes) (id=58)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw PewterPokecenterBlocks, $458d, $4587 ; blocks, texts, scripts
+    dw PewterPokecenterBlocks, $458d, PewterPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $460d ; objects
+    dw PewterPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$5c587,$5c596 - $5c587
+PewterPokecenterScript: ; 0x5c587
+    call $22fa
+    jp $3c3c
+; 0x5c58d
 
+INCBIN "baserom.gbc",$5c58d,$9
+
 PewterPokecenterText2:
 PewterPokecenterText1: ; 0x5c596
     TX_FAR _PewterPokecenterText1
     db $50
 
-INCBIN "baserom.gbc",$5c59b,$5c603 - $5c59b
+PewterPokecenterText3: ; 0x5c59b
+    db $8
+    ld a, $1
+    ld [$cc3c], a
+    ld hl, $4603
+    call PrintText
+    ld a, $ff
+    call $23b1
+    ld c, $20
+    call $3739
+    ld hl, $4608
+    ld de, $cd3f
+    ld bc, $0004
+    call CopyData
+    ld a, [$c132]
+    ld hl, $cd3f
+.asm_5c5c3
+    cp [hl]
+    inc hl
+    jr nz, .asm_5c5c3 ; 0x5c5c5 $fc
+    dec hl
+    push hl
+    ld c, $1f
+    ld a, $d0
+    call $23a1
+    pop hl
+.asm_5c5d1
+    ld a, [hl]
+    ld [$c132], a
+    push hl
+    ld hl, $cd3f
+    ld de, $cd3e
+    ld bc, $0004
+    call CopyData
+    ld a, [$cd3e]
+    ld [$cd42], a
+    pop hl
+    ld c, $18
+    call $3739
+    ld a, [$c026]
+    ld b, a
+    ld a, [$c027]
+    or b
+    jr nz, .asm_5c5d1 ; 0x5c5f6 $d9
+    ld c, $30
+    call $3739
+    call $2307
+    jp $24d7
+; 0x5c603
 
 PewterPokecenterText4: ; broken TX_FAR to _PewterPokecenterText4
     db $17, $44, $47, $26
@@ -25099,7 +31251,11 @@
     db $50
 
 ;XXX wtf?
-db $30, $38, $34, $3c, $f6
+db $30, $38, $34, $3c
+
+PewterPokecenterText5: ; XXX confirm text_id number
+    db $f6
+
 PewterPokecenterObject: ; 0x5c60d (size=44)
     db $0 ; border tile
 
@@ -25122,13 +31278,21 @@
 CeruleanPokecenter_h: ; 0x5c639 to 0x5c645 (12 bytes) (id=64)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw CeruleanPokecenterBlocks, $464b, $4645 ; blocks, texts, scripts
+    dw CeruleanPokecenterBlocks, $464b, CeruleanPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $465f ; objects
+    dw CeruleanPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$5c645,$5c655 - $5c645
+CeruleanPokecenterScript: ; 0x5c645
+    call $22fa
+    jp $3c3c
+; 0x5c64b
 
+INCBIN "baserom.gbc",$5c64b,$8
+
+CeruleanPokecenterText4:
+    db $f6, $ff
+
 CeruleanPokecenterText2:
 CeruleanPokecenterText1: ; 0x5c655
     TX_FAR _CeruleanPokecenterText1
@@ -25163,12 +31327,32 @@
 CeruleanGym_h: ; 0x5c6a7 to 0x5c6b3 (12 bytes) (id=65)
     db $07 ; tileset
     db $07, $05 ; dimensions (y, x)
-    dw CeruleanGymBlocks, $474a, $46b3 ; blocks, texts, scripts
+    dw CeruleanGymBlocks, CeruleanGymTexts, CeruleanGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4834 ; objects
+    dw CeruleanGymObject ; objects
 
-INCBIN "baserom.gbc",$5c6b3,$5c771 - $5c6b3
+CeruleanGymScript: ; 0x5c6b3
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    call nz, $46d0
+    call $3c3c
+    ld hl, $4758
+    ld de, $46f8
+    ld a, [$d5fd]
+    call $3160
+    ld [$d5fd], a
+    ret
+; 0x5c6d0
+
+INCBIN "baserom.gbc",$5c6d0,$7a
+
+CeruleanGymTexts: ; 0x5c74a
+    dw CeruleanGymText1, CeruleanGymText2, CeruleanGymText3, CeruleanGymText4, CeruleanGymText5, CeruleanGymText6, CeruleanGymText7
+
+INCBIN "baserom.gbc",$5c752 + 6,$1f - 6
+
 CeruleanGymText1: ; 0x5c771
     db $08 ; asm
     ld a, [$d75e]
@@ -25205,7 +31389,21 @@
 .asm_95b04 ; 0x5c7bb
     jp $24d7
 
-INCBIN "baserom.gbc",$5c7be,$5c7df - $5c7be
+INCBIN "baserom.gbc",$5c7be,$5c7c8 - $5c7be
+
+CeruleanGymText5: ; 0x5c7c8
+INCBIN "baserom.gbc",$5c7c8,5
+
+CeruleanGymText6: ; 0x5c7cd
+INCBIN "baserom.gbc",$5c7cd,4
+db $0b
+db $50
+
+CeruleanGymText7: ; 0x5c7d3
+INCBIN "baserom.gbc",$5c7d3,5
+
+INCBIN "baserom.gbc",$5c7d8,$5c7df - $5c7d8
+
 CeruleanGymText2: ; 0x5c7df
     db $08 ; asm
     ld hl, $4758
@@ -25213,6 +31411,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c7e9,$5c7f8 - $5c7e9
+
 CeruleanGymText3: ; 0x5c7f8
     db $08 ; asm
     ld hl, $4764
@@ -25220,6 +31419,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c802,$5c811 - $5c802
+
 CeruleanGymText4: ; 0x5c811
     db $08 ; asm
     ld a, [$d75e]
@@ -25235,6 +31435,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c82a,$a
+
 CeruleanGymObject: ; 0x5c834 (size=50)
     db $3 ; border tile
 
@@ -25260,13 +31461,18 @@
 CeruleanMart_h: ; 0x5c889 to 0x5c895 (12 bytes) (id=67)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4000, $4898, $4895 ; blocks, texts, scripts
+    dw $4000, CeruleanMartTexts, CeruleanMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $48a8 ; objects
+    dw CeruleanMartObject ; objects
 
-INCBIN "baserom.gbc",$5c895,$5c89e - $5c895
+CeruleanMartScript: ; 0x5c895
+    jp $3c3c
+; 0x5c898
 
+CeruleanMartTexts: ; 0x5c898
+    dw CeruleanMartText1, CeruleanMartText2, CeruleanMartText3
+
 CeruleanMartText2: ; 0x5c89e
     TX_FAR _CeruleanMartText2
     db $50
@@ -25296,13 +31502,21 @@
 LavenderPokecenter_h: ; 0x5c8ce to 0x5c8da (12 bytes) (id=141)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $4064, $48e0, $48da ; blocks, texts, scripts
+    dw $4064, $48e0, LavenderPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $48f4 ; objects
+    dw LavenderPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$5c8da,$5c8ea - $5c8da
+LavenderPokecenterScript: ; 0x5c8da
+    call $22fa
+    jp $3c3c
+; 0x5c8e0
 
+INCBIN "baserom.gbc",$5c8e0,$8
+
+LavenderPokecenterText4:
+    db $f6, $ff
+
 LavenderPokecenterText2:
 LavenderPokecenterText1: ; 0x5c8ea
     TX_FAR _LavenderPokecenterText1
@@ -25313,7 +31527,6 @@
     TX_FAR _LavenderPokecenterText3
     db $50
 
-
 LavenderPokecenterObject: ; 0x5c8f4 (size=44)
     db $0 ; border tile
 
@@ -25336,13 +31549,18 @@
 LavenderMart_h: ; 0x5c920 to 0x5c92c (12 bytes) (id=150)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4000, $492f, $492c ; blocks, texts, scripts
+    dw $4000, $492f, LavenderMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $495d ; objects
+    dw LavenderMartObject ; objects
 
-INCBIN "baserom.gbc",$5c92c,$5c935 - $5c92c
+LavenderMartScript: ; 0x5c92c
+    jp $3c3c
+; 0x5c92f
 
+LavenderMartTexts: ; 0x5c92f
+    dw LavenderMartText1, LavenderMartText2, LavenderMartText3
+
 LavenderMartText2: ; 0x5c935
     TX_FAR _LavenderMartText2
     db $50
@@ -25362,6 +31580,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5c953,$a
+
 LavenderMartObject: ; 0x5c95d (size=38)
     db $0 ; border tile
 
@@ -25383,13 +31602,18 @@
 VermilionPokecenter_h: ; 0x5c983 to 0x5c98f (12 bytes) (id=89)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $4064, $4995, $498f ; blocks, texts, scripts
+    dw $4064, $4995, VermilionPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $49a9 ; objects
+    dw VermilionPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$5c98f,$5c99e - $5c98f
+VermilionPokecenterScript: ; 0x5c98f
+    call $22fa
+    jp $3c3c
+; 0x5c995
 
+INCBIN "baserom.gbc",$5c995,$9
+
 VermilionPokecenterText2:
 VermilionPokecenterText1: ; 0x5c99e
     TX_FAR _VermilionPokecenterText1
@@ -25399,7 +31623,8 @@
     TX_FAR _VermilionPokecenterText3
     db $50
 
-INCBIN "baserom.gbc",$5c9a8,$1
+VermilionPokecenterText4: ; 0x5c9a8
+    db $f6
 
 VermilionPokecenterObject: ; 0x5c9a9 (size=44)
     db $0 ; border tile
@@ -25423,24 +31648,26 @@
 VermilionMart_h: ; 0x5c9d5 to 0x5c9e1 (12 bytes) (id=91)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw VermilionMartBlocks, $49e4, $49e1 ; blocks, texts, scripts
+    dw VermilionMartBlocks, VermilionMartTexts, VermilionMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $49f4 ; objects
+    dw VermilionMartObject ; objects
 
-INCBIN "baserom.gbc",$5c9e1,$5c9ea - $5c9e1
+VermilionMartScript: ; 0x5c9e1
+    jp $3c3c
+; 0x5c9e4
 
+VermilionMartTexts: ; 0x5c9e4
+    dw VermilionMartText1, VermilionMartText2, VermilionMartText3
+
 VermilionMartText2: ; 0x5c9ea
     TX_FAR _VermilionMartText2
     db $50
 
-
 VermilionMartText3: ; 0x5c9ef
     TX_FAR _VermilionMartText3
     db $50
 
-INCBIN "baserom.gbc",$5c9f4,$0
-
 VermilionMartObject: ; 0x5c9f4 (size=38)
     db $0 ; border tile
 
@@ -25462,12 +31689,37 @@
 VermilionGym_h: ; 0x5ca1a to 0x5ca26 (12 bytes) (id=92)
     db $07 ; tileset
     db $09, $05 ; dimensions (y, x)
-    dw VermilionGymBlocks, $4ae8, $4a26 ; blocks, texts, scripts
+    dw VermilionGymBlocks, VermilionGymTexts, VermilionGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4bfe ; objects
+    dw VermilionGymObject ; objects
 
-INCBIN "baserom.gbc",$5ca26,$5cb1d - $5ca26
+VermilionGymScript: ; 0x5ca26
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    push hl
+    call nz, $4a4c
+    pop hl
+    bit 6, [hl]
+    res 6, [hl]
+    call nz, $4a6d
+    call $3c3c
+    ld hl, $4af8
+    ld de, $4a95
+    ld a, [$d5fe]
+    call $3160
+    ld [$d5fe], a
+    ret
+; 0x5ca4c
+
+INCBIN "baserom.gbc",$5ca4c,$9c
+
+VermilionGymTexts: ; 0x5cae8
+    dw VermilionGymText1, VermilionGymText2, VermilionGymText3, VermilionGymText4, VermilionGymText5, VermilionGymText6, VermilionGymText7, VermilionGymText8
+
+INCBIN "baserom.gbc",$5caf8,37
+
 VermilionGymText1: ; 0x5cb1d
     db $08 ; asm
     ld a, [$d773]
@@ -25505,7 +31757,21 @@
 .asm_23621 ; 0x5cb6a
     jp $24d7
 
-INCBIN "baserom.gbc",$5cb6d,$5cb90 - $5cb6d
+INCBIN "baserom.gbc",$5cb6d,$5cb77 - $5cb6d
+
+VermilionGymText6: ; 0x5cb77
+INCBIN "baserom.gbc",$5cb77,5
+
+VermilionGymText7: ; 0x5cb7c
+INCBIN "baserom.gbc",$5cb7c,5
+
+INCBIN "baserom.gbc",$5cb81,5
+
+VermilionGymText8: ; 0x5cb86
+INCBIN "baserom.gbc",$5cb86,5
+
+INCBIN "baserom.gbc",$5cb8b,5
+
 VermilionGymText2: ; 0x5cb90
     db $08 ; asm
     ld hl, $4af8
@@ -25513,6 +31779,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cb9a,$5cba9 - $5cb9a
+
 VermilionGymText3: ; 0x5cba9
     db $08 ; asm
     ld hl, $4b04
@@ -25520,6 +31787,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cbb3,$5cbc2 - $5cbb3
+
 VermilionGymText4: ; 0x5cbc2
     db $08 ; asm
     ld hl, $4b10
@@ -25527,6 +31795,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cbcc,$5cbdb - $5cbcc
+
 VermilionGymText5: ; 0x5cbdb
     db $08 ; asm
     ld a, [$d72a]
@@ -25542,6 +31811,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cbf4,$a
+
 VermilionGymObject: ; 0x5cbfe (size=58)
     db $3 ; border tile
 
@@ -25568,12 +31838,18 @@
 CopycatsHouseF2_h: ; 0x5cc65 to 0x5cc71 (12 bytes) (id=176)
     db $04 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4010, $4c74, $4c71 ; blocks, texts, scripts
+    dw $4010, CopycatsHouseF2Texts, CopycatsHouseF2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4d21 ; objects
+    dw CopycatsHouseF2Object ; objects
 
-INCBIN "baserom.gbc",$5cc71,$5cc82 - $5cc71
+CopycatsHouseF2Script: ; 0x5cc71
+    jp $3c3c
+; 0x5cc74
+
+CopycatsHouseF2Texts: ; 0x5cc74
+    dw CopycatsHouseF2Text1, CopycatsHouseF2Text2, CopycatsHouseF2Text3, CopycatsHouseF2Text4, CopycatsHouseF2Text5, CopycatsHouseF2Text6, CopycatsHouseF2Text7
+
 CopycatsHouseF2Text1: ; 0x5cc82
     db $08 ; asm
     ld a, [$d7af]
@@ -25639,6 +31915,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cd17,$a
+
 CopycatsHouseF2Object: ; 0x5cd21 (size=48)
     db $a ; border tile
 
@@ -25662,12 +31939,28 @@
 FightingDojo_h: ; 0x5cd51 to 0x5cd5d (12 bytes) (id=177)
     db $05 ; tileset
     db $06, $05 ; dimensions (y, x)
-    dw FightingDojoBlocks, $4e03, $4d5d ; blocks, texts, scripts
+    dw FightingDojoBlocks, FightingDojoTexts, FightingDojoScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4f9b ; objects
+    dw FightingDojoObject ; objects
 
-INCBIN "baserom.gbc",$5cd5d,$5ce44 - $5cd5d
+FightingDojoScript: ; 0x5cd5d
+    call $3c3c
+    ld hl, $4e13
+    ld de, $4d7b
+    ld a, [$d642]
+    call $3160
+    ld [$d642], a
+    ret
+; 0x5cd70
+
+INCBIN "baserom.gbc",$5cd70,$93
+
+FightingDojoTexts: ; 0x5ce03
+    dw FightingDojoText1, FightingDojoText2, FightingDojoText3, FightingDojoText4, FightingDojoText5, FightingDojoText6, FightingDojoText7, FightingDojoText8
+
+INCBIN "baserom.gbc",$5ce13,$31
+
 FightingDojoText1: ; 0x5ce44
     db $08 ; asm
     ld a, [$d7b1]
@@ -25699,7 +31992,13 @@
 .asm_9dba4 ; 0x5ce8b
     jp $24d7
 
-INCBIN "baserom.gbc",$5ce8e,$5cea2 - $5ce8e
+INCBIN "baserom.gbc",$5ce8e,$5ce98 - $5ce8e
+
+FightingDojoText8: ; 0x5ce98
+INCBIN "baserom.gbc",$5ce98,5
+
+INCBIN "baserom.gbc",$5ce9d,5
+
 FightingDojoText2: ; 0x5cea2
     db $08 ; asm
     ld hl, $4e13
@@ -25707,6 +32006,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5ceac,$5cebb - $5ceac
+
 FightingDojoText3: ; 0x5cebb
     db $08 ; asm
     ld hl, $4e1f
@@ -25714,6 +32014,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cec5,$5ced4 - $5cec5
+
 FightingDojoText4: ; 0x5ced4
     db $08 ; asm
     ld hl, $4e2b
@@ -25721,6 +32022,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cede,$5ceed - $5cede
+
 FightingDojoText5: ; 0x5ceed
     db $08 ; asm
     ld hl, $4e37
@@ -25728,6 +32030,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cef7,$5cf06 - $5cef7
+
 FightingDojoText6: ; 0x5cf06
     db $08 ; asm
     ld a, [$d7b1]
@@ -25761,6 +32064,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cf49,$5cf4e - $5cf49
+
 FightingDojoText7: ; 0x5cf4e
     db $08 ; asm
     ld a, [$d7b1]
@@ -25794,6 +32098,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5cf91,$a
+
 FightingDojoObject: ; 0x5cf9b (size=72)
     db $3 ; border tile
 
@@ -25822,12 +32127,32 @@
 SaffronGym_h: ; 0x5d001 to 0x5d00d (12 bytes) (id=178)
     db $16 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw SaffronGymBlocks, $50ab, $500d ; blocks, texts, scripts
+    dw SaffronGymBlocks, SaffronGymTexts, SaffronGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5259 ; objects
+    dw SaffronGymObject ; objects
 
-INCBIN "baserom.gbc",$5d00d,$5d118 - $5d00d
+SaffronGymScript: ; 0x5d00d
+    ld hl, $d126
+    bit 6, [hl]
+    res 6, [hl]
+    call nz, $502a
+    call $3c3c
+    ld hl, $50c3
+    ld de, $5053
+    ld a, [$d65c]
+    call $3160
+    ld [$d65c], a
+    ret
+; 0x5d02a
+
+INCBIN "baserom.gbc",$5d02a,$81
+
+SaffronGymTexts: ; 0x5d0ab
+    dw SaffronGymText1, SaffronGymText2, SaffronGymText3, SaffronGymText4, SaffronGymText5, SaffronGymText6, SaffronGymText7, SaffronGymText8, SaffronGymText9, SaffronGymText10, SaffronGymText11, SaffronGymText12
+
+INCBIN "baserom.gbc",$5d0bd + 6,$5b - 6
+
 SaffronGymText1: ; 0x5d118
     db $08 ; asm
     ld a, [$d7b3]
@@ -25862,7 +32187,19 @@
 .asm_34c2c ; 0x5d15f
     jp $24d7
 
-INCBIN "baserom.gbc",$5d162,$5d187 - $5d162
+INCBIN "baserom.gbc",$5d162,$5d173 - $5d162
+
+SaffronGymText10: ; 0x5d173
+INCBIN "baserom.gbc",$5d173,5
+
+SaffronGymText11: ; 0x5d178
+INCBIN "baserom.gbc",$5d178,5
+
+INCBIN "baserom.gbc",$5d17d,$5d182 - $5d17d
+
+SaffronGymText12: ; 0x5d182
+INCBIN "baserom.gbc",$5d182,5
+
 SaffronGymText2: ; 0x5d187
     db $08 ; asm
     ld hl, $50c3
@@ -25920,6 +32257,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5d1e6,$73
+
 SaffronGymObject: ; 0x5d259 (size=330)
     db $2e ; border tile
 
@@ -26010,13 +32348,18 @@
 SaffronMart_h: ; 0x5d3fd to 0x5d409 (12 bytes) (id=180)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4000, $540c, $5409 ; blocks, texts, scripts
+    dw $4000, SaffronMartTexts, SaffronMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $541c ; objects
+    dw SaffronMartObject ; objects
 
-INCBIN "baserom.gbc",$5d409,$5d412 - $5d409
+SaffronMartScript: ; 0x5d409
+    jp $3c3c
+; 0x5d40c
 
+SaffronMartTexts: ; 0x5d40c
+    dw SaffronMartText1, SaffronMartText2, SaffronMartText3
+
 SaffronMartText2: ; 0x5d412
     TX_FAR _SaffronMartText2
     db $50
@@ -26046,12 +32389,26 @@
 SilphCo1_h: ; 0x5d442 to 0x5d44e (12 bytes) (id=181)
     db $16 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw SilphCo1Blocks, $5469, $544e ; blocks, texts, scripts
+    dw SilphCo1Blocks, SilphCo1Texts, SilphCo1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5470 ; objects
+    dw SilphCo1Object ; objects
 
-INCBIN "baserom.gbc",$5d44e,$5d469 - $5d44e
+SilphCo1Script: ; 0x5d44e
+    call $3c3c
+    ld a, [$d838]
+    bit 7, a
+    ret z
+    ld hl, $d7b9
+    bit 7, [hl]
+    set 7, [hl]
+    ret nz
+    ld a, $4c
+    ld [$cc4d], a
+    ld a, $15
+    jp $3e6d
+; 0x5d469
+
 SilphCo1Texts: ; 0x5d469
     dw SilphCo1Text1
 
@@ -26087,13 +32444,18 @@
 SaffronPokecenter_h: ; 0x5d529 to 0x5d535 (12 bytes) (id=182)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $4064, $553b, $5535 ; blocks, texts, scripts
+    dw $4064, $553b, SaffronPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $554f ; objects
+    dw SaffronPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$5d535,$5d544 - $5d535
+SaffronPokecenterScript: ; 0x5d535
+    call $22fa
+    jp $3c3c
+; 0x5d53b
 
+INCBIN "baserom.gbc",$5d53b,$9
+
 SaffronPokecenterText2: ; maybe
 SaffronPokecenterText1: ; 0x5d543
     TX_FAR _SaffronPokecenterText1
@@ -26104,7 +32466,8 @@
     TX_FAR _SaffronPokecenterText3
     db $50
 
-INCBIN "baserom.gbc",$5d54e,$1
+SaffronPokecenterText4:
+    db $f6
 
 SaffronPokecenterObject: ; 0x5d54f (size=44)
     db $0 ; border tile
@@ -26128,12 +32491,15 @@
 ViridianForestexit_h: ; 0x5d57b to 0x5d587 (12 bytes) (id=47)
     db $09 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw ViridianForestexitBlocks, $558a, $5587 ; blocks, texts, scripts
+    dw ViridianForestexitBlocks, ViridianForestexitTexts, ViridianForestexitScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5598 ; objects
+    dw ViridianForestexitObject ; objects
 
-INCBIN "baserom.gbc",$5d587,$5d58a - $5d587
+ViridianForestexitScript: ; 0x5d587
+    jp $3c3c
+; 0x5d58a
+
 ViridianForestexitTexts: ; 0x5d58a
     dw ViridianForestexitText1, ViridianForestexitText2
 
@@ -26169,12 +32535,18 @@
 Route2Gate_h: ; 0x5d5c8 to 0x5d5d4 (12 bytes) (id=49)
     db $0c ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw $4090, $55d7, $55d4 ; blocks, texts, scripts
+    dw $4090, Route2GateTexts, Route2GateScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5620 ; objects
+    dw Route2GateObject ; objects
 
-INCBIN "baserom.gbc",$5d5d4,$5d5db - $5d5d4
+Route2GateScript: ; 0x5d5d4
+    jp $3c3c
+; 0x5d5d7
+
+Route2GateTexts: ; 0x5d5d7
+    dw Route2GateText1, Route2GateText2
+
 Route2GateText1: ; 0x5d5db
     db $08 ; asm
     ld a, [$d7c2]
@@ -26233,12 +32605,15 @@
 ViridianForestEntrance_h: ; 0x5d650 to 0x5d65c (12 bytes) (id=50)
     db $09 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw $4090, $565f, $565c ; blocks, texts, scripts
+    dw $4090, ViridianForestEntranceTexts, ViridianForestEntranceScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $566d ; objects
+    dw ViridianForestEntranceObject ; objects
 
-INCBIN "baserom.gbc",$5d65c,$5d65f - $5d65c
+ViridianForestEntranceScript: ; 0x5d65c
+    jp $3c3c
+; 0x5d65f
+
 ViridianForestEntranceTexts: ; 0x5d65f
     dw ViridianForestEntranceText1, ViridianForestEntranceText2
 
@@ -26274,12 +32649,22 @@
 UndergroundTunnelEntranceRoute5_h: ; 0x5d69d to 0x5d6a9 (12 bytes) (id=71)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw UndergroundTunnelEntranceRoute5Blocks, $56b0, $56a9 ; blocks, texts, scripts
+    dw UndergroundTunnelEntranceRoute5Blocks, UndergroundTunnelEntranceRoute5Texts, UndergroundTunnelEntranceRoute5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $56c1 ; objects
+    dw UndergroundTunnelEntranceRoute5Object ; objects
 
-INCBIN "baserom.gbc",$5d6a9,$5d6b2 - $5d6a9
+UndergroundTunnelEntranceRoute5Script: ; 0x5d6a9
+    ld a, $10
+    ld [$d365], a
+    ret
+; 0x5d6af
+
+INCBIN "baserom.gbc",$5d6af,$1
+
+UndergroundTunnelEntranceRoute5Texts: ; 0x5d6b0
+    dw UndergroundTunnelEntranceRoute5Text1
+
 UndergroundTunnelEntranceRoute5Text1: ; 0x5d6b2
     db $08 ; asm
     ld a, $9
@@ -26310,12 +32695,17 @@
 UndergroundTunnelEntranceRoute6_h: ; 0x5d6e3 to 0x5d6ef (12 bytes) (id=74)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4080, $56f7, $56ef ; blocks, texts, scripts
+    dw $4080, UndergroundTunnelEntranceRoute6Texts, UndergroundTunnelEntranceRoute6Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $56fe ; objects
+    dw UndergroundTunnelEntranceRoute6Object ; objects
 
-INCBIN "baserom.gbc",$5d6ef,$5d6f7 - $5d6ef
+UndergroundTunnelEntranceRoute6Script: ; 0x5d6ef
+    ld a, $11
+    ld [$d365], a
+    jp $3c3c
+; 0x5d6f7
+
 UndergroundTunnelEntranceRoute6Texts: ; 0x5d6f7
     dw UndergroundTunnelEntranceRoute6Text1
 
@@ -26346,12 +32736,17 @@
 UndergroundPathEntranceRoute7_h: ; 0x5d720 to 0x5d72c (12 bytes) (id=77)
     db $0c ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4080, $5734, $572c ; blocks, texts, scripts
+    dw $4080, UndergroundPathEntranceRoute7Texts, UndergroundPathEntranceRoute7Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $573b ; objects
+    dw UndergroundPathEntranceRoute7Object ; objects
 
-INCBIN "baserom.gbc",$5d72c,$5d734 - $5d72c
+UndergroundPathEntranceRoute7Script: ; 0x5d72c
+    ld a, $12
+    ld [$d365], a
+    jp $3c3c
+; 0x5d734
+
 UndergroundPathEntranceRoute7Texts: ; 0x5d734
     dw UndergroundPathEntranceRoute7Text1
 
@@ -26383,12 +32778,29 @@
 SilphCo9_h: ; 0x5d7af to 0x5d7bb (12 bytes) (id=233)
     db $16 ; tileset
     db $09, $0d ; dimensions (y, x)
-    dw SilphCo9Blocks, $588b, $57bb ; blocks, texts, scripts
+    dw SilphCo9Blocks, SilphCo9Texts, SilphCo9Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $593f ; objects
+    dw SilphCo9Object ; objects
 
-INCBIN "baserom.gbc",$5d7bb,$5d8b8 - $5d7bb
+SilphCo9Script: ; 0x5d7bb
+    call $57d1
+    call $3c3c
+    ld hl, $5893
+    ld de, $5885
+    ld a, [$d64a]
+    call $3160
+    ld [$d64a], a
+    ret
+; 0x5d7d1
+
+INCBIN "baserom.gbc",$5d7d1,$ba
+
+SilphCo9Texts: ; 0x5d88b
+    dw SilphCo9Text1, SilphCo9Text2, SilphCo9Text3, SilphCo9Text4
+
+INCBIN "baserom.gbc",$5d893,$25
+
 SilphCo9Text1: ; 0x5d8b8
     db $08 ; asm
     ld a, [$d838]
@@ -26411,6 +32823,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5d8e5,$5d8f4 - $5d8e5
+
 SilphCo9Text2: ; 0x5d8f4
     db $08 ; asm
     ld hl, $5893
@@ -26430,6 +32843,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5d912,$2d
+
 SilphCo9Object: ; 0x5d93f (size=74)
     db $2e ; border tile
 
@@ -26461,12 +32875,32 @@
 VictoryRoad1_h: ; 0x5d9fe to 0x5da0a (12 bytes) (id=108)
     db $11 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw VictoryRoad1Blocks, $5a5f, $5a0a ; blocks, texts, scripts
+    dw VictoryRoad1Blocks, VictoryRoad1Texts, VictoryRoad1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5ab8 ; objects
+    dw VictoryRoad1Object ; objects
 
-INCBIN "baserom.gbc",$5da0a,$5da86 - $5da0a
+VictoryRoad1Script: ; 0x5da0a
+    ld hl, $d126
+    bit 5, [hl]
+    res 5, [hl]
+    call nz, $5a27
+    call $3c3c
+    ld hl, $5a6d
+    ld de, $5a3a
+    ld a, [$d651]
+    call $3160
+    ld [$d651], a
+    ret
+; 0x5da27
+
+INCBIN "baserom.gbc",$5da27,$38
+
+VictoryRoad1Texts: ; 0x5da5f
+    dw VictoryRoad1Text1, VictoryRoad1Text2, VictoryRoad1Text3, VictoryRoad1Text4, VictoryRoad1Text5, VictoryRoad1Text6, VictoryRoad1Text7
+
+INCBIN "baserom.gbc",$5da6d,$19
+
 VictoryRoad1Text1: ; 0x5da86
     db $08 ; asm
     ld hl, $5a6d
@@ -26480,6 +32914,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$5da9a,$1e
+
 VictoryRoad1Object: ; 0x5dab8 (size=76)
     db $7d ; border tile
 
@@ -26524,12 +32959,15 @@
 PokemonTower1_h: ; 0x60420 to 0x6042c (12 bytes) (id=142)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower1Blocks, $442f, $442c ; blocks, texts, scripts
+    dw PokemonTower1Blocks, PokemonTower1Texts, PokemonTower1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4452 ; objects
+    dw PokemonTower1Object ; objects
 
-INCBIN "baserom.gbc",$6042c,$6042f - $6042c
+PokemonTower1Script: ; 0x6042c
+    jp $3c3c
+; 0x6042f
+
 PokemonTower1Texts: ; 0x6042f
     dw PokemonTower1Text1, PokemonTower1Text2, PokemonTower1Text3, PokemonTower1Text4, PokemonTower1Text5
 
@@ -26581,12 +33019,119 @@
 PokemonTower2_h: ; 0x604e6 to 0x604f2 (12 bytes) (id=143)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower2Blocks, $45db, $44f2 ; blocks, texts, scripts
+    dw PokemonTower2Blocks, PokemonTower2Texts, PokemonTower2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4646 ; objects
+    dw PokemonTower2Object ; objects
 
-INCBIN "baserom.gbc",$604f2,$605df - $604f2
+PokemonTower2Script: ; 0x604f2
+    call $3c3c
+    ld hl, $4509
+    ld a, [$d62b]
+    jp $3d97
+; 0x604fe
+
+INCBIN "baserom.gbc",$604fe,$60509 - $604fe
+
+PokemonTower2Scripts: ; 0x60509
+    dw PokemonTower2Script0, PokemonTower2Script1, PokemonTower2Script2
+
+PokemonTower2Script0: ; 0x6050f
+    ld a, [$d764]
+    bit 7, a
+    ret nz
+    ld hl, $455e
+    call $34bf
+    ret nc
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+    ld c, $2
+    ld a, $de
+    call $23a1
+    ld hl, $d764
+    res 6, [hl]
+    ld a, [$cd3d]
+    cp $1
+    ld a, $8
+    ld b, $0
+    jr nz, .asm_60544 ; 0x60539 $9
+    ld hl, $d764
+    set 6, [hl]
+    ld a, $2
+    ld b, $c
+.asm_60544
+    ld [$d528], a
+    ld a, $1
+    ld [$ff00+$8c], a
+    ld a, b
+    ld [$ff00+$8d], a
+    call $34a6
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    xor a
+    ld [$ff00+$b4], a
+    ld [$ff00+$b3], a
+    ret
+; 0x6055e
+
+INCBIN "baserom.gbc",$6055e,$60563 - $6055e
+
+PokemonTower2Script1: ; 0x60563
+    ld a, [$d057]
+    cp $ff
+    jp z, $44fe
+    ld a, $f0
+    ld [$cd6b], a
+    ld hl, $d764
+    set 7, [hl]
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $2920
+    ld de, $45b2
+    ld a, [$d764]
+    bit 6, a
+    jr nz, .asm_60589 ; 0x60584 $3
+    ld de, $45a9
+.asm_60589
+    ld a, $1
+    ld [$ff00+$8c], a
+    call $363a
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+    ld b, $2
+    ld hl, $5b47
+    call Bankswitch
+    ld a, $2
+    ld [$d62b], a
+    ld [$da39], a
+    ret
+; 0x605a9
+
+INCBIN "baserom.gbc",$605a9,$605bb - $605a9
+
+PokemonTower2Script2: ; 0x605bb
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    ld a, $38
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    xor a
+    ld [$cd6b], a
+    call $2307
+    ld a, $0
+    ld [$d62b], a
+    ld [$da39], a
+    ret
+; 0x605db
+
+PokemonTower2Texts: ; 0x605db
+    dw PokemonTower2Text1, PokemonTower2Text2
+
 PokemonTower2Text1: ; 0x605df
     db $08 ; asm
     ld a, [$d764]
@@ -26655,12 +33200,28 @@
 PokemonTower3_h: ; 0x606c0 to 0x606cc (12 bytes) (id=144)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower3Blocks, $46e5, $46cc ; blocks, texts, scripts
+    dw PokemonTower3Blocks, PokemonTower3Texts, PokemonTower3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $475d ; objects
+    dw PokemonTower3Object ; objects
 
-INCBIN "baserom.gbc",$606cc,$60712 - $606cc
+PokemonTower3Script: ; 0x606cc
+    call $3c3c
+    ld hl, $46ed
+    ld de, $46df
+    ld a, [$d62c]
+    call $3160
+    ld [$d62c], a
+    ret
+; 0x606df
+
+INCBIN "baserom.gbc",$606df,$6
+
+PokemonTower3Texts: ; 0x606e5
+    dw PokemonTower3Text1, PokemonTower3Text2, PokemonTower3Text3, PokemonTower3Text4
+
+INCBIN "baserom.gbc",$606ed,$25
+
 PokemonTower3Text1: ; 0x60712
     db $08 ; asm
     ld hl, $46ed
@@ -26680,6 +33241,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$60730,$2d
+
 PokemonTower3Object: ; 0x6075d (size=51)
     db $1 ; border tile
 
@@ -26705,12 +33267,28 @@
 PokemonTower4_h: ; 0x607ea to 0x607f6 (12 bytes) (id=145)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower4Blocks, $480f, $47f6 ; blocks, texts, scripts
+    dw PokemonTower4Blocks, PokemonTower4Texts, PokemonTower4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $488b ; objects
+    dw PokemonTower4Object ; objects
 
-INCBIN "baserom.gbc",$607f6,$60840 - $607f6
+PokemonTower4Script: ; 0x607f6
+    call $3c3c
+    ld hl, $481b
+    ld de, $4809
+    ld a, [$d62d]
+    call $3160
+    ld [$d62d], a
+    ret
+; 0x60809
+
+INCBIN "baserom.gbc",$60809,$6
+
+PokemonTower4Texts: ; 0x6080f
+    dw PokemonTower4Text1, PokemonTower4Text2, PokemonTower4Text3, PokemonTower4Text4, PokemonTower4Text5, PokemonTower4Text6
+
+INCBIN "baserom.gbc",$6081b,$25
+
 PokemonTower4Text1: ; 0x60840
     db $08 ; asm
     ld hl, $481b
@@ -26730,6 +33308,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$6085e,$2d
+
 PokemonTower4Object: ; 0x6088b (size=65)
     db $1 ; border tile
 
@@ -26757,13 +33336,28 @@
 PokemonTower5_h: ; 0x60926 to 0x60932 (12 bytes) (id=146)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower5Blocks, $499b, $4932 ; blocks, texts, scripts
+    dw PokemonTower5Blocks, PokemonTower5Texts, PokemonTower5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4a48 ; objects
+    dw PokemonTower5Object ; objects
 
-INCBIN "baserom.gbc",$60932,$609da - $60932
+PokemonTower5Script: ; 0x60932
+    call $3c3c
+    ld hl, $49a9
+    ld de, $4945
+    ld a, [$d62e]
+    call $3160
+    ld [$d62e], a
+    ret
+; 0x60945
 
+INCBIN "baserom.gbc",$60945,$56
+
+PokemonTower5Texts: ; 0x6099b
+    dw PokemonTower5Text1, PokemonTower5Text2, PokemonTower5Text3, PokemonTower5Text4, PokemonTower5Text5, PokemonTower5Text6, PokemonTower5Text7
+
+INCBIN "baserom.gbc",$609a9,$31
+
 PokemonTower5Text1: ; 0x609da
     TX_FAR _PokemonTower5Text1
     db $50
@@ -26775,6 +33369,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$609e9,$609f8 - $609e9
+
 PokemonTower5Text3: ; 0x609f8
     db $08 ; asm
     ld hl, $49b5
@@ -26782,6 +33377,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$60a02,$60a11 - $60a02
+
 PokemonTower5Text4: ; 0x60a11
     db $08 ; asm
     ld hl, $49c1
@@ -26789,6 +33385,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$60a1b,$60a2a - $60a1b
+
 PokemonTower5Text5: ; 0x60a2a
     db $08 ; asm
     ld hl, $49cd
@@ -26795,7 +33392,11 @@
     call LoadTrainerHeader
     jp $24d7
 
-INCBIN "baserom.gbc",$60a34,$14
+INCBIN "baserom.gbc",$60a34,$f
+
+PokemonTower5Text7: ; 0x60a43
+INCBIN "baserom.gbc",$60a43,5
+
 PokemonTower5Object: ; 0x60a48 (size=65)
     db $1 ; border tile
 
@@ -26823,12 +33424,28 @@
 PokemonTower6_h: ; 0x60ae3 to 0x60aef (12 bytes) (id=147)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower6Blocks, $4bb1, $4aef ; blocks, texts, scripts
+    dw PokemonTower6Blocks, PokemonTower6Texts, PokemonTower6Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4c5b ; objects
+    dw PokemonTower6Object ; objects
 
-INCBIN "baserom.gbc",$60aef,$60be4 - $60aef
+PokemonTower6Script: ; 0x60aef
+    call $3c3c
+    ld hl, $4bbf
+    ld de, $4b0d
+    ld a, [$d62f]
+    call $3160
+    ld [$d62f], a
+    ret
+; 0x60b02
+
+INCBIN "baserom.gbc",$60b02,$af
+
+PokemonTower6Texts: ; 0x60bb1
+    dw PokemonTower6Text1, PokemonTower6Text2, PokemonTower6Text3, PokemonTower6Text4, PokemonTower6Text5, PokemonTower6Text6, PokemonTower6Text7
+
+INCBIN "baserom.gbc",$60bbb + 4,$29 - 4
+
 PokemonTower6Text1: ; 0x60be4
     db $08 ; asm
     ld hl, $4bbf
@@ -26847,7 +33464,12 @@
     call LoadTrainerHeader
     jp $24d7
 
-INCBIN "baserom.gbc",$60c02,$59
+PokemonTower6Text7: ; 0x60c02
+INCBIN "baserom.gbc",$60c02,$60c56 - $60c02
+
+PokemonTower6Text6: ; 0x60c56
+INCBIN "baserom.gbc",$60c56,$60c5b - $60c56
+
 PokemonTower6Object: ; 0x60c5b (size=58)
     db $1 ; border tile
 
@@ -26876,12 +33498,28 @@
 PokemonTower7_h: ; 0x60cf9 to 0x60d05 (12 bytes) (id=148)
     db $0f ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw PokemonTower7Blocks, $4e3f, $4d05 ; blocks, texts, scripts
+    dw PokemonTower7Blocks, PokemonTower7Texts, PokemonTower7Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4ef6 ; objects
+    dw PokemonTower7Object ; objects
 
-INCBIN "baserom.gbc",$60d05,$60e6c - $60d05
+PokemonTower7Script: ; 0x60d05
+    call $3c3c
+    ld hl, $4e47
+    ld de, $4d23
+    ld a, [$d630]
+    call $3160
+    ld [$d630], a
+    ret
+; 0x60d18
+
+INCBIN "baserom.gbc",$60d18,$127
+
+PokemonTower7Texts: ; 0x60e3f
+    dw PokemonTower7Text1, PokemonTower7Text2, PokemonTower7Text3, PokemonTower7Text4
+
+INCBIN "baserom.gbc",$60e47,$25
+
 PokemonTower7Text1: ; 0x60e6c
     db $08 ; asm
     ld hl, $4e47
@@ -26926,6 +33564,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$60ec4,$32
+
 PokemonTower7Object: ; 0x60ef6 (size=42)
     db $1 ; border tile
 
@@ -26949,12 +33588,15 @@
 CeladonMart1_h: ; 0x60f7a to 0x60f86 (12 bytes) (id=122)
     db $12 ; tileset
     db $04, $0a ; dimensions (y, x)
-    dw CeladonMart1Blocks, $4f89, $4f86 ; blocks, texts, scripts
+    dw CeladonMart1Blocks, CeladonMart1Texts, CeladonMart1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4f9e ; objects
+    dw CeladonMart1Object ; objects
 
-INCBIN "baserom.gbc",$60f86,$60f89 - $60f86
+CeladonMart1Script: ; 0x60f86
+    jp $3c3c
+; 0x60f89
+
 CeladonMart1Texts: ; 0x60f89
     dw CeladonMart1Text1, CeladonMart1Text2, CeladonMart1Text3
 
@@ -27004,13 +33646,28 @@
 ViridianForest_h: ; 0x61101 to 0x6110d (12 bytes) (id=51)
     db $03 ; tileset
     db $18, $11 ; dimensions (y, x)
-    dw $4000, $5126, $510d ; blocks, texts, scripts
+    dw $4000, ViridianForestTexts, ViridianForestScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $51da ; objects
+    dw ViridianForestObject ; objects
 
-INCBIN "baserom.gbc",$6110d,$61167 - $6110d
+ViridianForestScript: ; 0x6110d
+    call $3c3c
+    ld hl, $5142
+    ld de, $5120
+    ld a, [$d618]
+    call $3160
+    ld [$d618], a
+    ret
+; 0x61120
 
+INCBIN "baserom.gbc",$61120,$6
+
+ViridianForestTexts: ; 0x61126
+    dw ViridianForestText1, ViridianForestText2, ViridianForestText3, ViridianForestText4, ViridianForestText5, ViridianForestText6, ViridianForestText7, ViridianForestText8, ViridianForestText9, ViridianForestText10, ViridianForestText11, ViridianForestText12, ViridianForestText13, ViridianForestText14
+
+INCBIN "baserom.gbc",$61142,$25
+
 ViridianForestText1: ; 0x61167
     TX_FAR _ViridianForestText1
     db $50
@@ -27103,23 +33760,27 @@
 SSAnne1_h: ; 0x61259 to 0x61265 (12 bytes) (id=95)
     db $0d ; tileset
     db $09, $14 ; dimensions (y, x)
-    dw SSAnne1Blocks, $5269, $5265 ; blocks, texts, scripts
+    dw SSAnne1Blocks, SSAnne1Texts, SSAnne1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5277 ; objects
+    dw SSAnne1Object ; objects
 
-INCBIN "baserom.gbc",$61265,$6126d - $61265
+SSAnne1Script: ; 0x61265
+    call $3c3c
+    ret
+; 0x61269
 
+SSAnne1Texts: ; 0x61269
+    dw SSAnne1Text1, SSAnne1Text2
+
 SSAnne1Text1: ; 0x6126d
     TX_FAR _SSAnne1Text1
     db $50
 
-
 SSAnne1Text2: ; 0x61272
     TX_FAR _SSAnne1Text2
     db $50
 
-INCBIN "baserom.gbc",$61277,$0
 SSAnne1Object: ; 0x61277 (size=104)
     db $c ; border tile
 
@@ -27161,13 +33822,156 @@
 SSAnne2_h: ; 0x61393 to 0x6139f (12 bytes) (id=96)
     db $0d ; tileset
     db $09, $14 ; dimensions (y, x)
-    dw SSAnne2Blocks, $54db, $539f ; blocks, texts, scripts
+    dw SSAnne2Blocks, SSAnne2Texts, SSAnne2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5514 ; objects
+    dw SSAnne2Object ; objects
 
-INCBIN "baserom.gbc",$6139f,$614e1 - $6139f
+SSAnne2Script: ; 0x6139f
+    call $3c3c
+    ld hl, $53b3
+    ld a, [$d665]
+    jp $3d97
+; 0x613ab
 
+INCBIN "baserom.gbc",$613ab,$613b3 - $613ab
+
+SSAnne2Scripts: ; 0x613b3
+    dw SSAnne2Script0, SSAnne2Script1, SSAnne2Script2, SSAnne2Script3, SSAnne2Script4
+
+SSAnne2Script4: ; 0x613bd
+    ret
+; 0x613be
+
+SSAnne2Script0: ; 0x613be
+    ld hl, $5411
+    call $34bf
+    ret nc
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+    ld c, $2
+    ld a, $de
+    call $23a1
+    ld a, [$cd3d]
+    ld [$ff00+$db], a
+    ld a, $71
+    ld [$cc4d], a
+    ld a, $15
+    call Predef
+    call Delay3
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $3541
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $f0
+    ld [$cd6b], a
+    ld a, [$ff00+$db]
+    cp $2
+    jr nz, .asm_61400 ; 0x613f9 $5
+    ld de, $540c
+    jr .asm_61403 ; 0x613fe $3
+.asm_61400
+    ld de, $540d
+.asm_61403
+    call $363a
+    ld a, $1
+    ld [$d665], a
+    ret
+; 0x6140c
+
+INCBIN "baserom.gbc",$6140c,$61430 - $6140c
+
+SSAnne2Script1: ; 0x61430
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    call $5416
+    xor a
+    ld [$cd6b], a
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $2920
+    call Delay3
+    ld a, $f2
+    ld [$d059], a
+    ld a, [$d715]
+    cp $b1
+    jr nz, .asm_61457 ; 0x61451 $4
+    ld a, $1
+    jr .asm_61461 ; 0x61455 $a
+.asm_61457
+    cp $99
+    jr nz, .asm_6145f ; 0x61459 $4
+    ld a, $2
+    jr .asm_61461 ; 0x6145d $2
+.asm_6145f
+    ld a, $3
+.asm_61461
+    ld [$d05d], a
+    call $5416
+    ld a, $2
+    ld [$d665], a
+    ret
+; 0x6146d
+
+SSAnne2Script2: ; 0x6146d
+    ld a, [$d057]
+    cp $ff
+    jp z, $53ab
+    call $5416
+    ld a, $f0
+    ld [$cd6b], a
+    ld a, $3
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $3541
+    ld a, [$d362]
+    cp $25
+    jr nz, .asm_61497 ; 0x61490 $5
+    ld de, $54b9
+    jr .asm_6149a ; 0x61495 $3
+.asm_61497
+    ld de, $54b7
+.asm_6149a
+    ld a, $2
+    ld [$ff00+$8c], a
+    call $363a
+    ld a, $ff
+    ld [$c0ee], a
+    call $23b1
+    ld b, $2
+    ld hl, $5b47
+    call Bankswitch
+    ld a, $3
+    ld [$d665], a
+    ret
+; 0x614b7
+
+INCBIN "baserom.gbc",$614b7,$614be - $614b7
+
+SSAnne2Script3: ; 0x614be
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    xor a
+    ld [$cd6b], a
+    ld a, $71
+    ld [$cc4d], a
+    ld a, $11
+    call Predef
+    call $2307
+    ld a, $4
+    ld [$d665], a
+    ret
+; 0x614db
+
+SSAnne2Texts: ; 0x614db
+    dw SSAnne2Text1, SSAnne2Text2, SSAnne2Text3
+
 SSAnne2Text1: ; 0x614e1
     TX_FAR _SSAnne2Text1
     db $50
@@ -27184,7 +33988,12 @@
     call $3354
     jp $24d7
 ; 0x61500
-INCBIN "baserom.gbc",$61500,$14
+
+INCBIN "baserom.gbc",$61500,$f
+
+SSAnne2Text3: ; 0x6150f
+INCBIN "baserom.gbc",$6150f,5
+
 SSAnne2Object: ; 0x61514 (size=90)
     db $c ; border tile
 
@@ -27222,12 +34031,18 @@
 SSAnne4_h: ; 0x61622 to 0x6162e (12 bytes) (id=98)
     db $0d ; tileset
     db $04, $0f ; dimensions (y, x)
-    dw SSAnne4Blocks, $5631, $562e ; blocks, texts, scripts
+    dw SSAnne4Blocks, SSAnne4Texts, SSAnne4Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5632 ; objects
+    dw SSAnne4Object ; objects
 
-INCBIN "baserom.gbc",$6162e,$61632 - $6162e
+SSAnne4Script: ; 0x6162e
+    jp $3c3c
+; 0x61631
+
+SSAnne4Texts:
+INCBIN "baserom.gbc",$61631,$1
+
 SSAnne4Object: ; 0x61632 (size=52)
     db $c ; border tile
 
@@ -27257,28 +34072,40 @@
 SSAnne5_h: ; 0x616a2 to 0x616ae (12 bytes) (id=99)
     db $0d ; tileset
     db $07, $0a ; dimensions (y, x)
-    dw SSAnne5Blocks, $56c7, $56ae ; blocks, texts, scripts
+    dw SSAnne5Blocks, SSAnne5Texts, SSAnne5Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $572b ; objects
+    dw SSAnne5Object ; objects
 
-INCBIN "baserom.gbc",$616ae,$616ea - $616ae
+SSAnne5Script: ; 0x616ae
+    call $3c3c
+    ld hl, $56d1
+    ld de, $56c1
+    ld a, [$d617]
+    call $3160
+    ld [$d617], a
+    ret
+; 0x616c1
 
+INCBIN "baserom.gbc",$616c1,$6
+
+SSAnne5Texts: ; 0x616c7
+    dw SSAnne5Text1, SSAnne5Text2, SSAnne5Text3, SSAnne5Text4, SSAnne5Text5
+
+INCBIN "baserom.gbc",$616d1,$19
+
 SSAnne5Text1: ; 0x616ea
     TX_FAR _SSAnne5Text1
     db $50
 
-
 SSAnne5Text2: ; 0x616ef
     TX_FAR _SSAnne5Text2
     db $50
 
-
 SSAnne5Text3: ; 0x616f4
     TX_FAR _SSAnne5Text3
     db $50
 
-INCBIN "baserom.gbc",$616f9,$0
 SSAnne5Text4: ; 0x616f9
     db $08 ; asm
     ld hl, $56d1
@@ -27286,6 +34113,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61703,$61712 - $61703
+
 SSAnne5Text5: ; 0x61712
     db $08 ; asm
     ld hl, $56dd
@@ -27293,6 +34121,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$6171c,$f
+
 SSAnne5Object: ; 0x6172b (size=54)
     db $23 ; border tile
 
@@ -27319,43 +34148,43 @@
 SSAnne6_h: ; 0x617a7 to 0x617b3 (12 bytes) (id=100)
     db $0d ; tileset
     db $08, $07 ; dimensions (y, x)
-    dw SSAnne6Blocks, $57b7, $57b3 ; blocks, texts, scripts
+    dw SSAnne6Blocks, SSAnne6Texts, SSAnne6Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $581b ; objects
+    dw SSAnne6Object ; objects
 
-INCBIN "baserom.gbc",$617b3,$617c5 - $617b3
+SSAnne6Script: ; 0x617b3
+    call $3c3c
+    ret
+; 0x617b7
 
+SSAnne6Texts: ; 0x617b7
+    dw SSAnne6Text1, SSAnne6Text2, SSAnne6Text3, SSAnne6Text4, SSAnne6Text5, SSAnne6Text6, SSAnne6Text7
+
 SSAnne6Text1: ; 0x617c5
     TX_FAR _SSAnne6Text1
     db $50
 
-
 SSAnne6Text2: ; 0x617ca
     TX_FAR _SSAnne6Text2
     db $50
 
-
 SSAnne6Text3: ; 0x617cf
     TX_FAR _SSAnne6Text3
     db $50
 
-
 SSAnne6Text4: ; 0x617d4
     TX_FAR _SSAnne6Text4
     db $50
 
-
 SSAnne6Text5: ; 0x617d9
     TX_FAR _SSAnne6Text5
     db $50
 
-
 SSAnne6Text6: ; 0x617de
     TX_FAR _SSAnne6Text6
     db $50
 
-INCBIN "baserom.gbc",$617e3,$0
 SSAnne6Text7: ; 0x617e3
     db $08 ; asm
     ld hl, $5807
@@ -27377,6 +34206,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61807,$14
+
 SSAnne6Object: ; 0x6181b (size=54)
     db $c ; border tile
 
@@ -27403,12 +34233,21 @@
 SSAnne7_h: ; 0x61889 to 0x61895 (12 bytes) (id=101)
     db $0d ; tileset
     db $04, $03 ; dimensions (y, x)
-    dw SSAnne7Blocks, $58a7, $5895 ; blocks, texts, scripts
+    dw SSAnne7Blocks, SSAnne7Texts, SSAnne7Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5946 ; objects
+    dw SSAnne7Object ; objects
 
-INCBIN "baserom.gbc",$61895,$618ad - $61895
+SSAnne7Script: ; 0x61895
+    call $589b
+    jp $3c3c
+; 0x6189b
+
+INCBIN "baserom.gbc",$6189b,$c
+
+SSAnne7Texts: ; 0x618a7
+    dw SSAnne7Text1, SSAnne7Text2, SSAnne7Text3
+
 SSAnne7Text1: ; 0x618ad
     db $08 ; asm
     ld a, [$d803]
@@ -27470,12 +34309,28 @@
 SSAnne8_h: ; 0x6196a to 0x61976 (12 bytes) (id=102)
     db $0d ; tileset
     db $08, $0c ; dimensions (y, x)
-    dw SSAnne8Blocks, $598f, $5976 ; blocks, texts, scripts
+    dw SSAnne8Blocks, SSAnne8Texts, SSAnne8Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5a60 ; objects
+    dw SSAnne8Object ; objects
 
-INCBIN "baserom.gbc",$61976,$619d6 - $61976
+SSAnne8Script: ; 0x61976
+    call $3c3c
+    ld hl, $59a5
+    ld de, $5989
+    ld a, [$d608]
+    call $3160
+    ld [$d608], a
+    ret
+; 0x61989
+
+INCBIN "baserom.gbc",$61989,$6
+
+SSAnne8Texts: ; 0x6198f
+    dw SSAnne8Text1, SSAnne8Text2, SSAnne8Text3, SSAnne8Text4, SSAnne8Text5, SSAnne8Text6, SSAnne8Text7, SSAnne8Text8, SSAnne8Text9, SSAnne8Text10, SSAnne8Text11
+
+INCBIN "baserom.gbc",$619a5,$31
+
 SSAnne8Text1: ; 0x619d6
     db $08 ; asm
     ld hl, $59a5
@@ -27569,12 +34424,31 @@
 SSAnne9_h: ; 0x61b3f to 0x61b4b (12 bytes) (id=103)
     db $0d ; tileset
     db $08, $0c ; dimensions (y, x)
-    dw SSAnne9Blocks, $5b6a, $5b4b ; blocks, texts, scripts
+    dw SSAnne9Blocks, SSAnne9Texts, SSAnne9Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5c8d ; objects
+    dw SSAnne9Object ; objects
 
-INCBIN "baserom.gbc",$61b4b,$61bb5 - $61b4b
+SSAnne9Script: ; 0x61b4b
+    ld a, $1
+    ld [$cf0c], a
+    xor a
+    ld [$cc3c], a
+    ld hl, $5b84
+    ld de, $5b64
+    ld a, [$d609]
+    call $3160
+    ld [$d609], a
+    ret
+; 0x61b64
+
+INCBIN "baserom.gbc",$61b64,$6
+
+SSAnne9Texts: ; 0x61b6a
+    dw SSAnne9Text1, SSAnne9Text2, SSAnne9Text3, SSAnne9Text4, SSAnne9Text5, SSAnne9Text6, SSAnne9Text7, SSAnne9Text8, SSAnne9Text9, SSAnne9Text10, SSAnne9Text11, SSAnne9Text12, SSAnne9Text13
+
+INCBIN "baserom.gbc",$61b84,$31
+
 SSAnne9Text1: ; 0x61bb5
     db $08 ; asm
     ld hl, $5b84
@@ -27610,6 +34484,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61bf2,$61bf7 - $61bf2
+
 SSAnne9Text7: ; 0x61bf7
     db $08 ; asm
     ld hl, $5c01
@@ -27617,6 +34492,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61c01,$61c06 - $61c01
+
 SSAnne9Text8: ; 0x61c06
     db $08 ; asm
     ld hl, $5c10
@@ -27624,6 +34500,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61c10,$61c15 - $61c10
+
 SSAnne9Text10: ; 0x61c15
     db $08 ; asm
     ld hl, $5c1f
@@ -27631,6 +34508,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61c1f,$61c24 - $61c1f
+
 SSAnne9Text11: ; 0x61c24
     db $08 ; asm
     ld hl, $5c2e
@@ -27638,6 +34516,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61c2e,$61c33 - $61c2e
+
 SSAnne9Text12: ; 0x61c33
     db $08 ; asm
     ld hl, $5c3d
@@ -27645,6 +34524,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61c3d,$61c42 - $61c3d
+
 SSAnne9Text13: ; 0x61c42
     db $08 ; asm
     ld hl, $5c4c
@@ -27652,6 +34532,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$61c4c,$41
+
 SSAnne9Object: ; 0x61c8d (size=188)
     db $c ; border tile
 
@@ -27703,12 +34584,28 @@
 SSAnne10_h: ; 0x61d49 to 0x61d55 (12 bytes) (id=104)
     db $0d ; tileset
     db $08, $0c ; dimensions (y, x)
-    dw $43c0, $5d6e, $5d55 ; blocks, texts, scripts
+    dw $43c0, SSAnne10Texts, SSAnne10Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e75 ; objects
+    dw SSAnne10Object ; objects
 
-INCBIN "baserom.gbc",$61d55,$61dcd - $61d55
+SSAnne10Script: ; 0x61d55
+    call $3c3c
+    ld hl, $5d84
+    ld de, $5d68
+    ld a, [$d629]
+    call $3160
+    ld [$d629], a
+    ret
+; 0x61d68
+
+INCBIN "baserom.gbc",$61d68,$6
+
+SSAnne10Texts: ; 0x61d6e
+    dw SSAnne10Text1, SSAnne10Text2, SSAnne10Text3, SSAnne10Text4, SSAnne10Text5, SSAnne10Text6, SSAnne10Text7, SSAnne10Text8, SSAnne10Text9, SSAnne10Text10, SSAnne10Text11
+
+INCBIN "baserom.gbc",$61d84,$49
+
 SSAnne10Text1: ; 0x61dcd
     db $08 ; asm
     ld hl, $5d84
@@ -27803,12 +34700,18 @@
 UndergroundPathNS_h: ; 0x61f1a to 0x61f26 (12 bytes) (id=119)
     db $0b ; tileset
     db $18, $04 ; dimensions (y, x)
-    dw UndergroundPathNSBlocks, $5f29, $5f26 ; blocks, texts, scripts
+    dw UndergroundPathNSBlocks, UndergroundPathNSTexts, UndergroundPathNSScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5f2a ; objects
+    dw UndergroundPathNSObject ; objects
 
-INCBIN "baserom.gbc",$61f26,$61f2a - $61f26
+UndergroundPathNSScript: ; 0x61f26
+    jp $3c3c
+; 0x61f29
+
+UndergroundPathNSTexts:
+INCBIN "baserom.gbc",$61f29,$1
+
 UndergroundPathNSObject: ; 0x61f2a (size=20)
     db $1 ; border tile
 
@@ -27827,12 +34730,17 @@
 UndergroundPathWE_h: ; 0x61f3e to 0x61f4a (12 bytes) (id=121)
     db $0b ; tileset
     db $04, $19 ; dimensions (y, x)
-    dw $41f4, $5f4d, $5f4a ; blocks, texts, scripts
+    dw $41f4, $5f4d, UndergroundPathWEScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5f4e ; objects
+    dw UndergroundPathWEObject ; objects
 
-INCBIN "baserom.gbc",$61f4a,$61f4e - $61f4a
+UndergroundPathWEScript: ; 0x61f4a
+    jp $3c3c
+; 0x61f4d
+
+INCBIN "baserom.gbc",$61f4d,$1
+
 UndergroundPathWEObject: ; 0x61f4e (size=20)
     db $1 ; border tile
 
@@ -27851,12 +34759,17 @@
 DiglettsCave_h: ; 0x61f62 to 0x61f6e (12 bytes) (id=197)
     db $11 ; tileset
     db $12, $14 ; dimensions (y, x)
-    dw DiglettsCaveBlocks, $5f71, $5f6e ; blocks, texts, scripts
+    dw DiglettsCaveBlocks, $5f71, DiglettsCaveScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5f72 ; objects
+    dw DiglettsCaveObject ; objects
 
-INCBIN "baserom.gbc",$61f6e,$61f72 - $61f6e
+DiglettsCaveScript: ; 0x61f6e
+    jp $3c3c
+; 0x61f71
+
+INCBIN "baserom.gbc",$61f71,$1
+
 DiglettsCaveObject: ; 0x61f72 (size=20)
     db $19 ; border tile
 
@@ -27878,12 +34791,29 @@
 SilphCo11_h: ; 0x620ee to 0x620fa (12 bytes) (id=235)
     db $10 ; tileset
     db $09, $09 ; dimensions (y, x)
-    dw SilphCo11Blocks, $62b7, $60fa ; blocks, texts, scripts
+    dw SilphCo11Blocks, SilphCo11Texts, SilphCo11Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6380 ; objects
+    dw SilphCo11Object ; objects
 
-INCBIN "baserom.gbc",$620fa,$622dc - $620fa
+SilphCo11Script: ; 0x620fa
+    call $6110
+    call $3c3c
+    ld hl, $62c3
+    ld de, $61cf
+    ld a, [$d659]
+    call $3160
+    ld [$d659], a
+    ret
+; 0x62110
+
+INCBIN "baserom.gbc",$62110,$1a7
+
+SilphCo11Texts: ; 0x622b7
+    dw SilphCo11Text1, SilphCo11Text2, SilphCo11Text3, SilphCo11Text4, SilphCo11Text5, SilphCo11Text6
+
+INCBIN "baserom.gbc",$622c3,$19
+
 SilphCo11Text1: ; 0x622dc
     db $08 ; asm
     ld a, [$d838]
@@ -27918,7 +34848,11 @@
     TX_FAR _SilphCo11Text3
     db $50
 
-INCBIN "baserom.gbc",$62330,$6233a - $62330
+INCBIN "baserom.gbc",$62330,5
+
+SilphCo11Text6: ; 0x62335
+INCBIN "baserom.gbc",$62335,5
+
 SilphCo11Text4: ; 0x6233a
     db $08 ; asm
     ld hl, $62c3
@@ -27926,6 +34860,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$62344,$62353 - $62344
+
 SilphCo11Text5: ; 0x62353
     db $08 ; asm
     ld hl, $62cf
@@ -27933,6 +34868,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$6235d,$23
+
 SilphCo11Object: ; 0x62380 (size=72)
     db $d ; border tile
 
@@ -27963,32 +34899,33 @@
 INCBIN "baserom.gbc",$62419,$1be7
 
 SECTION "bank19",DATA,BANK[$19]
+
 Tset00_GFX:
-	INCBIN "baserom.gbc",$64000,$645E0-$64000
+    INCBIN "gfx/tilesets/00.2bpp"
 Tset00_Block:
 	INCBIN "baserom.gbc",$645E0,$64DE0-$645E0
 Tset01_GFX:
-	INCBIN "baserom.gbc",$64DE0,$65270-$64DE0
+    INCBIN "gfx/tilesets/01.2bpp"
 Tset01_Block:
 	INCBIN "baserom.gbc",$65270,$653A0-$65270
 Tset08_GFX:
-	INCBIN "baserom.gbc",$653A0,$65980-$653A0
+    INCBIN "gfx/tilesets/08.2bpp"
 Tset08_Block:
 	INCBIN "baserom.gbc",$65980,$65BB0-$65980
 Tset13_GFX:
-	INCBIN "baserom.gbc",$65BB0,$66190-$65BB0
+    INCBIN "gfx/tilesets/13.2bpp"
 Tset13_Block:
 	INCBIN "baserom.gbc",$66190,$66610-$66190
 Tset0E_GFX:
-	INCBIN "baserom.gbc",$66610,$66BF0-$66610
+    INCBIN "gfx/tilesets/0e.2bpp"
 Tset0E_Block:
 	INCBIN "baserom.gbc",$66BF0,$66D60-$66BF0
 Tset10_GFX:
-	INCBIN "baserom.gbc",$66D60,$67350-$66D60
+    INCBIN "gfx/tilesets/10.2bpp"
 Tset10_Block:
 	INCBIN "baserom.gbc",$67350,$676F0-$67350
 Tset17_GFX:
-	INCBIN "baserom.gbc",$676F0,$67B50-$676F0
+    INCBIN "gfx/tilesets/17.2bpp"
 Tset17_Block:
 	INCBIN "baserom.gbc",$67B50,$68000-$67B50
 
@@ -28024,59 +34961,62 @@
 	dec [hl] ; Decrement PP
 	ret
 
-INCBIN "baserom.gbc",$6802F,$6807F-$6802F
+INCBIN "gfx/redgreenversion.1bpp"
+
 Tset05_GFX:
-	INCBIN "baserom.gbc",$6807F,$6867F-$6807F
+    INCBIN "gfx/tilesets/05.2bpp"
 Tset05_Block:
 	INCBIN "baserom.gbc",$6867F,$68DBF-$6867F
 Tset02_GFX:
-	INCBIN "baserom.gbc",$68DBF,$693BF-$68DBF
+    INCBIN "gfx/tilesets/02.2bpp"
 Tset02_Block:
 	INCBIN "baserom.gbc",$693BF,$6960F-$693BF
 Tset09_GFX:
-	INCBIN "baserom.gbc",$6960F,$69BFF-$6960F
+    INCBIN "gfx/tilesets/09.2bpp"
 Tset09_Block:
 	INCBIN "baserom.gbc",$69BFF,$6A3FF-$69BFF
 Tset03_GFX:
-	INCBIN "baserom.gbc",$6A3FF,$6A9FF-$6A3FF
+    INCBIN "gfx/tilesets/03.2bpp"
 Tset03_Block:
 	INCBIN "baserom.gbc",$6A9FF,$6B1FF-$6A9FF
 Tset16_GFX:
-	INCBIN "baserom.gbc",$6B1FF,$6B7FF-$6B1FF
+    INCBIN "gfx/tilesets/16.2bpp"
 Tset16_Block:
 	INCBIN "baserom.gbc",$6B7FF,$6C000-$6B7FF
 
 SECTION "bank1B",DATA,BANK[$1B]
+
 Tset0F_GFX:
-	INCBIN "baserom.gbc",$6C000,$6C5C0-$6C000
+    INCBIN "gfx/tilesets/0f.2bpp"
 Tset0F_Block:
 	INCBIN "baserom.gbc",$6C5C0,$6CCA0-$6C5C0
 Tset11_GFX:
-	INCBIN "baserom.gbc",$6CCA0,$6D0C0-$6CCA0
+    INCBIN "gfx/tilesets/11.2bpp"
 Tset11_Block:
 	INCBIN "baserom.gbc",$6D0C0,$6D8C0-$6D0C0
 Tset12_GFX:
-	INCBIN "baserom.gbc",$6D8C0,$6DEA0-$6D8C0
+    INCBIN "gfx/tilesets/12.2bpp"
 Tset12_Block:
 	INCBIN "baserom.gbc",$6DEA0,$6E390-$6DEA0
 Tset0D_GFX:
-	INCBIN "baserom.gbc",$6E390,$6E930-$6E390
+    INCBIN "gfx/tilesets/0d.2bpp"
 Tset0D_Block:
 	INCBIN "baserom.gbc",$6E930,$6ED10-$6E930
 Tset14_GFX:
-	INCBIN "baserom.gbc",$6ED10,$6F2D0-$6ED10
+    INCBIN "gfx/tilesets/14.2bpp"
 Tset14_Block:
 	INCBIN "baserom.gbc",$6F2D0,$6F670-$6F2D0
 Tset15_GFX:
-	INCBIN "baserom.gbc",$6F670,$6FB20-$6F670
+    INCBIN "gfx/tilesets/15.2bpp"
 Tset15_Block:
 	INCBIN "baserom.gbc",$6FB20,$6FD60-$6FB20
 Tset0B_GFX:
-	INCBIN "baserom.gbc",$6FD60,$6FEF0-$6FD60
+    INCBIN "gfx/tilesets/0b.2bpp"
 Tset0B_Block:
 	INCBIN "baserom.gbc",$6FEF0,$70000-$6FEF0
 
 SECTION "bank1C",DATA,BANK[$1C]
+
 INCBIN "baserom.gbc",$70000,$1100
 
 CompressedMap: ; 5100
@@ -28465,7 +35405,6 @@
 	ld [$cd12],a
 	ret
 
-
 INCBIN "baserom.gbc",$71CA2,$725C8-$71CA2
 
 MonsterPalettes: ; 65C8
@@ -29069,12 +36008,31 @@
 ViridianGym_h: ; 0x74897 to 0x748a3 (12 bytes) (id=45)
     db $07 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw ViridianGymBlocks, $49ec, $48a3 ; blocks, texts, scripts
+    dw ViridianGymBlocks, ViridianGymTexts, ViridianGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4bde ; objects
+    dw ViridianGymObject ; objects
 
-INCBIN "baserom.gbc",$748a3,$74a69 - $748a3
+ViridianGymScript: ; 0x748a3
+    ld hl, $48bf
+    ld de, $48cd
+    call $317f
+    call $3c3c
+    ld hl, $4a08
+    ld de, $48e1
+    ld a, [$d5fb]
+    call $3160
+    ld [$d5fb], a
+    ret
+; 0x748bf
+
+INCBIN "baserom.gbc",$748bf,$12d
+
+ViridianGymTexts: ; 0x749ec
+    dw ViridianGymText1, ViridianGymText2, ViridianGymText3, ViridianGymText4, ViridianGymText5, ViridianGymText6, ViridianGymText7, ViridianGymText8, ViridianGymText9, ViridianGymText10, ViridianGymText11, ViridianGymText12, ViridianGymText13, ViridianGymText14
+
+INCBIN "baserom.gbc",$74a02 + 6,$67 - 6
+
 ViridianGymText1: ; 0x74a69
     db $08 ; asm
     ld a, [$d751]
@@ -29119,7 +36077,19 @@
 .asm_6dff7 ; 0x74acb
     jp $24d7
 
-INCBIN "baserom.gbc",$74ace,$74af3 - $74ace
+INCBIN "baserom.gbc",$74ace,$74adf - $74ace
+
+ViridianGymText12: ; 0x74adf
+INCBIN "baserom.gbc",$74adf,5
+
+ViridianGymText13: ; 0x74ae4
+INCBIN "baserom.gbc",$74ae4, 5
+
+INCBIN "baserom.gbc",$74ae9,$74aee - $74ae9
+
+ViridianGymText14: ; 0x74aee
+INCBIN "baserom.gbc",$74aee,5
+
 ViridianGymText2: ; 0x74af3
     db $08 ; asm
     ld hl, $4a08
@@ -29127,6 +36097,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74afd,$74b0c - $74afd
+
 ViridianGymText3: ; 0x74b0c
     db $08 ; asm
     ld hl, $4a14
@@ -29134,6 +36105,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74b16,$74b25 - $74b16
+
 ViridianGymText4: ; 0x74b25
     db $08 ; asm
     ld hl, $4a20
@@ -29141,6 +36113,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74b2f,$74b3e - $74b2f
+
 ViridianGymText5: ; 0x74b3e
     db $08 ; asm
     ld hl, $4a2c
@@ -29148,6 +36121,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74b48,$74b57 - $74b48
+
 ViridianGymText6: ; 0x74b57
     db $08 ; asm
     ld hl, $4a38
@@ -29155,6 +36129,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74b61,$74b70 - $74b61
+
 ViridianGymText7: ; 0x74b70
     db $08 ; asm
     ld hl, $4a44
@@ -29162,6 +36137,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74b7a,$74b89 - $74b7a
+
 ViridianGymText8: ; 0x74b89
     db $08 ; asm
     ld hl, $4a50
@@ -29169,6 +36145,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74b93,$74ba2 - $74b93
+
 ViridianGymText9: ; 0x74ba2
     db $08 ; asm
     ld hl, $4a5c
@@ -29176,6 +36153,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74bac,$74bbb - $74bac
+
 ViridianGymText10: ; 0x74bbb
     db $08 ; asm
     ld a, [$d751]
@@ -29191,6 +36169,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74bd4,$a
+
 ViridianGymObject: ; 0x74bde (size=105)
     db $3 ; border tile
 
@@ -29223,12 +36202,21 @@
 PewterMart_h: ; 0x74ca1 to 0x74cad (12 bytes) (id=56)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw PewterMartBlocks, $4cb6, $4cad ; blocks, texts, scripts
+    dw PewterMartBlocks, PewterMartTexts, PewterMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4cda ; objects
+    dw PewterMartObject ; objects
 
-INCBIN "baserom.gbc",$74cad,$74cbc - $74cad
+PewterMartScript: ; 0x74cad
+    call $3c3c
+    ld a, $1
+    ld [$cf0c], a
+    ret
+; 0x74cb6
+
+PewterMartTexts: ; 0x74cb6
+    dw PewterMartText1, PewterMartText2, PewterMartText3
+
 PewterMartText2: ; 0x74cbc
     db $08 ; asm
     ld hl, $4cc6
@@ -29236,6 +36224,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74cc6,$74ccb - $74cc6
+
 PewterMartText3: ; 0x74ccb
     db $08 ; asm
     ld hl, $4cd5
@@ -29243,6 +36232,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$74cd5,$5
+
 PewterMartObject: ; 0x74cda (size=38)
     db $0 ; border tile
 
@@ -29264,12 +36254,18 @@
 UnknownDungeon1_h: ; 0x74d00 to 0x74d0c (12 bytes) (id=228)
     db $11 ; tileset
     db $09, $0f ; dimensions (y, x)
-    dw UnknownDungeon1Blocks, $4d0f, $4d0c ; blocks, texts, scripts
+    dw UnknownDungeon1Blocks, UnknownDungeon1Texts, UnknownDungeon1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4d15 ; objects
+    dw UnknownDungeon1Object ; objects
 
-INCBIN "baserom.gbc",$74d0c,$74d15 - $74d0c
+UnknownDungeon1Script: ; 0x74d0c
+    jp $3c3c
+; 0x74d0f
+
+UnknownDungeon1Texts: ; 0x74d0f
+    dw UnknownDungeon1Text1, UnknownDungeon1Text2, UnknownDungeon1Text3
+
 UnknownDungeon1Object: ; 0x74d15 (size=97)
     db $7d ; border tile
 
@@ -29308,12 +36304,67 @@
 CeruleanHouse3_h: ; 0x74dfd to 0x74e09 (12 bytes) (id=230)
     db $0d ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw CeruleanHouse3Blocks, $4e13, $4e09 ; blocks, texts, scripts
+    dw CeruleanHouse3Blocks, $4e13, CeruleanHouse3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $4ebe ; objects
+    dw CeruleanHouse3Object ; objects
 
-INCBIN "baserom.gbc",$74e09,$74ebe - $74e09
+CeruleanHouse3Script: ; 0x74e09
+    ld a, $1
+    ld [$cf0c], a
+    dec a
+    ld [$cc3c], a
+    ret
+; 0x74e13
+
+INCBIN "baserom.gbc",$74e13,$2
+
+CeruleanHouse3Text1: ; 0x74e15
+    db $8
+    ld hl, $4e77
+    call PrintText
+    xor a
+    ld [$cc26], a
+    ld [$cc36], a
+.asm_74e23
+    ld hl, $4e7c
+    call PrintText
+    ld hl, $4e6d
+    call $2a5a
+    ld hl, $cf7b
+    ld a, l
+    ld [$cf8b], a
+    ld a, h
+    ld [$cf8c], a
+    xor a
+    ld [$cf93], a
+    ld [$cc35], a
+    ld a, $4
+    ld [$cf94], a
+    call $2be6
+    jr c, .asm_74e60 ; 0x74e49 $15
+    ld hl, $4e86
+    ld a, [$cf91]
+    sub $15
+    add a
+    ld d, $0
+    ld e, a
+    add hl, de
+    ld a, [hli]
+    ld h, [hl]
+    ld l, a
+    call PrintText
+    jr .asm_74e23 ; 0x74e5e $c3
+.asm_74e60
+    xor a
+    ld [$cc36], a
+    ld hl, $4e81
+    call PrintText
+    jp $24d7
+; 0x74e6d
+
+INCBIN "baserom.gbc",$74e6d,$51
+
 CeruleanHouse3Object: ; 0x74ebe (size=34)
     db $c ; border tile
 
@@ -29337,12 +36388,16 @@
 FuchsiaHouse1_h: ; 0x7500c to 0x75018 (12 bytes) (id=153)
     db $08 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw FuchsiaHouse1Blocks, $501c, $5018 ; blocks, texts, scripts
+    dw FuchsiaHouse1Blocks, FuchsiaHouse1Texts, FuchsiaHouse1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5031 ; objects
+    dw FuchsiaHouse1Object ; objects
 
-INCBIN "baserom.gbc",$75018,$7501c - $75018
+FuchsiaHouse1Script: ; 0x75018
+    call $3c3c
+    ret
+; 0x7501c
+
 FuchsiaHouse1Texts: ; 0x7501c
     dw FuchsiaHouse1Text1, FuchsiaHouse1Text2, FuchsiaHouse1Text3
 
@@ -29379,13 +36434,18 @@
 FuchsiaPokecenter_h: ; 0x75057 to 0x75063 (12 bytes) (id=154)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw FuchsiaPokecenterBlocks, $5069, $5063 ; blocks, texts, scripts
+    dw FuchsiaPokecenterBlocks, $5069, FuchsiaPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $507d ; objects
+    dw FuchsiaPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$75063,$75072 - $75063
+FuchsiaPokecenterScript: ; 0x75063
+    call $22fa
+    jp $3c3c
+; 0x75069
 
+INCBIN "baserom.gbc",$75069,$9
+
 FuchsiaPokecenterText2:
 FuchsiaPokecenterText1: ; 0x75071 or 0x75072
     TX_FAR _FuchsiaPokecenterText1
@@ -29395,7 +36455,8 @@
     TX_FAR _FuchsiaPokecenterText3
     db $50
 
-INCBIN "baserom.gbc",$7507c,$1
+FuchsiaPokecenterText4: ; 0x7507c
+    db $f6
 
 FuchsiaPokecenterObject: ; 0x7507d (size=44)
     db $0 ; border tile
@@ -29419,12 +36480,18 @@
 FuchsiaHouse2_h: ; 0x750a9 to 0x750b5 (12 bytes) (id=155)
     db $14 ; tileset
     db $04, $05 ; dimensions (y, x)
-    dw FuchsiaHouse2Blocks, $50b8, $50b5 ; blocks, texts, scripts
+    dw FuchsiaHouse2Blocks, FuchsiaHouse2Texts, FuchsiaHouse2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5180 ; objects
+    dw FuchsiaHouse2Object ; objects
 
-INCBIN "baserom.gbc",$750b5,$750c2 - $750b5
+FuchsiaHouse2Script: ; 0x750b5
+    jp $3c3c
+; 0x750b8
+
+FuchsiaHouse2Texts: ; 0x750b8
+    dw FuchsiaHouse2Text1, FuchsiaHouse2Text2, FuchsiaHouse2Text3, FuchsiaHouse2Text4, FuchsiaHouse2Text5
+
 FuchsiaHouse2Text1: ; 0x750c2
     db $08 ; asm
     ld a, [$d78e]
@@ -29520,18 +36587,91 @@
 SafariZoneEntrance_h: ; 0x751c1 to 0x751cd (12 bytes) (id=156)
     db $0c ; tileset
     db $03, $04 ; dimensions (y, x)
-    dw SafariZoneEntranceBlocks, $52b9, $51cd ; blocks, texts, scripts
+    dw SafariZoneEntranceBlocks, SafariZoneEntranceTexts, SafariZoneEntranceScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $53f5 ; objects
+    dw SafariZoneEntranceObject ; objects
 
-INCBIN "baserom.gbc",$751cd,$752c5 - $751cd
+SafariZoneEntranceScript: ; 0x751cd
+    call $3c3c
+    ld hl, $51d9
+    ld a, [$d61f]
+    jp $3d97
+; 0x751d9
 
+SafariZoneEntranceScripts: ; 0x751d9
+    dw SafariZoneEntranceScript0, SafariZoneEntranceScript1
+
+INCBIN "baserom.gbc",$751dd,$a
+
+SafariZoneEntranceScript0: ; 0x751e7
+    ld hl, $5221
+    call $34bf
+    ret nc
+    ld a, $3
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $ff
+    ld [$cd6b], a
+    xor a
+    ld [$ff00+$b4], a
+    ld a, $c
+    ld [$c109], a
+    ld a, [$cd3d]
+    cp $1
+    jr z, .asm_7520f ; 0x75207 $6
+    ld a, $2
+    ld [$d61f], a
+    ret
+.asm_7520f
+    ld a, $10
+    ld c, $1
+    call $52a3
+    ld a, $f0
+    ld [$cd6b], a
+    ld a, $1
+    ld [$d61f], a
+    ret
+; 0x75221
+
+INCBIN "baserom.gbc",$75221,$75226 - $75221
+
+SafariZoneEntranceScript1: ; 0x75226
+    call $52b4
+    ret nz
+    xor a
+    ld [$ff00+$b4], a
+    ld [$cd6b], a
+    call $2429
+    ld a, $4
+    ld [$ff00+$8c], a
+    call $2920
+    ld a, $ff
+    ld [$cd6b], a
+    ret
+; 0x75240
+
+INCBIN "baserom.gbc",$75240,$79
+
+SafariZoneEntranceTexts: ; 0x752b9
+    dw SafariZoneEntranceText1, SafariZoneEntranceText2, SafariZoneEntranceText3, SafariZoneEntranceText4, SafariZoneEntranceText5, SafariZoneEntranceText6
+
+SafariZoneEntranceText3:
 SafariZoneEntranceText1: ; 0x752c5
     TX_FAR _SafariZoneEntranceText1
     db $50
 
-INCBIN "baserom.gbc",$752ca,$753ca - $752ca
+SafariZoneEntranceText4:
+INCBIN "baserom.gbc",$752ca,$7536f - $752ca
+
+SafariZoneEntranceText5: ; 0x7536f
+INCBIN "baserom.gbc",$7536f,6
+
+INCBIN "baserom.gbc",$75375,$753c5 - $75375
+
+SafariZoneEntranceText6: ; 0x753c5
+INCBIN "baserom.gbc",$753c5,5
+
 SafariZoneEntranceText2: ; 0x753ca
     db $08 ; asm
     ld hl, $53e6
@@ -29547,6 +36687,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$753e6,$f
+
 SafariZoneEntranceObject: ; 0x753f5 (size=48)
     db $a ; border tile
 
@@ -29574,12 +36715,29 @@
 FuchsiaGym_h: ; 0x75431 to 0x7543d (12 bytes) (id=157)
     db $07 ; tileset
     db $09, $05 ; dimensions (y, x)
-    dw FuchsiaGymBlocks, $54d5, $543d ; blocks, texts, scripts
+    dw FuchsiaGymBlocks, FuchsiaGymTexts, FuchsiaGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5658 ; objects
+    dw FuchsiaGymObject ; objects
 
-INCBIN "baserom.gbc",$7543d,$75534 - $7543d
+FuchsiaGymScript: ; 0x7543d
+    call $5453
+    call $3c3c
+    ld hl, $54eb
+    ld de, $5482
+    ld a, [$d65b]
+    call $3160
+    ld [$d65b], a
+    ret
+; 0x75453
+
+INCBIN "baserom.gbc",$75453,$82
+
+FuchsiaGymTexts: ; 0x754d5
+    dw FuchsiaGymText1, FuchsiaGymText2, FuchsiaGymText3, FuchsiaGymText4, FuchsiaGymText5, FuchsiaGymText6, FuchsiaGymText7, FuchsiaGymText8, FuchsiaGymText9, FuchsiaGymText10, FuchsiaGymText11
+
+INCBIN "baserom.gbc",$754eb,$49
+
 FuchsiaGymText1: ; 0x75534
     db $08 ; asm
     ld a, [$d792]
@@ -29616,7 +36774,17 @@
 .asm_e84c6 ; 0x7557e
     jp $24d7
 
-INCBIN "baserom.gbc",$75581,$755a4 - $75581
+INCBIN "baserom.gbc",$75581,$75590 - $75581
+
+FuchsiaGymText9: ; 0x75590
+INCBIN "baserom.gbc",$75590,5
+
+FuchsiaGymText10: ; 0x75595
+INCBIN "baserom.gbc",$75595,$7559f - $75595
+
+FuchsiaGymText11: ; 0x7559f
+INCBIN "baserom.gbc",$7559f,5
+
 FuchsiaGymText2: ; 0x755a4
     db $08 ; asm
     ld hl, $54eb
@@ -29624,6 +36792,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$755ae,$755bd - $755ae
+
 FuchsiaGymText3: ; 0x755bd
     db $08 ; asm
     ld hl, $54f7
@@ -29631,6 +36800,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$755c7,$755d6 - $755c7
+
 FuchsiaGymText4: ; 0x755d6
     db $08 ; asm
     ld hl, $5503
@@ -29638,6 +36808,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$755e0,$755ef - $755e0
+
 FuchsiaGymText5: ; 0x755ef
     db $08 ; asm
     ld hl, $550f
@@ -29645,6 +36816,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$755f9,$75608 - $755f9
+
 FuchsiaGymText6: ; 0x75608
     db $08 ; asm
     ld hl, $551b
@@ -29652,6 +36824,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75612,$75621 - $75612
+
 FuchsiaGymText7: ; 0x75621
     db $08 ; asm
     ld hl, $5527
@@ -29659,6 +36832,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$7562b,$7563a - $7562b
+
 FuchsiaGymText8: ; 0x7563a
     db $08 ; asm
     ld a, [$d792]
@@ -29671,6 +36845,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$7564e,$a
+
 FuchsiaGymObject: ; 0x75658 (size=82)
     db $3 ; border tile
 
@@ -29700,12 +36875,16 @@
 FuchsiaMeetingRoom_h: ; 0x756d7 to 0x756e3 (12 bytes) (id=158)
     db $14 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw FuchsiaMeetingRoomBlocks, $56e7, $56e3 ; blocks, texts, scripts
+    dw FuchsiaMeetingRoomBlocks, FuchsiaMeetingRoomTexts, FuchsiaMeetingRoomScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $56fc ; objects
+    dw FuchsiaMeetingRoomObject ; objects
 
-INCBIN "baserom.gbc",$756e3,$756e7 - $756e3
+FuchsiaMeetingRoomScript: ; 0x756e3
+    call $3c3c
+    ret
+; 0x756e7
+
 FuchsiaMeetingRoomTexts: ; 0x756e7
     dw FuchsiaMeetingRoomText1, FuchsiaMeetingRoomText2, FuchsiaMeetingRoomText3
 
@@ -29745,12 +36924,73 @@
 CinnabarGym_h: ; 0x7573e to 0x7574a (12 bytes) (id=166)
     db $16 ; tileset
     db $09, $0a ; dimensions (y, x)
-    dw $5b26, $589f, $574a ; blocks, texts, scripts
+    dw $5b26, CinnabarGymTexts, CinnabarGymScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5acc ; objects
+    dw CinnabarGymObject ; objects
 
-INCBIN "baserom.gbc",$7574a,$758df - $7574a
+CinnabarGymScript: ; 0x7574a
+    call $5759
+    call $3c3c
+    ld hl, $57a6
+    ld a, [$d65e]
+    jp $3d97
+; 0x75759
+
+INCBIN "baserom.gbc",$75759,$757a6 - $75759
+
+CinnabarGymScripts: ; 0x757a6
+    dw CinnabarGymScript0, CinnabarGymScript1
+
+INCBIN "baserom.gbc",$757aa,$4
+
+CinnabarGymScript0: ; 0x757ae
+    ld a, [$da38]
+    and a
+    ret z
+    ld [$ff00+$8c], a
+    cp $4
+    jr nz, .asm_757c3 ; 0x757b7 $a
+    ld a, $4
+    ld [$d528], a
+    ld de, $57d7
+    jr .asm_757cb ; 0x757c1 $8
+.asm_757c3
+    ld de, $57da
+    ld a, $1
+    ld [$d528], a
+.asm_757cb
+    call $363a
+    ld a, $1
+    ld [$d65e], a
+    ld [$da39], a
+    ret
+; 0x757d7
+
+INCBIN "baserom.gbc",$757d7,$757dc - $757d7
+
+CinnabarGymScript1: ; 0x757dc
+    ld a, [$d730]
+    bit 0, a
+    ret nz
+    xor a
+    ld [$cd6b], a
+    ld a, [$da38]
+    ld [$cc55], a
+    ld [$ff00+$8c], a
+    jp $2920
+; 0x757f1
+
+INCBIN "baserom.gbc",$757f1,$ae
+
+CinnabarGymTexts: ; 0x7589f
+    dw CinnabarGymText1, CinnabarGymText2, CinnabarGymText3, CinnabarGymText4, CinnabarGymText5, CinnabarGymText6, CinnabarGymText7, CinnabarGymText8, CinnabarGymText9
+;CinnabarGymText 10: ; 0x75925
+;CinnabarGymText 11: ; 0x7592a
+;CinnabarGymText 12: ; 0x75934
+
+INCBIN "baserom.gbc",$758b1,$2e
+
 CinnabarGymText1: ; 0x758df
     db $8
     ld a, [$d79a]
@@ -29775,7 +37015,9 @@
     ld [$d05c], a
     jp $58b7
 ; 0x75914
+
 INCBIN "baserom.gbc",$75914,$25
+
 CinnabarGymText2: ; 0x75939
     db $08 ; asm
     call $57a0
@@ -29794,6 +37036,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$7595f,$7596e - $7595f
+
 CinnabarGymText3: ; 0x7596e
     db $08 ; asm
     call $57a0
@@ -29812,6 +37055,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75994,$759a3 - $75994
+
 CinnabarGymText4: ; 0x759a3
     db $08 ; asm
     call $57a0
@@ -29830,6 +37074,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$759c9,$759d8 - $759c9
+
 CinnabarGymText5: ; 0x759d8
     db $08 ; asm
     call $57a0
@@ -29848,6 +37093,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$759fe,$75a0d - $759fe
+
 CinnabarGymText6: ; 0x75a0d
     db $08 ; asm
     call $57a0
@@ -29866,6 +37112,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75a33,$75a42 - $75a33
+
 CinnabarGymText7: ; 0x75a42
     db $08 ; asm
     call $57a0
@@ -29884,6 +37131,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75a68,$75a77 - $75a68
+
 CinnabarGymText8: ; 0x75a77
     db $08 ; asm
     call $57a0
@@ -29902,6 +37150,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75a9d,$75aac - $75a9d
+
 CinnabarGymText9: ; 0x75aac
     db $08 ; asm
     ld a, [$d79a]
@@ -29916,6 +37165,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75ac2,$a
+
 CinnabarGymObject: ; 0x75acc (size=90)
     db $2e ; border tile
 
@@ -29946,12 +37196,16 @@
 Lab1_h: ; 0x75b80 to 0x75b8c (12 bytes) (id=167)
     db $14 ; tileset
     db $04, $09 ; dimensions (y, x)
-    dw Lab1Blocks, $5b90, $5b8c ; blocks, texts, scripts
+    dw Lab1Blocks, Lab1Texts, Lab1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5bb3 ; objects
+    dw Lab1Object ; objects
 
-INCBIN "baserom.gbc",$75b8c,$75b90 - $75b8c
+Lab1Script: ; 0x75b8c
+    call $3c3c
+    ret
+; 0x75b90
+
 Lab1Texts: ; 0x75b90
     dw Lab1Text1, Lab1Text2, Lab1Text3, Lab1Text4, Lab1Text5
 
@@ -30007,13 +37261,18 @@
 Lab2_h: ; 0x75c15 to 0x75c21 (12 bytes) (id=168)
     db $14 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw Lab2Blocks, $5c24, $5c21 ; blocks, texts, scripts
+    dw Lab2Blocks, Lab2Texts, Lab2Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5c45 ; objects
+    dw Lab2Object ; objects
 
-INCBIN "baserom.gbc",$75c21,$75c2a - $75c21
+Lab2Script: ; 0x75c21
+    jp $3c3c
+; 0x75c24
 
+Lab2Texts: ; 0x75c24
+    dw Lab2Text1, Lab2Text2, Lab2Text3
+
 Lab2Text1: ; 0x75c2a
     TX_FAR _Lab2Text1
     db $50
@@ -30057,12 +37316,18 @@
 Lab3_h: ; 0x75c7b to 0x75c87 (12 bytes) (id=169)
     db $14 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw Lab3Blocks, $5c8a, $5c87 ; blocks, texts, scripts
+    dw Lab3Blocks, Lab3Texts, Lab3Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5cec ; objects
+    dw Lab3Object ; objects
 
-INCBIN "baserom.gbc",$75c87,$75c94 - $75c87
+Lab3Script: ; 0x75c87
+    jp $3c3c
+; 0x75c8a
+
+Lab3Texts: ; 0x75c8a
+    dw Lab3Text1, Lab3Text2, Lab3Text3, Lab3Text4, Lab3Text5
+
 Lab3Text1: ; 0x75c94
     db $08 ; asm
     ld a, [$d7a1]
@@ -30132,9 +37397,60 @@
     dw Lab4Blocks, $5d34, $5d31 ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5df0 ; objects
+    dw Lab4Object ; objects
 
-INCBIN "baserom.gbc",$75d31,$75dda - $75d31
+Lab4Script: ; 0x75d31
+    jp $3c3c
+; 0x75d34
+
+INCBIN "baserom.gbc",$75d34,$38
+
+Lab4Text1: ; 0x75d6c
+    db $8
+    ld a, [$d7a3]
+    bit 0, a
+    jr nz, .asm_75d96 ; 0x75d72 $22
+    ld hl, $5dc6
+    call PrintText
+    call $5d38
+    ld a, [$cd37]
+    and a
+    jr z, .asm_75d8d ; 0x75d81 $a
+    ld b, $18
+    ld hl, $5006
+    call Bankswitch
+    jr .asm_75d93 ; 0x75d8b $6
+.asm_75d8d
+    ld hl, $5dcb
+    call PrintText
+.asm_75d93
+    jp $24d7
+.asm_75d96
+    bit 1, a
+    jr z, .asm_75da2 ; 0x75d98 $8
+    ld hl, $5dd0
+    call PrintText
+    jr .asm_75d93 ; 0x75da0 $f1
+.asm_75da2
+    call $5de8
+    ld hl, $5dd5
+    call PrintText
+    ld hl, $d7a3
+    set 2, [hl]
+    ld a, [$d710]
+    ld b, a
+    ld c, $1e
+    call GivePokemon
+    jr nc, .asm_75d93 ; 0x75db9 $d8
+    ld hl, $d7a3
+    res 0, [hl]
+    res 1, [hl]
+    res 2, [hl]
+    jr .asm_75d93 ; 0x75dc4 $cd
+; 0x75dc6
+
+INCBIN "baserom.gbc",$75dc6,$14
+
 Lab4Text2: ; 0x75dda
     db $08 ; asm
     ld a, $3
@@ -30144,6 +37460,7 @@
     jp $24d7
 
 INCBIN "baserom.gbc",$75de8,$8
+
 Lab4Object: ; 0x75df0 (size=32)
     db $17 ; border tile
 
@@ -30167,13 +37484,19 @@
 CinnabarPokecenter_h: ; 0x75e20 to 0x75e2c (12 bytes) (id=171)
     db $06 ; tileset
     db $04, $07 ; dimensions (y, x)
-    dw $4030, $5e32, $5e2c ; blocks, texts, scripts
+    dw $4030, CinnabarPokecenterTexts, CinnabarPokecenterScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e46 ; objects
+    dw CinnabarPokecenterObject ; objects
 
-INCBIN "baserom.gbc",$75e2c,$75e3b - $75e2c
+CinnabarPokecenterScript: ; 0x75e2c
+    call $22fa
+    jp $3c3c
+; 0x75e32
 
+CinnabarPokecenterTexts:
+INCBIN "baserom.gbc",$75e32,$9
+
 CinnabarPokecenterText2:
 CinnabarPokecenterText1: ; 0x75e3b
     TX_FAR _CinnabarPokecenterText1
@@ -30183,7 +37506,8 @@
     TX_FAR _CinnabarPokecenterText3
     db $50
 
-INCBIN "baserom.gbc",$75e45,$1
+CinnabarPokecenterText4:
+    db $f6
 
 CinnabarPokecenterObject: ; 0x75e46 (size=44)
     db $0 ; border tile
@@ -30207,13 +37531,18 @@
 CinnabarMart_h: ; 0x75e72 to 0x75e7e (12 bytes) (id=172)
     db $02 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4010, $5e81, $5e7e ; blocks, texts, scripts
+    dw $4010, CinnabarMartTexts, CinnabarMartScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5e91 ; objects
+    dw CinnabarMartObject ; objects
 
-INCBIN "baserom.gbc",$75e7e,$75e87 - $75e7e
+CinnabarMartScript: ; 0x75e7e
+    jp $3c3c
+; 0x75e81
 
+CinnabarMartTexts: ; 0x75e81
+    dw CinnabarMartText1, CinnabarMartText2, CinnabarMartText3
+
 CinnabarMartText2: ; 0x75e87
     TX_FAR _CinnabarMartText2
     db $50
@@ -30243,12 +37572,15 @@
 CopycatsHouseF1_h: ; 0x75eb7 to 0x75ec3 (12 bytes) (id=175)
     db $01 ; tileset
     db $04, $04 ; dimensions (y, x)
-    dw $4000, $5ec6, $5ec3 ; blocks, texts, scripts
+    dw $4000, CopycatsHouseF1Texts, CopycatsHouseF1Script ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $5ee3 ; objects
+    dw CopycatsHouseF1Object ; objects
 
-INCBIN "baserom.gbc",$75ec3,$75ec6 - $75ec3
+CopycatsHouseF1Script: ; 0x75ec3
+    jp $3c3c
+; 0x75ec6
+
 CopycatsHouseF1Texts: ; 0x75ec6
     dw CopycatsHouseF1Text1, CopycatsHouseF1Text2, CopycatsHouseF1Text3
 
@@ -30287,7 +37619,31 @@
     EVENT_DISP $4, $7, $3
     EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_2F
 
-INCBIN "baserom.gbc",$75f11,$760e0 - $75f11
+INCBIN "baserom.gbc",$75f11,$75f1d - $75f11
+
+GaryScript: ; 0x75f1d
+    call $3c3c
+    ld hl, $5f31
+    ld a, [$d64c]
+    jp $3d97
+; 0x75f29
+
+INCBIN "baserom.gbc",$75f29,$75f31 - $75f29
+
+GaryScripts: ; 0x75f31
+    dw GaryScript0
+
+INCBIN "baserom.gbc",$75f33,$14
+
+GaryScript0: ; 0x75f47
+    ret
+; 0x75f48
+
+INCBIN "baserom.gbc",$75f48,$18e
+
+GaryTexts: ; 0x760d6
+    dw GaryText1, GaryText2, GaryText3, GaryText4, GaryText5
+
 GaryText1: ; 0x760e0
     db $08 ; asm
     ld a, [$d867]
@@ -30305,7 +37661,15 @@
     TX_FAR _GaryText2
     db $50
 
-INCBIN "baserom.gbc",$7610d,$22
+GaryText3: ; 0x7610d
+INCBIN "baserom.gbc",$7610d,$76125 - $7610d
+
+GaryText4: ; 0x76125
+INCBIN "baserom.gbc",$76125,$7612a - $76125
+
+GaryText5: ; 0x7612a
+INCBIN "baserom.gbc",$7612a,$7612f - $7612a
+
 GaryObject: ; 0x7612f (size=48)
     db $3 ; border tile
 
@@ -30330,23 +37694,44 @@
 GaryBlocks: ; 16
     INCBIN "maps/gary.blk"
 
-Loreli_h: ; 0x7616f to 0x7617b (12 bytes) (id=245)
+Lorelei_h: ; 0x7616f to 0x7617b (12 bytes) (id=245)
     db $07 ; tileset
     db $06, $05 ; dimensions (y, x)
-    dw LoreliBlocks, $6251, $617b ; blocks, texts, scripts
+    dw LoreleiBlocks, LoreleiTexts, LoreleiScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6280 ; objects
+    dw LoreleiObject ; objects
 
-INCBIN "baserom.gbc",$7617b,$76262 - $7617b
-LoreliText1: ; 0x76262
+LoreleiScript: ; 0x7617b
+    call $6191
+    call $3c3c
+    ld hl, $6255
+    ld de, $61bb
+    ld a, [$d64d]
+    call $3160
+    ld [$d64d], a
+    ret
+; 0x76191
+
+INCBIN "baserom.gbc",$76191,$c0
+
+LoreleiTexts: ; 0x76251
+    dw LoreleiText1, LoreleiText2
+
+INCBIN "baserom.gbc",$76255,$d
+
+LoreleiText1: ; 0x76262
     db $08 ; asm
     ld hl, $6255
     call LoadTrainerHeader
     jp $24d7
 
-INCBIN "baserom.gbc",$7626c,$14
-LoreliObject: ; 0x76280 (size=44)
+INCBIN "baserom.gbc",$7626c,$7627b - $7626c
+
+LoreleiText2: ; 0x7627b
+INCBIN "baserom.gbc",$7627b,$76280 - $7627b
+
+LoreleiObject: ; 0x76280 (size=44)
     db $3 ; border tile
 
     db $4 ; warps
@@ -30366,18 +37751,35 @@
     EVENT_DISP $5, $0, $4 ; BRUNOS_ROOM
     EVENT_DISP $5, $0, $5 ; BRUNOS_ROOM
 
-LoreliBlocks: ; 30
+LoreleiBlocks: ; 30
     INCBIN "maps/loreli.blk"
 
 Bruno_h: ; 0x762ca to 0x762d6 (12 bytes) (id=246)
     db $07 ; tileset
     db $06, $05 ; dimensions (y, x)
-    dw BrunoBlocks, $63a8, $62d6 ; blocks, texts, scripts
+    dw BrunoBlocks, BrunoTexts, BrunoScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $63d7 ; objects
+    dw BrunoObject ; objects
 
-INCBIN "baserom.gbc",$762d6,$763b9 - $762d6
+BrunoScript: ; 0x762d6
+    call $62ec
+    call $3c3c
+    ld hl, $63ac
+    ld de, $6312
+    ld a, [$d64e]
+    call $3160
+    ld [$d64e], a
+    ret
+; 0x762ec
+
+INCBIN "baserom.gbc",$762ec,$bc
+
+BrunoTexts: ; 0x763a8
+    dw BrunoText1, BrunoText2
+
+INCBIN "baserom.gbc",$763ac,$d
+
 BrunoText1: ; 0x763b9
     db $08 ; asm
     ld hl, $63ac
@@ -30384,7 +37786,11 @@
     call LoadTrainerHeader
     jp $24d7
 
-INCBIN "baserom.gbc",$763c3,$14
+INCBIN "baserom.gbc",$763c3,$763d2 - $763c3
+
+BrunoText2: ; 0x763d2
+INCBIN "baserom.gbc",$763d2,5
+
 BrunoObject: ; 0x763d7 (size=44)
     db $3 ; border tile
 
@@ -30411,12 +37817,29 @@
 Agatha_h: ; 0x76421 to 0x7642d (12 bytes) (id=247)
     db $0f ; tileset
     db $06, $05 ; dimensions (y, x)
-    dw AgathaBlocks, $6505, $642d ; blocks, texts, scripts
+    dw AgathaBlocks, AgathaTexts, AgathaScript ; blocks, texts, scripts
     db $00 ; connections
 
-    dw $6534 ; objects
+    dw AgathaObject ; objects
 
-INCBIN "baserom.gbc",$7642d,$76516 - $7642d
+AgathaScript: ; 0x7642d
+    call $6443
+    call $3c3c
+    ld hl, $6509
+    ld de, $6469
+    ld a, [$d64f]
+    call $3160
+    ld [$d64f], a
+    ret
+; 0x76443
+
+INCBIN "baserom.gbc",$76443,$c2
+
+AgathaTexts: ; 0x76505
+    dw AgathaText1, AgathaText2
+
+INCBIN "baserom.gbc",$76509,$d
+
 AgathaText1: ; 0x76516
     db $08 ; asm
     ld hl, $6509
@@ -30423,7 +37846,11 @@
     call LoadTrainerHeader
     jp $24d7
 
-INCBIN "baserom.gbc",$76520,$14
+INCBIN "baserom.gbc",$76520,$f
+
+AgathaText2: ; 0x7652f
+INCBIN "baserom.gbc",$7652f,5
+
 AgathaObject: ; 0x76534 (size=44)
     db $0 ; border tile
 
@@ -30446,9 +37873,11 @@
 
 AgathaBlocks: ; 30
     INCBIN "maps/agatha.blk"
+
 INCBIN "baserom.gbc",$7657e,$1a82
 
 SECTION "bank1E",DATA,BANK[$1E]
+
 INCBIN "baserom.gbc",$78000,$F1
 
 PlayAnimation: ; 40F1
@@ -30634,6 +38063,7 @@
 	dw $4DDB,$4DE3,$4DEB,$4DF0,$4DF6,$4DFE
 
 INCBIN "baserom.gbc",$78DDB,$78E53-$78DDB
+
 RealPlayAnimation: ; 4E53
 	ld a,[$CF07] ; get animation # − 1
 	cp a,$FF
@@ -31109,9 +38539,11 @@
 INCBIN "baserom.gbc",$7B068,$7C000 - $7B068
 
 SECTION "bank1F",DATA,BANK[$1F]
+
 INCBIN "baserom.gbc",$7C000,$4000
 
 SECTION "bank20",DATA,BANK[$20]
+
 INCBIN "baserom.gbc",$80000,$800b1 - $80000
 
 _VictoryRoad3Text10:
@@ -32038,6 +39470,7 @@
 INCBIN "baserom.gbc",$8e8ee,$1712
 
 SECTION "bank24",DATA,BANK[$24]
+
 INCBIN "baserom.gbc",$90000,$9008f - $90000
 
 _Route11Text11: ; 0x9008f
@@ -32183,6 +39616,7 @@
 INCBIN "baserom.gbc",$92721,$18df
 
 SECTION "bank25",DATA,BANK[$25]
+
 INCBIN "baserom.gbc",$94000,$945d3 - $94000
 
 _Route25Text11: ; 0x945d3
@@ -32999,6 +40433,7 @@
 INCBIN "baserom.gbc",$9e6e4,$191c
 
 SECTION "bank28",DATA,BANK[$28]
+
 INCBIN "baserom.gbc",$a0000,$a05a1 - $a0000
 
 _FuchsiaMeetingRoomText1: ; 0xa05a1