diff options
-rw-r--r-- | constants.asm | 22 | ||||
-rw-r--r-- | extras/analyze_incbins.py | 11 | ||||
-rw-r--r-- | extras/analyze_texts.py | 154 | ||||
-rw-r--r-- | extras/extract_maps.py | 10 | ||||
-rw-r--r-- | extras/gbz80disasm.py | 792 | ||||
-rw-r--r-- | extras/insert_texts.py | 321 | ||||
-rw-r--r-- | extras/pretty_map_headers.py | 2 | ||||
-rw-r--r-- | extras/romviz.py | 55 | ||||
-rw-r--r-- | maps/lavendertown.blk (renamed from maps/lavendartown.blk) | 0 | ||||
-rw-r--r-- | pokered.asm | 9021 |
10 files changed, 9359 insertions, 1029 deletions
diff --git a/constants.asm b/constants.asm index f5e5a67a..dafee50e 100644 --- a/constants.asm +++ b/constants.asm @@ -82,6 +82,8 @@ TX_FAR: MACRO ; wram locations W_AICOUNT EQU $CCDF ; number of times remaining that AI action can occur +W_WHICHTRADE EQU $CD3D ; which entry from TradeMons to select + W_OPPONENTHP EQU $CFE6 ; active opponent's hp (16 bits) W_OPPONENTNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5) W_OPPONENTSTATUS EQU $CFE9 ; active opponent's status condition @@ -240,7 +242,7 @@ KADABRA EQU $26 GRAVELER EQU $27 CHANSEY EQU $28 MACHOKE EQU $29 -MR__MIME EQU $2A +MR_MIME EQU $2A HITMONLEE EQU $2B HITMONCHAN EQU $2C ARBOK EQU $2D @@ -526,7 +528,7 @@ DEX_GOLDEEN EQU 118 DEX_SEAKING EQU 119 DEX_STARYU EQU 120 DEX_STARMIE EQU 121 -DEX_MR__MIME EQU 122 +DEX_MR_MIME EQU 122 DEX_SCYTHER EQU 123 DEX_JYNX EQU 124 DEX_ELECTABUZZ EQU 125 @@ -608,7 +610,7 @@ X_ACCURACY EQU $2E LEAF_STONE EQU $2F CARD_KEY EQU $30 NUGGET EQU $31 -PP_UP EQU $32 +;PP_UP EQU $32 POKE_DOLL EQU $33 FULL_HEAL EQU $34 REVIVE EQU $35 @@ -628,7 +630,7 @@ X_DEFEND EQU $42 X_SPEED EQU $43 X_SPECIAL EQU $44 COIN_CASE EQU $45 -OAK_S_PARCEL EQU $46 +OAKS_PARCEL EQU $46 ITEMFINDER EQU $47 SILPH_SCOPE EQU $48 POKE_FLUTE EQU $49 @@ -638,7 +640,7 @@ OLD_ROD EQU $4C GOOD_ROD EQU $4D SUPER_ROD EQU $4E ; XXX todo: compare this to $32 -;PP_UP EQU $4F +PP_UP EQU $4F ETHER EQU $50 MAX_ETHER EQU $51 ELIXER EQU $52 @@ -1043,8 +1045,8 @@ CELADON_MART_1 EQU $7A CELADON_MART_2 EQU $7B CELADON_MART_3 EQU $7C CELADON_MART_4 EQU $7D -CELADON_MART_5 EQU $7E -CELADON_MART_6 EQU $7F +CELADON_MART_ROOF EQU $7E +CELADON_MART_ELEVATOR EQU $7F CELADON_MANSION_1 EQU $80 CELADON_MANSION_2 EQU $81 CELADON_MANSION_3 EQU $82 @@ -1053,11 +1055,11 @@ CELADON_MANSION_5 EQU $84 CELADON_POKECENTER EQU $85 CELADON_GYM EQU $86 GAME_CORNER EQU $87 -CELADON_HOUSE EQU $88 +CELADON_MART_5 EQU $88 CELADONPRIZE_ROOM EQU $89 CELADON_DINER EQU $8A -CELADON_HOUSE_2 EQU $8B -CELADONHOTEL EQU $8C +CELADON_HOUSE EQU $8B +CELADON_HOTEL EQU $8C LAVENDER_POKECENTER EQU $8D POKEMONTOWER_1 EQU $8E POKEMONTOWER_2 EQU $8F diff --git a/extras/analyze_incbins.py b/extras/analyze_incbins.py index 4bc82c63..4d0c3fce 100644 --- a/extras/analyze_incbins.py +++ b/extras/analyze_incbins.py @@ -34,6 +34,7 @@ def isolate_incbins(): incbin_lines = [] for line in asm: if line == "": continue + if line.count(" ") == len(line): continue #clean up whitespace at beginning of line while line[0] == " ": @@ -213,7 +214,7 @@ def reset_incbins(): isolate_incbins() process_incbins() -def apply_diff(diff): +def apply_diff(diff, try_fixing=True): print "... Applying diff." #write the diff to a file @@ -222,13 +223,19 @@ def apply_diff(diff): fh.close() #apply the patch + os.system("cp ../pokered.asm ../pokered1.asm") os.system("patch ../pokered.asm temp.patch") #remove the patch os.system("rm temp.patch") #confirm it's working - subprocess.check_call("cd ../; make clean; LC_CTYPE=UTF-8 make", shell=True) + try: + subprocess.check_call("cd ../; make clean; LC_CTYPE=UTF-8 make", shell=True) + except Exception, exc: + if try_fixing: + os.system("mv ../pokered1.asm ../pokered.asm") + return False if __name__ == "__main__": #load map headers diff --git a/extras/analyze_texts.py b/extras/analyze_texts.py index 9d2ce8bf..4d089975 100644 --- a/extras/analyze_texts.py +++ b/extras/analyze_texts.py @@ -3,7 +3,10 @@ #date: 2012-01-06 #analyze texts, how many commands are unknown? import extract_maps -from pretty_map_headers import map_name_cleaner +import analyze_incbins #for asm +try: + from pretty_map_headers import map_name_cleaner, txt_bytes, spacing, constant_abbreviation_bytes +except Exception, exc: pass from operator import itemgetter import sys debug = False #set to True to increase logging output @@ -203,6 +206,11 @@ def parse_text_script(text_pointer, text_id, map_id, txfar=False): #07 = shift texts 1 row above (2nd line becomes 1st line); address for next text = 2nd line. [07] command = {"type": command_byte, "start_address": offset, "end_address": offset} offset += 1 + elif command_byte == 0x8: + #08 = asm until whenever + command = {"type": command_byte, "start_address": offset, "end_address": offset} + offset += 1 + end = True elif command_byte == 0x9: #09 = write hex-to-dec number from RAM to textbox [09][2-byte RAM address][byte bbbbcccc] # bbbb = how many bytes to read (read number is big-endian) @@ -303,8 +311,6 @@ def parse_text_script(text_pointer, text_id, map_id, txfar=False): #FF = change music to a specific song that i don't know the name of command = {"type": command_byte, "start_address": offset, "end_address": offset} offset += 1 - elif command_byte == 0x8: #not ready to process asm - end = True else: #if len(commands) > 0: # print "Unknown text command " + hex(command_byte) + " at " + hex(offset) + ", script began with " + hex(commands[0]["type"]) @@ -362,6 +368,141 @@ def analyze_texts(): extract_maps.map_headers[map_id]["texts"] = map2["texts"] return texts +def find_missing_08s(all_texts): + """determines which $08s have yet to be inserted + based on their start addresses""" + missing_08s = 0 + for map_id in all_texts.keys(): + for text_id in all_texts[map_id].keys(): + for line_id in all_texts[map_id][text_id].keys(): + if not line_id == 0: + current_line = all_texts[map_id][text_id][line_id] + if "type" in current_line.keys(): + if current_line["type"] == 0x8: + missing_08s += 1 + print "missing $08 on map_id=" + str(map_id) + " text_id=" + str(text_id) + " line_id=" + str(line_id) + " at " + hex(current_line["start_address"]) + return missing_08s + +def text_pretty_printer_at(start_address, label="SomeLabel"): + commands = parse_text_script(start_address, None, None) + + 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" + + lines = commands[wanted_command]["lines"] + + #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 + + #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 + +def is_label_in_asm(label): + for line in analyze_incbins.asm: + if label in line: + if line[0:len(label)] == label: + return True + return False + +def find_undone_texts(): + usable_table = {} + if analyze_incbins.asm == None: + analyze_incbins.load_asm() + + for map_id in extract_maps.map_headers: + #skip bad maps + if map_id in extract_maps.bad_maps: continue + + map2 = extract_maps.map_headers[map_id] + name = map_name_cleaner(map2["name"], None)[:-2] + "Text" + + for text_id in map2["referenced_texts"]: + label = name + str(text_id) + + if len(extract_maps.map_headers[map_id]["texts"][text_id].keys()) == 0: continue + if len(extract_maps.map_headers[map_id]["texts"][text_id][0].keys()) == 0: continue + + try: + address = extract_maps.map_headers[map_id]["texts"][text_id][0]["start_address"] + except: + address = extract_maps.map_headers[map_id]["texts"][text_id][1]["start_address"] + + if not is_label_in_asm(label): + print label + " map_id=" + str(map_id) + " text_id=" + str(text_id) + " at " + hex(address) + " byte is: " + hex(ord(extract_maps.rom[address])) + if not address in usable_table.keys(): + usable_table[address] = 1 + else: + usable_table[address] += 1 + + print "\n\n which ones are priority?" + sorted_results = sorted(usable_table.iteritems(), key=itemgetter(1), reverse=True) + for result in sorted_results: + print str(result[1]) + " times: " + hex(result[0]) + if __name__ == "__main__": extract_maps.load_rom() extract_maps.load_map_pointers() @@ -369,6 +510,8 @@ if __name__ == "__main__": text_output = analyze_texts() #print text_output + missing_08s = find_missing_08s(text_output) + print "\n\n---- stats ----\n\n" popular_text_commands = sorted(totals.iteritems(), key=itemgetter(1), reverse=True) @@ -379,3 +522,8 @@ if __name__ == "__main__": print "total text commands: " + str(total_text_commands) print "total text scripts: " + str(should_be_total) + print "missing 08s: " + str(missing_08s) + print "\n\n" + + #text_pretty_printer_at(0x800b1) + find_undone_texts() diff --git a/extras/extract_maps.py b/extras/extract_maps.py index f434ce9d..a1394e97 100644 --- a/extras/extract_maps.py +++ b/extras/extract_maps.py @@ -27,7 +27,7 @@ maps = { 0x01: "Viridian City", 0x02: "Pewter City", 0x03: "Cerulean City", - 0x04: "Lavendar Town", #?? + 0x04: "Lavender Town", #?? 0x05: "Vermilion City", #correct 0x06: "Celadon City", 0x07: "Fuchsia City", @@ -149,8 +149,8 @@ maps = { 0x7B: "Celadon Mart (2)", 0x7C: "Celadon Mart (3)", 0x7D: "Celadon Mart (4)", - 0x7E: "Celadon Mart (5)", - 0x7F: "Celadon Mart (6)", + 0x7E: "Celadon Mart Roof", + 0x7F: "Celadon Mart Elevator", 0x80: "Celadon Mansion (1)", 0x81: "Celadon Mansion (2)", 0x82: "Celadon Mansion (3)", @@ -159,10 +159,10 @@ maps = { 0x85: "Celadon Pokecenter", 0x86: "Celadon Gym", 0x87: "Celadon Game Corner", - 0x88: "Celadon House", + 0x88: "Celadon Mart 5", 0x89: "Celadon Prize Room", 0x8A: "Celadon Diner", - 0x8B: "Celadon House (2)", + 0x8B: "Celadon House", 0x8C: "Celadon Hotel", 0x8D: "Lavender Pokecenter", 0x8E: "Pokemon Tower (1)", diff --git a/extras/gbz80disasm.py b/extras/gbz80disasm.py new file mode 100644 index 00000000..555013c3 --- /dev/null +++ b/extras/gbz80disasm.py @@ -0,0 +1,792 @@ +#!/usr/bin/python +#author: Bryan Bishop <kanzure@gmail.com> +#date: 2012-01-09 +import extract_maps +from copy import copy, deepcopy +from pretty_map_headers import random_hash, map_name_cleaner +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 ], +# [ "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 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 ], +] + +#find conflicts +conflict_table = {} +for line in temp_opt_table: + if line[1] in conflict_table.keys(): + print "CONFLICT: " + line[0] + " ($" + hex(line[1])[2:] + ") .... " + conflict_table[line[1]] + else: + conflict_table[line[1]] = line[0] + +#construct real opt_table +opt_table = {} +for line in temp_opt_table: + opt_table[line[1]] = [line[0], line[2]] +del temp_opt_table +del line + +end_08_scripts_with = [ +0xe9, #jp hl +#0xc3, #jp +##0x18, #jr +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_unconditional_jumps = [0xc3, 0x18] + +#TODO: replace call and a pointer with call and a label +call_commands = [0xdc, 0xd4, 0xc4, 0xcc, 0xcd] + +asm_commands = { + "3c49": "PrintText", + "35d6": "Bankswitch", + "3927": "AddPokemonToParty", + "3e48": "GivePokemon", + "3dd7": "Delay3", + "3e2e": "GiveItem", + "2f9e": "GetMonName", + "3e6d": "Predef", #library of pre-defined asm routines + "00b5": "CopyData", + "2ff3": "GetMachineName", +} + +def random_asm_label(): + return ".ASM_" + random_hash() + +def output_bank_opcodes(original_offset, max_byte_count=0x4000): + #fs = current_address + #b = bank_byte + #in = input_data -- extract_maps.rom + #bank_size = byte_count + #i = offset + #ad = end_address + #a, oa = current_byte_number + + 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: + current_byte = ord(extract_maps.rom[offset]) + is_data = False + maybe_byte = current_byte + + #first check if this byte already has a label + #if it does, use the label + #if not, generate a new label + if offset in byte_labels.keys(): + line_label = byte_labels[offset]["name"] + byte_labels[offset]["usage"] += 1 + else: + line_label = random_asm_label() + byte_labels[offset] = {} + byte_labels[offset]["name"] = line_label + byte_labels[offset]["usage"] = 0 + output += line_label.lower() + " ; " + hex(offset) + "\n" + + #find out if there's a two byte key like this + temp_maybe = maybe_byte + temp_maybe += ( ord(rom[offset+1]) << 8) + if temp_maybe in opt_table.keys(): + 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 + offset += 1 + if "?" in opstr: + 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 + offset += 2 + + output += spacing + opstr #+ " ; " + hex(offset) + output += "\n" + + current_byte_number += 2 + offset += 2 + elif maybe_byte in opt_table.keys(): + 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: + op_str = op_code[0].lower() + + 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: + oplen = len(op_code[0]) + opstr = copy(op_code[0]) + xes = op_code[0].count("x") + include_comment = False + for x in range(0, xes): + insertion = ord(rom[offset + 1]) + insertion = "$" + hex(insertion)[2:] + + 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]) + 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() + byte_labels[target_address] = {} + byte_labels[target_address]["name"] = line_label2 + byte_labels[target_address]["usage"] = 1 + + insertion = line_label2.lower() + include_comment = True + + opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower() + output += spacing + opstr + if include_comment: + output += " ; " + hex(offset) + if current_byte in relative_jumps: + output += " $" + hex(ord(rom[offset + 1]))[2:] + output += "\n" + + current_byte_number += 1 + offset += 1 + insertion = "" + + current_byte_number += 1 + offset += 1 + include_comment = False + elif op_code_type == 2 and ord(rom[offset]) == op_code_byte: + oplen = len(op_code[0]) + opstr = copy(op_code[0]) + qes = op_code[0].count("?") + for x in range(0, qes): + byte1 = ord(rom[offset + 1]) + byte2 = ord(rom[offset + 2]) + + number = byte1 + number += byte2 << 8; + + insertion = "$%.4x" % (number) + 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" + + current_byte_number += 2 + offset += 2 + + current_byte_number += 1 + offset += 1 + + #duck out if this is jp $24d7 + if current_byte == 0xc3 or current_byte in relative_unconditional_jumps: + #if number == 0x24d7: #jp + if not has_outstanding_labels(byte_labels): + keep_reading = False + is_data = False + break + else: + 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): + keep_reading = False + is_data = False #cleanup + break + else: +# if is_data and keep_reading: + output += spacing + "db $" + hex(ord(rom[offset]))[2:] #+ " ; " + hex(offset) + output += "\n" + offset += 1 + current_byte_number += 1 + #else the while loop would have spit out the opcode + + #these two are done prior + #offset += 1 + #current_byte_number += 1 + + #clean up unused labels + for label_line in byte_labels.keys(): + address = label_line + label_line = byte_labels[label_line] + if label_line["usage"] == 0: + output = output.replace((label_line["name"] + " ; " + hex(address) + "\n").lower(), "") + + #add the offset of the final location + output += "; " + hex(offset) + + return (output, offset) + +def has_outstanding_labels(byte_labels): + """ + if a label is used once, it means it has to be called or specified later + """ + for label_line in byte_labels.keys(): + real_line = byte_labels[label_line] + if real_line["usage"] == 1: return True + return False + +def text_asm_pretty_printer(label, address_of_08, include_08=True): + """returns (output, end_address)""" + output = label + ": ; " + hex(address_of_08) + "\n" + if include_08: + output += spacing + "db $08 ; asm\n" + results = output_bank_opcodes(address_of_08 + 1) + else: + results = output_bank_opcodes(address_of_08) + output += results[0] + end_address = results[1] + + return (output, end_address) + +if __name__ == "__main__": + extract_maps.load_rom() + extract_maps.load_map_pointers() + extract_maps.read_all_map_headers() + + #0x18f96 is PalletTownText1 + #0x19B5D is BluesHouseText1 + print output_bank_opcodes(int(sys.argv[1], 16))[0] diff --git a/extras/insert_texts.py b/extras/insert_texts.py index 931d16eb..cdb09417 100644 --- a/extras/insert_texts.py +++ b/extras/insert_texts.py @@ -8,10 +8,12 @@ from pretty_map_headers import map_name_cleaner, make_text_label, map_constants, 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 import os, sys import subprocess spacing = " " tx_fars = None +failed_attempts = {} def find_tx_far_entry(map_id, text_id): for tx_far_line in tx_fars: @@ -73,7 +75,7 @@ def insert_tx_far(map_id, text_id, tx_far_line=None): print diff apply_diff(diff) -def insert_all_tx_fars(): +def insert_all_tx_far_targets(): for tx_far in tx_fars: map_id = tx_far[0] text_id = tx_far[1] @@ -94,6 +96,299 @@ def insert_all_tx_fars(): isolate_incbins() process_incbins() +def all_texts_are_tx_fars(map_id): + map2 = extract_maps.map_headers[map_id] + for text_id in map2["texts"]: + txt = map2["texts"][text_id] + if not "TX_FAR" in txt[0].keys(): return False + return True + +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 + map2 = extract_maps.map_headers[map_id] + + #pointer to the list of texts + texts_list_pointer = int(map2["texts_pointer"], 16) + + #get the label for this texts list + base_label = map_name_cleaner(map2["name"], None)[:-2] + label = base_label + "Texts" + + #make up a label for each text + text_labels = [] + text_id = 1 + for text in map2["texts"].keys(): + text_label = base_label + "Text" + str(text_id) + text_labels.append(text_label) + text_id += 1 + + output = label + ": ; " + hex(texts_list_pointer) + output += "\n" + output += spacing + "dw " + + first = True + for labela in text_labels: + if not first: + output += ", " + labela + else: + output += labela + first = False + + return output + +def insert_texts_label(map_id): + 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] + label = base_label + "Texts" + texts_pointer = int(map2["texts_pointer"], 16) + + insert_asm = texts_label_pretty_printer(map_id) + + line_number = find_incbin_to_replace_for(texts_pointer) + if line_number == None: + print "skipping texts label for map_id=" + str(map_id) + " texts_pointer=" + hex(texts_pointer) + " because the address is taken" + return + + #also do a name check + if (label + ":") in "\n".join(analyze_incbins.asm): + print "skipping texts label for map_id=" + str(map_id) + " texts_pointer=" + hex(texts_pointer) + " because the label is already used" + return + + newlines = split_incbin_line_into_three(line_number, texts_pointer, len(map2["referenced_texts"])*2 ) + + 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] = insert_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", "$") + + diff = generate_diff_insert(line_number, newlines) + print "working on map_id=" + str(map_id) + " texts_pointer=" + hex(texts_pointer) + print diff + apply_diff(diff) + +#untested as of 2012-01-07 +def insert_all_texts_labels(): + for map_id in extract_maps.map_headers.keys(): + if map_id not in extract_maps.bad_maps: + if len(extract_maps.map_headers[map_id]["referenced_texts"]) > 0: + insert_texts_label(map_id) + + reset_incbins() + analyze_incbins.reset_incbins() + asm = None + incbin_lines = [] + processed_incbins = {} + analyze_incbins.asm = None + analyze_incbins.incbin_lines = [] + analyze_incbins.processed_incbins = {} + + load_asm() + isolate_incbins() + process_incbins() + +def txt_to_tx_far_pretty_printer(address, label, target_label, include_byte=False): + output = "\n" + label + ": ; " + hex(address) + "\n" + output += spacing + "TX_FAR " + target_label + "\n" + if include_byte: + output += spacing + "db $50\n" + return output + +def insert_text_label_tx_far(map_id, text_id): + if map_id in extract_maps.bad_maps: + print "bad map id=" + str(map_id) + return + map2 = extract_maps.map_headers[map_id] + if map2["texts"][text_id] == {0: {}}: return None + + base_label = map_name_cleaner(map2["name"], None)[:-2] + label = base_label + "Text" + str(text_id) + target_label = "_" + label + start_address = map2["texts"][text_id][0]["start_address"] + if 0x4000 <= start_address <= 0x7fff: + start_address = extract_maps.calculate_pointer(start_address, int(map2["bank"],16)) + include_byte = False + print map2["texts"][text_id] + if "type" in map2["texts"][text_id][1].keys(): + if map2["texts"][text_id][1]["type"] == 0x50: + include_byte = True + tx_far_asm = txt_to_tx_far_pretty_printer(start_address, label, target_label, include_byte=include_byte) + + line_number = find_incbin_to_replace_for(start_address) + if line_number == None: + print "skipping text label that calls TX_FAR for map_id=" + str(map_id) + " text_id=" + hex(text_id) + " because the address is taken" + return + + #also do a name check + if 1 < ("\n".join(analyze_incbins.asm)).count(label + ":"): + print "skipping text label that calls TX_FAR for map_id=" + str(map_id) + " text_id" + hex(text_id) + " because the label is already used (" + label + ":)" + return + + extra = 0 + if include_byte: extra += 1 + newlines = split_incbin_line_into_three(line_number, start_address, 4 + extra ) + + 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] = tx_far_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", "$") + + diff = generate_diff_insert(line_number, newlines) + print "working on map_id=" + str(map_id) + " text_id=" + str(text_id) + print diff + apply_diff(diff) + +def insert_all_text_labels(): + for map_id in extract_maps.map_headers.keys(): + if map_id <= 100: continue #skip + if map_id not in extract_maps.bad_maps: + for text_id in extract_maps.map_headers[map_id]["referenced_texts"]: + insert_text_label_tx_far(map_id, text_id) + + reset_incbins() + analyze_incbins.reset_incbins() + asm = None + incbin_lines = [] + processed_incbins = {} + analyze_incbins.asm = None + analyze_incbins.incbin_lines = [] + analyze_incbins.processed_incbins = {} + + load_asm() + isolate_incbins() + process_incbins() + +#TODO: if line_id !=0 then don't include the label? +def insert_08_asm(map_id, text_id, line_id=0): + map2 = extract_maps.map_headers[map_id] + base_label = map_name_cleaner(map2["name"], None)[:-2] + label = base_label + "Text" + str(text_id) + + start_address = all_texts[map_id][text_id][line_id]["start_address"] + + (text_asm, end_address) = text_asm_pretty_printer(label, start_address) + 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 text label for a $08 on map_id=" + str(map_id) + " text_id=" + str(text_id) + " because the address is taken" + return + + #also do a name check + if 1 <= ("\n".join(analyze_incbins.asm)).count("\n" + label + ":"): + print "skipping text label for a $08 on map_id=" + str(map_id) + " text_id=" + str(text_id) + " because the label is already taken (" + label + ":)" + return + + newlines = split_incbin_line_into_three(line_number, start_address, end_address - start_address ) + + 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", "$") + + diff = generate_diff_insert(line_number, newlines) + print "working on map_id=" + str(map_id) + " text_id=" + str(text_id) + print diff + result = apply_diff(diff) + + if result == False: + failed_attempts[len(failed_attempts.keys())] = {"map_id": map_id, "text_id": text_id} + +def find_all_08s(): + all_08s = [] + for map_id in all_texts: + for text_id in all_texts[map_id].keys(): + if 0 in all_texts[map_id][text_id].keys(): + for line_id in all_texts[map_id][text_id].keys(): + if all_texts[map_id][text_id][line_id]["type"] == 0x8: + all_08s.append([map_id, text_id, line_id]) + return all_08s + +def insert_all_08s(): + all_08s = find_all_08s() + for the_08_line in all_08s: + map_id = the_08_line[0] + if map_id <= 86: continue #speed things up + text_id = the_08_line[1] + line_id = the_08_line[2] + + print "processing map_id=" + str(map_id) + " text_id=" + str(text_id) + insert_08_asm(map_id, text_id, line_id) + + #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() + +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) + + #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 + + newlines = split_incbin_line_into_three(line_number, start_address, end_address - start_address ) + + 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", "$") + + diff = generate_diff_insert(line_number, newlines) + print diff + result = apply_diff(diff, try_fixing=False) + if __name__ == "__main__": #load map headers and object data extract_maps.load_rom() @@ -111,8 +406,28 @@ if __name__ == "__main__": #insert _ViridianCityText10 #insert_tx_far(1, 10) - insert_all_tx_fars() - #just me testing a pokemart sign duplicate #insert_tx_far(3, 14) + #this is the big one + #insert_all_tx_far_targets() + + #for map_id in extract_maps.map_headers.keys(): + # if map_id not in extract_maps.bad_maps: + # if len(extract_maps.map_headers[map_id]["referenced_texts"]) > 0: + # texts_label_pretty_printer(map_id) + + #insert_texts_label(240) + #insert_all_texts_labels() + + #insert_text_label_tx_far(240, 1) + #insert_all_text_labels() + + #insert_08_asm(83, 1) + #insert_all_08s() + + insert_asm(0x19926, "VermilionCityText5_2") + + if len(failed_attempts) > 0: + print "-- FAILED ATTEMPTS --" + print str(failed_attempts) diff --git a/extras/pretty_map_headers.py b/extras/pretty_map_headers.py index 952d6fd2..a67d0b55 100644 --- a/extras/pretty_map_headers.py +++ b/extras/pretty_map_headers.py @@ -8,7 +8,7 @@ import extract_maps import sprite_helper import random import string -import analyze_texts #hopefully not a dependency loop +#import analyze_texts #hopefully not a dependency loop base = 16 spacing = " " diff --git a/extras/romviz.py b/extras/romviz.py new file mode 100644 index 00000000..de8eb596 --- /dev/null +++ b/extras/romviz.py @@ -0,0 +1,55 @@ +#!/usr/bin/python +#author: Bryan Bishop <kanzure@gmail.com> +#date: 2012-01-10 +#show me an image +import Image +from math import floor +import extract_maps +import analyze_incbins + +print "loading rom.." +extract_maps.load_rom() +#extract_maps.load_map_pointers() +#extract_maps.read_all_map_headers() + +print "analyzing incbins.." +analyze_incbins.load_asm() +analyze_incbins.isolate_incbins() +analyze_incbins.process_incbins() + +width = 1024 +height = 1024 + +color_table = {} +print "creating color table..." +for value in range(0, 256): + color_table[value] = (value, value, value) + +im = Image.new("RGB", (width, height)) + +print "drawing base color..." +for pos in range(0, len(extract_maps.rom)): + widthx = pos % width + heighty = floor(pos / height) + #im.putpixel((widthx, heighty), color_table[ord(extract_maps.rom[pos])]) + im.putpixel((widthx, heighty), (0, 0, 0)) + + #print "Searching for incbin... for pos= " + hex(pos) + #incbin_found = analyze_incbins.find_incbin_to_replace_for(pos) + #if incbin_found == None: + # im.putpixel((widthx, heighty), (0, 0, 0)) + #else: + # im.putpixel((widthx, heighty), (255, 255, 255)) + +print "drawing incbins..." +for incbin_key in analyze_incbins.processed_incbins: + incbin = analyze_incbins.processed_incbins[incbin_key] + start = incbin["start"] + end = incbin["end"] + + for pos in range(start, end+1): + widthx = pos % width + heighty = floor(pos / height) + im.putpixel((widthx, heighty), (255, 0, 0)) + +im.save("test.png") diff --git a/maps/lavendartown.blk b/maps/lavendertown.blk index d094f3b9..d094f3b9 100644 --- a/maps/lavendartown.blk +++ b/maps/lavendertown.blk diff --git a/pokered.asm b/pokered.asm index 0199cffc..9e929b91 100644 --- a/pokered.asm +++ b/pokered.asm @@ -105,7 +105,6 @@ CopyData: ; 00B5 jr nz,CopyData ret - SECTION "romheader",HOME[$100] nop jp Start @@ -119,7 +118,7 @@ MapHeaderPointers: ; $01AE dw ViridianCity_h ; VIRIDIAN_CITY dw PewterCity_h ; PEWTER_CITY dw CeruleanCity_h ; CERULEAN_CITY - dw LavendarTown_h ; LAVENDER_TOWN + dw LavenderTown_h ; LAVENDER_TOWN dw VermilionCity_h ; VERMILION_CITY dw CeladonCity_h ; CELADON_CITY dw FuchsiaCity_h ; FUCHSIA_CITY @@ -241,8 +240,8 @@ MapHeaderPointers: ; $01AE dw CeladonMart2_h dw CeladonMart3_h dw CeladonMart4_h - dw CeladonMart5_h - dw CeladonMart6_h + dw CeladonMartRoof_h + dw CeladonMartElevator_h dw CeladonMansion1_h dw CeladonMansion2_h dw CeladonMansion3_h @@ -251,7 +250,7 @@ MapHeaderPointers: ; $01AE dw CeladonPokecenter_h dw CeladonGym_h dw CeladonGameCorner_h - dw CeladonHouse_h + dw CeladonMart5_h dw CeladonPrizeRoom_h dw CeladonDiner_h dw CeladonHouse2_h @@ -289,7 +288,7 @@ MapHeaderPointers: ; $01AE dw CinnabarPokecenter_h dw CinnabarMart_h dw $5e72 - dw IndigoPlateauLobby_h + dw IndigoPlateauLobby_h dw CopycatsHouseF1_h dw CopycatsHouseF2_h dw FightingDojo_h @@ -1003,8 +1002,170 @@ MartInventories: ; 2442 db $FE,7,ULTRA_BALL,GREAT_BALL,FULL_RESTORE,MAX_POTION,FULL_HEAL db REVIVE,MAX_REPEL,$FF -INCBIN "baserom.gbc",$24D6,$2F9E - $24D6 -GetMonsterName: ; 2F9E +INCBIN "baserom.gbc",$24d6,$24e5 - $24d6 + +VictoryRoad3Text10: +VictoryRoad3Text9: +VictoryRoad3Text8: +VictoryRoad3Text7: +VictoryRoad2Text13: +VictoryRoad2Text12: +VictoryRoad2Text11: +SeafoamIslands1Text2: +SeafoamIslands1Text1: +SeafoamIslands5Text2: +SeafoamIslands5Text1: +SeafoamIslands4Text6: +SeafoamIslands4Text5: +SeafoamIslands4Text4: +SeafoamIslands4Text3: +SeafoamIslands4Text2: +SeafoamIslands4Text1: +SeafoamIslands3Text2: +SeafoamIslands3Text1: +SeafoamIslands2Text2: +SeafoamIslands2Text1: +FuchsiaHouse2Text3: +VictoryRoad1Text7: +VictoryRoad1Text6: ; _VictoryRoad1Text6 +VictoryRoad1Text5: ; 0x24e5 + TX_FAR _VictoryRoad1Text5 + db $50 + +SaffronCityText19: +CinnabarIslandText4: +FuchsiaCityText14: +VermilionCityText9: +LavenderTownText6: +CeruleanCityText14: +PewterCityText8: +ViridianCityText11: ; 0x24ea + TX_FAR _ViridianCityText11 + db $50 + +PewterCityText9: +CeruleanCityText15: +LavenderTownText7: +VermilionCityText10: +CeladonCityText12: +FuchsiaCityText15: +CinnabarIslandText5: +SaffronCityText23: +Route4Text4: +Route10Text8: +ViridianCityText12: ; 0x24ef + TX_FAR _ViridianCityText12 + db $50 + +Route2Text1: +Route4Text3: +Route9Text10: +Route12Text9: +Route12Text10: +Route15Text11: +Route24Text8: +Route25Text10: +ViridianGymText11: +ViridianForestText5: +ViridianForestText6: +ViridianForestText7: +MtMoon1Text8: +MtMoon1Text9: +MtMoon1Text10: +MtMoon1Text11: +MtMoon1Text12: +MtMoon1Text13: +MtMoon3Text8: +MtMoon3Text9: +PowerPlantText10: +PowerPlantText11: +PowerPlantText12: +PowerPlantText13: +PowerPlantText14: +SSAnne8Text10: +SSAnne9Text6: +SSAnne9Text9: +SSAnne10Text9: +SSAnne10Text10: +SSAnne10Text11: +VictoryRoad1Text3: +VictoryRoad1Text4: +PokemonTower3Text4: +PokemonTower4Text4: +PokemonTower4Text5: +PokemonTower4Text6: +PokemonTower5Text6: +PokemonTower6Text4: +PokemonTower6Text5: +FuchsiaHouse2Text2: +VictoryRoad2Text7: +VictoryRoad2Text8: +VictoryRoad2Text9: +VictoryRoad2Text10: +VictoryRoad3Text5: +VictoryRoad3Text6: +RocketHideout1Text6: +RocketHideout1Text7: +RocketHideout2Text2: +RocketHideout2Text3: +RocketHideout2Text4: +RocketHideout2Text5: +RocketHideout3Text3: +RocketHideout3Text4: +RocketHideout4Text5: +RocketHideout4Text6: +RocketHideout4Text7: +RocketHideout4Text8: +RocketHideout4Text9: +SilphCo3Text4: +SilphCo4Text5: +SilphCo4Text6: +SilphCo4Text7: +SilphCo5Text6: +SilphCo5Text7: +SilphCo5Text8: +SilphCo6Text9: +SilphCo6Text10: +SilphCo7Text10: +SilphCo7Text11: +Mansion3Text3: +Mansion3Text4: +Mansion4Text3: +Mansion4Text4: +Mansion4Text5: +Mansion4Text6: +Mansion4Text8: +SafariZoneEastText1: +SafariZoneEastText2: +SafariZoneEastText3: +SafariZoneEastText4: +SafariZoneNorthText1: +SafariZoneNorthText2: +SafariZoneWestText1: +SafariZoneWestText2: +SafariZoneWestText3: +SafariZoneWestText4: +SafariZoneCenterText1: +UnknownDungeon2Text1: +UnknownDungeon2Text2: +UnknownDungeon2Text3: +UnknownDungeon3Text2: +UnknownDungeon3Text3: +UnknownDungeon1Text1: +UnknownDungeon1Text2: +UnknownDungeon1Text3: +SilphCo10Text4: +SilphCo10Text5: +SilphCo10Text6: +Route2Text2: ; 0x24f4 + db $08 ; asm + ld a, $5c + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$24fd,$2f9e - $24fd + +GetMonName: ; 2F9E push hl ld a,[$ffb8] push af @@ -1113,7 +1274,70 @@ TechnicalPrefix: HiddenPrefix: db "HM" -INCBIN "baserom.gbc",$3040,$3474 - $3040 +INCBIN "baserom.gbc",$3040,$31cc - $3040 + +LoadTrainerHeader: ; 0x31cc + call $3157 + xor a + call $3193 + ld a, $2 + call $3193 + ld a, [$cc55] + ld c, a + ld b, $2 + call $31c7 + ld a, c + and a + jr z, .asm_c2964 ; 0x31e3 $8 + ld a, $6 + call $3193 + jp $3c49 +.asm_c2964 ; 0x31ed + ld a, $4 + call $3193 + call PrintText + ld a, $a + call $3193 + push de + ld a, $8 + call $3193 + pop de + call $3354 + ld hl, $d733 + set 4, [hl] + ld hl, $cd60 + bit 0, [hl] + ret nz + call $336a + ld hl, $da39 + inc [hl] + jp $325d + call $3306 + ld a, [$cf13] + cp $ff + jr nz, .asm_76c22 ; 0x3221 $8 + xor a + ld [$cf13], a + ld [$cc55], a + ret +.asm_76c22 ; 0x322b + ld hl, $d733 + set 3, [hl] + ld [$cd4f], a + xor a + ld [$cd50], a + ld a, $4c + call Predef + ld a, $f0 + ld [$cd6b], a + xor a + ldh [$b4], a + call $32cf + ld hl, $da39 + inc [hl] + ret + +INCBIN "baserom.gbc",$324c,$3474 - $324c FuncTX_F7: ; 3474 ; XXX find a better name for this function @@ -1129,6 +1353,7 @@ IsItemInBag: ; 3493 ; given an item_id in b ; set zero flag if item isn't in player's bag ; else reset zero flag +; related to Pokémon Tower and ghosts ld a,$1C call Predef ld a,b @@ -1282,7 +1507,7 @@ GetName: ; 376B dec a jr nz,.otherEntries\@ ;1 = MON_NAMES - call GetMonsterName + call GetMonName ld hl,11 add hl,de ld e,l @@ -1343,7 +1568,21 @@ GetName: ; 376B ld [$2000],a ret -INCBIN "baserom.gbc",$37DF,$3A87 - $37DF +INCBIN "baserom.gbc",$37df,$3927 - $37df + +AddPokemonToParty: ; 0x3927 + push hl + push de + push bc + ld b, $3 ; BANK(MyFunction) + ld hl, $72e5 ; MyFunction + call Bankswitch + pop bc + pop de + pop hl + ret + +INCBIN "baserom.gbc",$3936,$3A87 - $3936 AddNTimes: ; 3A87 ; add bc to hl a times @@ -1537,7 +1776,33 @@ GoPAL_SET: ; 3def ld a,$45 jp Predef -INCBIN "baserom.gbc",$3DF9,$3E5C - $3DF9 +INCBIN "baserom.gbc",$3df9,$3e2e - $3df9 + +GiveItem: ; 0x3e2e + ld a, b + ld [$d11e], a + ld [$cf91], a + ld a, c + ld [$cf96], a + ld hl, $d31d + call $2bcf + ret nc + call $2fcf + call $3826 + scf + ret + +GivePokemon: ; 0x3e48 + ld a, b + ld [$cf91], a + ld a, c + ld [$d127], a + xor a + ld [$cc49], a + ld b, $13 + ld hl, $7da5 + jp Bankswitch + GenRandom: ; 3E5C ; store a random 8-bit value in a push hl @@ -1554,6 +1819,7 @@ GenRandom: ; 3E5C Predef: ; 3E6D ; runs a predefined ASM command, where the command ID is read from $D0B7 +; $3E6D grabs the ath pointer from PredefPointers and executes it ld [$CC4E],a ; save the predef routine's ID for later @@ -2251,7 +2517,7 @@ MapHeaderBanks: ; 423D db BANK(ViridianCity_h) ; VIRIDIAN_CITY db BANK(PewterCity_h) ; PEWTER_CITY db BANK(CeruleanCity_h) ; CERULEAN_CITY - db BANK(LavendarTown_h) ; LAVENDER_TOWN + db BANK(LavenderTown_h) ; LAVENDER_TOWN db BANK(VermilionCity_h) ; VERMILION_CITY db BANK(CeladonCity_h) ; CELADON_CITY db BANK(FuchsiaCity_h) ; FUCHSIA_CITY @@ -2373,8 +2639,8 @@ MapHeaderBanks: ; 423D db BANK(CeladonMart2_h) db BANK(CeladonMart3_h) db BANK(CeladonMart4_h) - db BANK(CeladonMart5_h) - db BANK(CeladonMart6_h) + db BANK(CeladonMartRoof_h) + db BANK(CeladonMartElevator_h) db BANK(CeladonMansion1_h) db BANK(CeladonMansion2_h) db BANK(CeladonMansion3_h) @@ -2383,7 +2649,7 @@ MapHeaderBanks: ; 423D db BANK(CeladonPokecenter_h) db BANK(CeladonGym_h) db BANK(CeladonGameCorner_h) - db BANK(CeladonHouse_h) + db BANK(CeladonMart5_h) db BANK(CeladonPrizeRoom_h) db BANK(CeladonDiner_h) db BANK(CeladonHouse2_h) @@ -4689,7 +4955,7 @@ ItemUseBall: ;03:5687 xor a ld [$cc49],a call CleanLCD_OAM - call $3927 ;add mon to Party + call AddPokemonToParty ;add mon to Party jr .End\@ .sendToBox\@ ;$5907 call CleanLCD_OAM @@ -5009,11 +5275,11 @@ CeladonCityObject: ; 0x18022 (size=189) db $9, $29, $0, CELADON_POKECENTER db $1b, $c, $0, CELADON_GYM db $13, $1c, $0, GAME_CORNER - db $13, $27, $0, CELADON_HOUSE + db $13, $27, $0, CELADON_MART_5 db $13, $21, $0, CELADONPRIZE_ROOM db $1b, $1f, $0, CELADON_DINER - db $1b, $23, $0, CELADON_HOUSE_2 - db $1b, $2b, $0, CELADONHOTEL + db $1b, $23, $0, CELADON_HOUSE + db $1b, $2b, $0, CELADON_HOTEL db $9 ; signs db $f, $1b, $a ; CeladonCityText10 @@ -5046,13 +5312,11 @@ CeladonCityObject: ; 0x18022 (size=189) EVENT_DISP $19, $9, $29 ; CELADON_POKECENTER EVENT_DISP $19, $1b, $c ; CELADON_GYM EVENT_DISP $19, $13, $1c ; GAME_CORNER - EVENT_DISP $19, $13, $27 ; CELADON_HOUSE + EVENT_DISP $19, $13, $27 ; CELADON_MART_5 EVENT_DISP $19, $13, $21 ; CELADONPRIZE_ROOM EVENT_DISP $19, $1b, $1f ; CELADON_DINER - EVENT_DISP $19, $1b, $23 ; CELADON_HOUSE_2 - EVENT_DISP $19, $1b, $2b ; CELADONHOTEL - -INCBIN "baserom.gbc",$180df,$0 + EVENT_DISP $19, $1b, $23 ; CELADON_HOUSE + EVENT_DISP $19, $1b, $2b ; CELADON_HOTEL CeladonCityBlocks: ; 450 INCBIN "maps/celadoncity.blk" @@ -5168,8 +5432,6 @@ ViridianCityObject: ; 0x18384 (size=104) EVENT_DISP $14, $9, $15 ; VIRIDIAN_HOUSE EVENT_DISP $14, $7, $20 ; VIRIDIAN_GYM -INCBIN "baserom.gbc",$183ec,$0 - ViridianCityBlocks: ; 360 INCBIN "maps/viridiancity.blk" @@ -5235,7 +5497,6 @@ PewterCityObject: ; 0x18577 (size=111) EVENT_DISP $14, $1d, $7 ; PEWTER_HOUSE_2 EVENT_DISP $14, $19, $d ; PEWTER_POKECENTER - PewterCityBlocks: ; 360 INCBIN "maps/pewtercity.blk" @@ -5300,7 +5561,7 @@ CeruleanCityObject: ; 0x18786 (size=170) db $b ; people db SPRITE_BLUE, $2 + 4, $14 + 4, $ff, $d0, $1 ; person - db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, $e6, $5 ; trainer + db SPRITE_ROCKET, $8 + 4, $1e + 4, $ff, $ff, $42, ROCKET + $C8, $5 ; trainer db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $1f + 4, $ff, $d0, $3 ; person db SPRITE_BLACK_HAIR_BOY_2, $12 + 4, $f + 4, $fe, $1, $4 ; person db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $9 + 4, $fe, $2, $5 ; person @@ -5323,8 +5584,6 @@ CeruleanCityObject: ; 0x18786 (size=170) EVENT_DISP $14, $b, $9 ; CERULEAN_HOUSE_3 EVENT_DISP $14, $9, $9 ; CERULEAN_HOUSE_3 -INCBIN "baserom.gbc",$18830,$0 - CeruleanCityBlocks: ; 360 INCBIN "maps/ceruleancity.blk" @@ -5394,8 +5653,6 @@ VermilionCityObject: ; 0x189ba (size=133) EVENT_DISP $14, $d, $f ; VERMILION_HOUSE_3 EVENT_DISP $14, $3, $7 ; VERMILION_HOUSE_2 -INCBIN "baserom.gbc",$18a3f,$0 - VermilionCityBlocks: ; 360 INCBIN "maps/vermilioncity.blk" @@ -5482,8 +5739,6 @@ FuchsiaCityObject: ; 0x18bd4 (size=178) EVENT_DISP $14, $1b, $1f ; FUCHSIA_HOUSE_3 EVENT_DISP $14, $18, $1f ; FUCHSIA_HOUSE_3 -INCBIN "baserom.gbc",$18c86,$0 - FuchsiaCityBlocks: ; 360 INCBIN "maps/fuchsiacity.blk" @@ -5706,7 +5961,638 @@ PalletTownText7: ; sign by Blue’s house TX_FAR _PalletTownText7 db "@" -INCBIN "baserom.gbc",$18FF1,$1B2F-$FF1 +INCBIN "baserom.gbc",$18ff1,$19102 - $18ff1 + +ViridianCityText1: ; 0x19102 + TX_FAR _ViridianCityText1 + db $50 + +ViridianCityText2: ; 0x19107 + db $08 ; asm + ld a, [$d356] + cp $7f + ld hl, $5127 + jr z, .asm_ae9fe ; 0x19110 + ld a, [$d751] + bit 1, a + jr nz, .asm_ae9fe ; 0x19117 + ld hl, $5122 +.asm_ae9fe ; 0x1911c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$19122,$1912c - $19122 +ViridianCityText3: ; 0x1912c + db $08 ; asm + ld hl, $514d + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_6dfea ; 0x1913a + ld hl, $5157 + call PrintText + jr .asm_d611f ; 0x19142 +.asm_6dfea ; 0x19144 + ld hl, $5152 + call PrintText +.asm_d611f ; 0x1914a + jp $24d7 + +INCBIN "baserom.gbc",$1914d,$1915c - $1914d +ViridianCityText4: ; 0x1915c + db $08 ; asm + ld a, [$d74b] + bit 5, a + jr nz, .asm_83894 ; 0x19162 + ld hl, $5175 + call PrintText + jr .asm_700a6 ; 0x1916a +.asm_83894 ; 0x1916c + ld hl, $517a + call PrintText +.asm_700a6 ; 0x19172 + jp $24d7 + +INCBIN "baserom.gbc",$19175,$1917f - $19175 +ViridianCityText5: ; 0x1917f + db $08 ; asm + ld hl, $5191 + call PrintText + call $50cf + ld a, $3 + ld [$d5f4], a + jp $24d7 + +INCBIN "baserom.gbc",$19191,$19196 - $19191 +ViridianCityText6: ; 0x19196 + db $08 ; asm + ld a, [$d74c] + bit 1, a + jr nz, .asm_4e5a0 ; 0x1919c + ld hl, $51ca + call PrintText + ld bc,(TM_42 << 8) | 1 + call $3e2e + jr nc, .asm_b655e ; 0x191aa + ld hl, $51cf + call PrintText + ld hl, $d74c + set 1, [hl] + jr .asm_3c73c ; 0x191b7 +.asm_b655e ; 0x191b9 + ld hl, $51da + call PrintText + jr .asm_3c73c ; 0x191bf +.asm_4e5a0 ; 0x191c1 + ld hl, $51d5 + call PrintText +.asm_3c73c ; 0x191c7 + jp $24d7 + +INCBIN "baserom.gbc",$191ca,$191df - $191ca +ViridianCityText7: ; 0x191df + db $08 ; asm + ld hl, $520a + call PrintText + ld c, $2 + call $3739 + call $35ec + ld a, [$cc26] + and a + jr z, .asm_42f68 ; 0x191f2 + ld hl, $520f + call PrintText + ld a, $1 + ld [$d5f4], a + jr .asm_2413a ; 0x191ff +.asm_42f68 ; 0x19201 + ld hl, $5214 + call PrintText +.asm_2413a ; 0x19207 + jp $24d7 + +INCBIN "baserom.gbc",$1920a,$14 + +ViridianCityText8: ; 0x1921e + TX_FAR _ViridianCityText8 + db $50 + +ViridianCityText9: ; 0x19223 + TX_FAR _ViridianCityText9 + db $50 + +ViridianCityText10: ; 0x19228 + TX_FAR _ViridianCityText10 + db $50 + +ViridianCityText13: ; 0x1922d + TX_FAR _ViridianCityText13 + db $50 + +INCBIN "baserom.gbc",$19232,$193a7 - $19232 + +PewterCityText1: ; 0x193a7 + TX_FAR _PewterCityText1 + db $50 + +PewterCityText2: ; 0x193ac + TX_FAR _PewterCityText2 + db $50 + +PewterCityText3: ; 0x193b1 + db $08 ; asm + ld hl, $53f1 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_f46a9 ; 0x193bf + ld hl, $53f6 + call PrintText + jr .asm_ac429 ; 0x193c7 +.asm_f46a9 ; 0x193c9 + ld hl, $53fb + call PrintText + xor a + ldh [$b3], a + ldh [$b4], a + ld [$cf10], a + ld a, $2 + ld [$cc57], a + ldh a, [$b8] + ld [$cc58], a + ld a, $3 + ld [$cf13], a + call $32f4 + ld a, $1 + ld [$d5f7], a +.asm_ac429 ; 0x193ee + jp $24d7 + +INCBIN "baserom.gbc",$193f1,$19436 - $193f1 +PewterCityText5: ; 0x19436 + db $08 ; asm + ld hl, $545d + call PrintText + xor a + ldh [$b4], a + ld [$cf10], a + ld a, $3 + ld [$cc57], a + ldh a, [$b8] + ld [$cc58], a + ld a, $5 + ld [$cf13], a + call $32f4 + ld a, $4 + ld [$d5f7], a + jp $24d7 + +INCBIN "baserom.gbc",$1945d,$a + +PewterCityText6: ; 0x19467 + TX_FAR _PewterCityText6 + db $50 + +PewterCityText7: ; 0x1946c + TX_FAR _PewterCityText7 + db $50 + +PewterCityText10: ; 0x19471 + TX_FAR _PewterCityText10 + db $50 + +PewterCityText11: ; 0x19476 + TX_FAR _PewterCityText11 + db $50 + +PewterCityText12: ; 0x1947b + TX_FAR _PewterCityText12 + db $50 + +INCBIN "baserom.gbc",$19480,$1964f - $19480 +CeruleanCityText1: ; 0x1964f + db $08 ; asm + ld a, [$d75a] + bit 0, a + jr z, .asm_a89f9 ; 0x19655 + ld hl, $5677 + call PrintText + jr .asm_815c6 ; 0x1965d +.asm_a89f9 ; 0x1965f + ld hl, $5668 + call PrintText +.asm_815c6 ; 0x19665 + jp $24d7 + +INCBIN "baserom.gbc",$19668,$90 + +CeruleanCityText3: ; 0x196f8 + TX_FAR _CeruleanCityText3 + db $50 + +CeruleanCityText4: ; 0x196fd + TX_FAR _CeruleanCityText4 + db $50 + +CeruleanCityText5: ; 0x19702 + TX_FAR _CeruleanCityText5 + db $50 + +CeruleanCityText6: ; 0x19707 + TX_FAR _CeruleanCityText6 + db $50 + +CeruleanCityText7: ; 0x1970c + db $08 ; asm + ldh a, [$d3] + cp $b4 + jr c, .asm_e9fc9 ; 0x19711 + ld hl, $5730 + call PrintText + jr .asm_d486e ; 0x19719 +.asm_e9fc9 ; 0x1971b + cp $64 + jr c, .asm_df99b ; 0x1971d + ld hl, $5735 + call PrintText + jr .asm_d486e ; 0x19725 +.asm_df99b ; 0x19727 + ld hl, $573a + call PrintText +.asm_d486e ; 0x1972d + jp $24d7 + +INCBIN "baserom.gbc",$19730,$1973f - $19730 +CeruleanCityText8: ; 0x1973f + db $08 ; asm + ldh a, [$d3] + cp $b4 + jr c, .asm_e28da ; 0x19744 + ld hl, $576f + call PrintText + jr .asm_f2f38 ; 0x1974c +.asm_e28da ; 0x1974e + cp $78 + jr c, .asm_15d08 ; 0x19750 + ld hl, $5774 + call PrintText + jr .asm_f2f38 ; 0x19758 +.asm_15d08 ; 0x1975a + cp $3c + jr c, .asm_d7fea ; 0x1975c + ld hl, $5779 + call PrintText + jr .asm_f2f38 ; 0x19764 +.asm_d7fea ; 0x19766 + ld hl, $577e + call PrintText +.asm_f2f38 ; 0x1976c + jp $24d7 + +INCBIN "baserom.gbc",$1976f,$14 + +CeruleanCityText9: ; 0x19783 + TX_FAR _CeruleanCityText9 + db $50 + +CeruleanCityText10: ; 0x19788 + TX_FAR _CeruleanCityText10 + db $50 + +CeruleanCityText12: ; 0x1978d + TX_FAR _CeruleanCityText12 + db $50 + +CeruleanCityText13: ; 0x19792 + TX_FAR _CeruleanCityText13 + db $50 + +CeruleanCityText16: ; 0x19797 + TX_FAR _CeruleanCityText16 + db $50 + +CeruleanCityText17: ; 0x1979c + TX_FAR _CeruleanCityText17 + db $50 + +INCBIN "baserom.gbc",$197a1,$19889 - $197a1 + +VermilionCityText1: ; 0x19889 + TX_FAR _VermilionCityText1 + db $50 + +VermilionCityText2: ; 0x1988e + db $08 ; asm + ld a, [$d803] + bit 2, a + jr nz, .asm_359bd ; 0x19894 + ld hl, $58a7 + call PrintText + jr .asm_735d9 ; 0x1989c +.asm_359bd ; 0x1989e + ld hl, $58ac + call PrintText +.asm_735d9 ; 0x198a4 + jp $24d7 + +INCBIN "baserom.gbc",$198a7,$198b1 - $198a7 +VermilionCityText3: ; 0x198b1 + db $08 ; asm + ld a, [$d803] + bit 2, a + jr nz, .asm_3e0e9 ; 0x198b7 + ld a, [$c109] + cp $c + jr z, .asm_07af3 ; 0x198be + ld hl, $58ff + call $34bf + jr nc, .asm_57b73 ; 0x198c6 +.asm_07af3 ; 0x198c8 + ld hl, $5904 + call PrintText + jr .asm_79bd1 ; 0x198ce +.asm_57b73 ; 0x198d0 + ld hl, $5909 + call PrintText + ld b, $3f + ld a, $1c + call Predef + ld a, b + and a + jr nz, .asm_0419b ; 0x198df + ld hl, $5913 + call PrintText + jr .asm_79bd1 ; 0x198e7 +.asm_0419b ; 0x198e9 + ld hl, $590e + call PrintText + ld a, $4 + ld [$d62a], a + jr .asm_79bd1 ; 0x198f4 +.asm_3e0e9 ; 0x198f6 + ld hl, $5918 + call PrintText +.asm_79bd1 ; 0x198fc + jp $24d7 + +INCBIN "baserom.gbc",$198ff,$1e + +VermilionCityText4: ; 0x1991d + TX_FAR _VermilionCityText4 + db $50 + +VermilionCityText5: ; 0x19922 + TX_FAR _VermilionCityText5 + db $08 ; asm + ld a, $6a + call $13d0 + call $3748 + ld hl, $5933 + ret + +;db $17, $6b, $58, $29, $50 +INCBIN "baserom.gbc",$19933,$5 + +VermilionCityText6: ; 0x19938 + TX_FAR _VermilionCityText6 + db $50 + +VermilionCityText7: ; 0x1993d + TX_FAR _VermilionCityText7 + db $50 + +VermilionCityText8: ; 0x19942 + TX_FAR _VermilionCityText8 + db $50 + +VermilionCityText11: ; 0x19947 + TX_FAR _VermilionCityText11 + db $50 + +VermilionCityText12: ; 0x1994c + TX_FAR _VermilionCityText12 + db $50 + +VermilionCityText13: ; 0x19951 + TX_FAR _VermilionCityText13 + db $50 + +INCBIN "baserom.gbc",$19956,$1998a - $19956 + +CeladonCityText1: ; 0x1998a + TX_FAR _CeladonCityText1 + db $50 + +CeladonCityText2: ; 0x1998f + TX_FAR _CeladonCityText2 + db $50 + +CeladonCityText3: ; 0x19994 + TX_FAR _CeladonCityText3 + db $50 + +CeladonCityText4: ; 0x19999 + TX_FAR _CeladonCityText4 + db $50 + +CeladonCityText5: ; 0x1999e + db $08 ; asm + ld a, [$d777] + bit 0, a + jr nz, .asm_7053f ; 0x199a4 + ld hl, $59d2 + call PrintText + ld bc,(TM_41 << 8) | 1 + call $3e2e + jr c, .asm_890ec ; 0x199b2 + ld hl, $59e2 + call PrintText + jr .asm_c765a ; 0x199ba +.asm_890ec ; 0x199bc + ld hl, $59d7 + call PrintText + ld hl, $d777 + set 0, [hl] + jr .asm_c765a ; 0x199c7 +.asm_7053f ; 0x199c9 + ld hl, $59dd + call PrintText +.asm_c765a ; 0x199cf + jp $24d7 + +INCBIN "baserom.gbc",$199d2,$15 + +CeladonCityText6: ; 0x199e7 + TX_FAR _CeladonCityText6 + db $50 + +CeladonCityText7: ; 0x199ec + TX_FAR _CeladonCityText7 + db $08 ; asm + ld a, $6f + call $13d0 + jp $24d7 + +CeladonCityText8: ; 0x199f9 + TX_FAR _CeladonCityText8 + db $50 + +CeladonCityText9: ; 0x199fe + TX_FAR _CeladonCityText9 + db $50 + +CeladonCityText10: ; 0x19a03 + TX_FAR _CeladonCityText10 + db $50 + +CeladonCityText11: ; 0x19a08 + TX_FAR _CeladonCityText11 + db $50 + +CeladonCityText13: ; 0x19a0d + TX_FAR _CeladonCityText13 + db $50 + +CeladonCityText14: ; 0x19a12 + TX_FAR _CeladonCityText14 + db $50 + +CeladonCityText15: ; 0x19a17 + TX_FAR _CeladonCityText15 + db $50 + +CeladonCityText16: ; 0x19a1c + TX_FAR _CeladonCityText16 + db $50 + +CeladonCityText17: ; 0x19a21 + TX_FAR _CeladonCityText17 + db $50 + +CeladonCityText18: ; 0x19a26 + TX_FAR _CeladonCityText18 + db $50 + +INCBIN "baserom.gbc",$19a2b,$19a5e - $19a2b + +FuchsiaCityText1: ; 0x19a5e + TX_FAR _FuchsiaCityText1 + db $50 + +FuchsiaCityText2: ; 0x19a63 + TX_FAR _FuchsiaCityText2 + db $50 + +FuchsiaCityText3: ; 0x19a68 + TX_FAR _FuchsiaCityText3 + db $50 + +FuchsiaCityText4: ; 0x19a6d + TX_FAR _FuchsiaCityText4 + db $50 + + +FuchsiaCityText5: ; 0x19a72 +FuchsiaCityText6: +FuchsiaCityText7: +FuchsiaCityText8: +FuchsiaCityText9: +FuchsiaCityText10: ; 0x19a72 + TX_FAR _FuchsiaCityText5 + db $50 + +FuchsiaCityText11: ; 0x19a77 + TX_FAR _FuchsiaCityText11 + db $50 + +FuchsiaCityText13: ; 0x19a7c + TX_FAR _FuchsiaCityText13 + db $50 + +FuchsiaCityText16: ; 0x19a81 + TX_FAR _FuchsiaCityText16 + db $50 + +FuchsiaCityText17: ; 0x19a86 + TX_FAR _FuchsiaCityText17 + db $50 + +FuchsiaCityText18: ; 0x19a8b + TX_FAR _FuchsiaCityText18 + db $50 + +FuchsiaCityText19: ; 0x19a90 + db $08 ; asm + ld hl, $5a9f + call PrintText + ld a, $28 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19a9f,$19aa4 - $19a9f +FuchsiaCityText20: ; 0x19aa4 + db $08 ; asm + ld hl, $5ab3 + call PrintText + ld a, $6 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19ab3,$19ab8 - $19ab3 +FuchsiaCityText21: ; 0x19ab8 + db $08 ; asm + ld hl, $5ac7 + call PrintText + ld a, $2 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19ac7,$19acc - $19ac7 +FuchsiaCityText22: ; 0x19acc + db $08 ; asm + ld hl, $5adb + call PrintText + ld a, $25 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19adb,$19ae0 - $19adb +FuchsiaCityText23: ; 0x19ae0 + db $08 ; asm + ld hl, $5aef + call PrintText + ld a, $13 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$19aef,$19af4 - $19aef +FuchsiaCityText24: ; 0x19af4 + db $08 ; asm + ld a, [$d7f6] + bit 6, a + jr nz, .asm_3b4e8 ; 0x19afa + bit 7, a + jr nz, .asm_667d5 ; 0x19afe + ld hl, $5b2a + call PrintText + jr .asm_4343f ; 0x19b06 +.asm_3b4e8 ; 0x19b08 + ld hl, $5b20 + call PrintText + ld a, $62 + jr .asm_81556 ; 0x19b10 +.asm_667d5 ; 0x19b12 + ld hl, $5b25 + call PrintText + ld a, $5a +.asm_81556 ; 0x19b1a + call $349b +.asm_4343f ; 0x19b1d + jp $24d7 + +INCBIN "baserom.gbc",$19b20,$f BluesHouse_h: ; 0x19b2f db $08 ; tileset @@ -5739,7 +6625,7 @@ BluesHouseScript2: BluesHouseTexts: ; 0x19B57 dw BluesHouseText1,BluesHouseText2,BluesHouseText3 -BluesHouseText1: ; 5B5D 0x19B5D +BluesHouseText1: ; 5B5D 0x19B5D db 8 ld a,[$D74A] bit 0,a @@ -5829,7 +6715,15 @@ VermilionHouse3_h: ; 0x19c06 to 0x19c12 (12 bytes) (bank=6) (id=196) dw $5c25 ; objects -INCBIN "baserom.gbc",$19c12,$19c25 - $19c12 +INCBIN "baserom.gbc",$19c12,$19c17 - $19c12 +VermilionHouse3Text1: ; 0x19c17 + db $08 ; asm + ld a, $4 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + VermilionHouse3Object: ; 0x19c25 (size=26) db $a ; border tile @@ -5846,7 +6740,6 @@ VermilionHouse3Object: ; 0x19c25 (size=26) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - VermilionHouse3Blocks: ; 16 INCBIN "maps/vermilionhouse3.blk" @@ -5858,7 +6751,13 @@ IndigoPlateauLobby_h: ; 0x19c4f to 0x19c5b (12 bytes) (bank=6) (id=174) dw $5c95 ; objects -INCBIN "baserom.gbc",$19c5b,$19c95 - $19c5b +INCBIN "baserom.gbc",$19c5b,$19c8a - $19c5b + +IndigoPlateauLobbyText1: ; 0x19c8a + TX_FAR _IndigoPlateauLobbyText1 + +INCBIN "baserom.gbc",$19c8a+4,$19c95 - ($19c8a+4) + IndigoPlateauLobbyObject: ; 0x19c95 (size=58) db $0 ; border tile @@ -5881,7 +6780,6 @@ IndigoPlateauLobbyObject: ; 0x19c95 (size=58) EVENT_DISP $8, $b, $8 EVENT_DISP $8, $0, $8 ; LORELEIS_ROOM - IndigoPlateauLobbyBlocks: ; 48 INCBIN "maps/indigoplateaulobby.blk" @@ -5893,7 +6791,36 @@ SilphCo4_h: ; 0x19cff to 0x19d0b (12 bytes) (bank=6) (id=209) dw $5e35 ; objects -INCBIN "baserom.gbc",$19d0b,$19e35 - $19d0b +INCBIN "baserom.gbc",$19d0b,$19dd3 - $19d0b +SilphCo4Text1: ; 0x19dd3 + db $08 ; asm + ld hl, $5de0 + ld de, $5de5 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$19de0,$19dea - $19de0 +SilphCo4Text2: ; 0x19dea + db $08 ; asm + ld hl, $5dae + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$19df4,$19e03 - $19df4 +SilphCo4Text3: ; 0x19e03 + db $08 ; asm + ld hl, $5dba + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$19e0d,$19e1c - $19e0d +SilphCo4Text4: ; 0x19e1c + db $08 ; asm + ld hl, $5dc6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$19e26,$f SilphCo4Object: ; 0x19e35 (size=111) db $2e ; border tile @@ -5910,12 +6837,12 @@ SilphCo4Object: ; 0x19e35 (size=111) db $7 ; people db SPRITE_LAPRAS_GIVER, $2 + 4, $6 + 4, $ff, $ff, $1 ; person - db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, $e6, $1a ; trainer - db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, $e4, $5 ; trainer - db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, $e6, $1b ; trainer - db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, $34 ; item - db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, $36 ; item - db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, $1d ; item + db SPRITE_ROCKET, $e + 4, $9 + 4, $ff, $d3, $42, ROCKET + $C8, $1a ; trainer + db SPRITE_OAK_AIDE, $6 + 4, $e + 4, $ff, $d2, $43, SCIENTIST + $C8, $5 ; trainer + db SPRITE_ROCKET, $a + 4, $1a + 4, $ff, $d1, $44, ROCKET + $C8, $1b ; trainer + db SPRITE_BALL, $9 + 4, $3 + 4, $ff, $ff, $85, FULL_HEAL ; item + db SPRITE_BALL, $7 + 4, $4 + 4, $ff, $ff, $86, MAX_REVIVE ; item + db SPRITE_BALL, $8 + 4, $5 + 4, $ff, $ff, $87, ESCAPE_ROPE ; item ; warp-to EVENT_DISP $f, $0, $18 ; SILPH_CO_3F @@ -5926,7 +6853,6 @@ SilphCo4Object: ; 0x19e35 (size=111) EVENT_DISP $f, $f, $3 ; SILPH_CO_10F EVENT_DISP $f, $b, $11 ; SILPH_CO_10F - SilphCo4Blocks: ; 135 INCBIN "maps/silphco4.blk" @@ -5938,7 +6864,56 @@ SilphCo5_h: ; 0x19f2b to 0x19f37 (12 bytes) (bank=6) (id=210) dw $608d ; objects -INCBIN "baserom.gbc",$19f37,$1a08d - $19f37 +INCBIN "baserom.gbc",$19f37,$1a003 - $19f37 +SilphCo5Text1: ; 0x1a003 + db $08 ; asm + ld hl, $6010 + ld de, $6015 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a010,$1a01a - $1a010 +SilphCo5Text2: ; 0x1a01a + db $08 ; asm + ld hl, $5fd2 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a024,$1a033 - $1a024 +SilphCo5Text3: ; 0x1a033 + db $08 ; asm + ld hl, $5fde + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a03d,$1a04c - $1a03d +SilphCo5Text4: ; 0x1a04c + db $08 ; asm + ld hl, $5fea + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a056,$1a065 - $1a056 +SilphCo5Text5: ; 0x1a065 + db $08 ; asm + ld hl, $5ff6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a06f,$f + +SilphCo5Text9: ; 0x1a07e + TX_FAR _SilphCo5Text9 + db $50 + +SilphCo5Text10: ; 0x1a083 + TX_FAR _SilphCo5Text10 + db $50 + +SilphCo5Text11: ; 0x1a088 + TX_FAR _SilphCo5Text11 + db $50 + SilphCo5Object: ; 0x1a08d (size=137) db $2e ; border tile @@ -5955,13 +6930,13 @@ SilphCo5Object: ; 0x1a08d (size=137) db $b ; people db SPRITE_LAPRAS_GIVER, $9 + 4, $d + 4, $ff, $ff, $1 ; person - db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, $e6, $1c ; trainer - db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, $e4, $6 ; trainer - db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, $dd, $1 ; trainer - db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, $e6, $1d ; trainer - db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, $d1 ; item - db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, $24 ; item - db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, $30 ; item + db SPRITE_ROCKET, $10 + 4, $8 + 4, $ff, $d3, $42, ROCKET + $C8, $1c ; trainer + db SPRITE_OAK_AIDE, $3 + 4, $8 + 4, $ff, $d3, $43, SCIENTIST + $C8, $6 ; trainer + db SPRITE_ROCKER, $a + 4, $12 + 4, $ff, $d1, $44, JUGGLER + $C8, $1 ; trainer + db SPRITE_ROCKET, $4 + 4, $1c + 4, $ff, $d1, $45, ROCKET + $C8, $1d ; trainer + db SPRITE_BALL, $d + 4, $2 + 4, $ff, $ff, $86, TM_09 ; item + db SPRITE_BALL, $6 + 4, $4 + 4, $ff, $ff, $87, PROTEIN ; item + db SPRITE_BALL, $10 + 4, $15 + 4, $ff, $ff, $88, CARD_KEY ; item db SPRITE_CLIPBOARD, $c + 4, $16 + 4, $ff, $ff, $9 ; person db SPRITE_CLIPBOARD, $a + 4, $19 + 4, $ff, $ff, $a ; person db SPRITE_CLIPBOARD, $6 + 4, $18 + 4, $ff, $ff, $b ; person @@ -5975,7 +6950,6 @@ SilphCo5Object: ; 0x1a08d (size=137) EVENT_DISP $f, $5, $b ; SILPH_CO_3F EVENT_DISP $f, $f, $3 ; SILPH_CO_3F - SilphCo5Blocks: ; 135 INCBIN "maps/silphco5.blk" @@ -5987,7 +6961,68 @@ SilphCo6_h: ; 0x1a19d to 0x1a1a9 (12 bytes) (bank=6) (id=211) dw $62fb ; objects -INCBIN "baserom.gbc",$1a1a9,$1a2fb - $1a1a9 +INCBIN "baserom.gbc",$1a1a9,$1a23d - $1a1a9 +SilphCo6Text1: ; 0x1a23d + db $08 ; asm + ld hl, $624a + ld de, $624f + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a24a,$1a254 - $1a24a +SilphCo6Text2: ; 0x1a254 + db $08 ; asm + ld hl, $6261 + ld de, $6266 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a261,$1a26b - $1a261 +SilphCo6Text3: ; 0x1a26b + db $08 ; asm + ld hl, $6278 + ld de, $627d + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a278,$1a282 - $1a278 +SilphCo6Text4: ; 0x1a282 + db $08 ; asm + ld hl, $628f + ld de, $6294 + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a28f,$1a299 - $1a28f +SilphCo6Text5: ; 0x1a299 + db $08 ; asm + ld hl, $62a6 + ld de, $62ab + call $622f + jp $24d7 + +INCBIN "baserom.gbc",$1a2a6,$1a2b0 - $1a2a6 +SilphCo6Text6: ; 0x1a2b0 + db $08 ; asm + ld hl, $620a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a2ba,$1a2c9 - $1a2ba +SilphCo6Text7: ; 0x1a2c9 + db $08 ; asm + ld hl, $6216 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a2d3,$1a2e2 - $1a2d3 +SilphCo6Text8: ; 0x1a2e2 + db $08 ; asm + ld hl, $6222 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$1a2ec,$f SilphCo6Object: ; 0x1a2fb (size=112) db $2e ; border tile @@ -6006,11 +7041,11 @@ SilphCo6Object: ; 0x1a2fb (size=112) db SPRITE_ERIKA, $6 + 4, $15 + 4, $ff, $d0, $3 ; person db SPRITE_ERIKA, $a + 4, $b + 4, $ff, $d3, $4 ; person db SPRITE_LAPRAS_GIVER, $d + 4, $12 + 4, $ff, $d1, $5 ; person - db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, $e6, $1e ; trainer - db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, $e4, $7 ; trainer - db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, $e6, $1f ; trainer - db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, $23 ; item - db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, $2e ; item + db SPRITE_ROCKET, $3 + 4, $11 + 4, $ff, $d3, $46, ROCKET + $C8, $1e ; trainer + db SPRITE_OAK_AIDE, $8 + 4, $7 + 4, $ff, $d0, $47, SCIENTIST + $C8, $7 ; trainer + db SPRITE_ROCKET, $f + 4, $e + 4, $ff, $d2, $48, ROCKET + $C8, $1f ; trainer + db SPRITE_BALL, $c + 4, $3 + 4, $ff, $ff, $89, HP_UP ; item + db SPRITE_BALL, $f + 4, $2 + 4, $ff, $ff, $8a, X_ACCURACY ; item ; warp-to EVENT_DISP $d, $0, $10 ; SILPH_CO_7F @@ -6019,7 +7054,6 @@ SilphCo6Object: ; 0x1a2fb (size=112) EVENT_DISP $d, $3, $3 ; SILPH_CO_4F EVENT_DISP $d, $3, $17 ; SILPH_CO_2F - SilphCo6Blocks: ; 117 INCBIN "maps/silphco6.blk" @@ -6079,8 +7113,6 @@ CinnabarIslandObject: ; 0x1c022 (size=71) EVENT_DISP $a, $b, $b ; CINNABAR_POKECENTER EVENT_DISP $a, $b, $f ; CINNABAR_MART -INCBIN "baserom.gbc",$1c069,$0 - CinnabarIslandBlocks: ; 90 INCBIN "maps/cinnabarisland.blk" @@ -6128,24 +7160,18 @@ Route1Blocks: ; 180 UndergroundPathEntranceRoute8Blocks: ; 16 INCBIN "maps/undergroundpathentranceroute8.blk" -INCBIN "baserom.gbc",$1c1c0,$0 - OaksLabBlocks: ; 30 INCBIN "maps/oakslab.blk" ViridianHouseBlocks: ; 16 INCBIN "maps/viridianhouse.blk" -INCBIN "baserom.gbc",$1c1ee,$0 - SchoolBlocks: ; 16 INCBIN "maps/school.blk" CeruleanHouseTrashedBlocks: ; 16 INCBIN "maps/ceruleanhousetrashed.blk" -INCBIN "baserom.gbc",$1c20e,$0 - DiglettsCaveRoute2Blocks: ; 16 INCBIN "maps/diglettscaveroute2.blk" @@ -6341,7 +7367,60 @@ MonsterNames: ; 421E db "WEEPINBELL" db "VICTREEBEL" -INCBIN "baserom.gbc",$1C98A,$1CB02-$1C98A +INCBIN "baserom.gbc",$1c98a,$1ca96 - $1c98a + +CinnabarIslandText1: ; 0x1ca96 + TX_FAR _CinnabarIslandText1 + db $50 + +CinnabarIslandText2: ; 0x1ca9b + TX_FAR _CinnabarIslandText2 + db $50 + +CinnabarIslandText3: ; 0x1caa0 + TX_FAR _CinnabarIslandText3 + db $50 + +CinnabarIslandText6: ; 0x1caa5 + TX_FAR _CinnabarIslandText6 + db $50 + +CinnabarIslandText7: ; 0x1caaa + TX_FAR _CinnabarIslandText7 + db $50 + +INCBIN "baserom.gbc",$1caaf,$1cab8 - $1caaf +Route1Text1: ; 0x1cab8 + db $08 ; asm + ld hl, $d7bf + bit 0, [hl] + set 0, [hl] + jr nz, .asm_02840 ; 0x1cac0 + ld hl, $4ae3 + call PrintText + ld bc, (POTION << 8) | 1 + call $3e2e + jr nc, .asm_a630e ; 0x1cace + ld hl, $4ae8 + jr .asm_46d43 ; 0x1cad3 +.asm_a630e ; 0x1cad5 + ld hl, $4af3 + jr .asm_46d43 ; 0x1cad8 +.asm_02840 ; 0x1cada + ld hl, $4aee +.asm_46d43 ; 0x1cadd + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1cae3,$15 + +Route1Text2: ; 0x1caf8 + TX_FAR _Route1Text2 + db $50 + +Route1Text3: ; 0x1cafd + TX_FAR _Route1Text3 + db $50 OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40) db $05 ; tileset @@ -6351,7 +7430,133 @@ OaksLab_h: ; 0x1cb02 to 0x1cb0e (12 bytes) (bank=7) (id=40) dw $540a ; objects -INCBIN "baserom.gbc",$1cb0e,$1d40a - $1cb0e +INCBIN "baserom.gbc",$1cb0e,$1d0ce - $1cb0e +OaksLabText1: ; 0x1d0ce + db $08 ; asm + ld a, [$d74b] + bit 0, a + jr nz, .asm_6a7a2 ; 0x1d0d4 + ld hl, $50f3 + call PrintText + jr .asm_ff2ed ; 0x1d0dc +.asm_6a7a2 ; 0x1d0de + bit 2, a + jr nz, .asm_56780 ; 0x1d0e0 + ld hl, $50f8 + call PrintText + jr .asm_ff2ed ; 0x1d0e8 +.asm_56780 ; 0x1d0ea + ld hl, $50fd + call PrintText +.asm_ff2ed ; 0x1d0f0 + jp $24d7 + +INCBIN "baserom.gbc",$1d0f3,$1d248 - $1d0f3 +OaksLabText5: ; 0x1d248 + db $08 ; asm + ld a, [$d747] + bit 6, a + jr nz, .asm_50e81 ; 0x1d24e + ld hl, $d2f7 + ld b, $13 + call $2b7f + ld a, [$d11e] + cp $2 + jr c, .asm_b28b0 ; 0x1d25d + ld a, [$d74b] + bit 5, a + jr z, .asm_b28b0 ; 0x1d264 +.asm_50e81 ; 0x1d266 + ld hl, $531d + call PrintText + ld a, $1 + ld [$cc3c], a + ld a, $56 + call Predef + jp $52ed +.asm_b28b0 ; 0x1d279 + ld b,POKE_BALL + call $3493 + jr nz, .asm_17c30 ; 0x1d27e + ld a, [$d7eb] + bit 5, a + jr nz, .asm_f1adc ; 0x1d285 + ld a, [$d74b] + bit 5, a + jr nz, .asm_333a2 ; 0x1d28c + bit 3, a + jr nz, .asm_76269 ; 0x1d290 + ld a, [$d72e] + bit 3, a + jr nz, .asm_4a5e0 ; 0x1d297 + ld hl, $52f0 + call PrintText + jr .asm_0f042 ; 0x1d29f +.asm_4a5e0 ; 0x1d2a1 + ld hl, $52f5 + call PrintText + jr .asm_0f042 ; 0x1d2a7 +.asm_76269 ; 0x1d2a9 + ld b,OAKS_PARCEL + call $3493 + jr nz, .asm_a8fcf ; 0x1d2ae + ld hl, $52fa + call PrintText + jr .asm_0f042 ; 0x1d2b6 +.asm_a8fcf ; 0x1d2b8 + ld hl, $52ff + call PrintText + call $500a + ld a, $f + ld [$d5f0], a + jr .asm_0f042 ; 0x1d2c6 +.asm_333a2 ; 0x1d2c8 + ld hl, $5309 + call PrintText + jr .asm_0f042 ; 0x1d2ce +.asm_f1adc ; 0x1d2d0 + ld hl, $d74b + bit 4, [hl] + set 4, [hl] + jr nz, .asm_17c30 ; 0x1d2d7 + ld bc, (POKE_BALL << 8) | 5 + call $3e2e + ld hl, $530e + call PrintText + jr .asm_0f042 ; 0x1d2e5 +.asm_17c30 ; 0x1d2e7 + ld hl, $5318 + call PrintText +.asm_0f042 ; 0x1d2ed + jp $24d7 + +INCBIN "baserom.gbc",$1d2f0,$1d322 - $1d2f0 +OaksLabText6: ; 0x1d322 + db $08 ; asm + ld hl, $532c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d32c,$5 + +OaksLabText8: ; 0x1d331 + TX_FAR _OaksLabText8 + db $50 + +OaksLabText9: ; 0x1d336 + db $08 ; asm + ld hl, $5340 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d340,$1d3fb - $1d340 +OaksLabText10: ; 0x1d3fb + db $08 ; asm + ld hl, $5405 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d405,$5 OaksLabObject: ; 0x1d40a (size=88) db $3 ; border tile @@ -6362,7 +7567,7 @@ OaksLabObject: ; 0x1d40a (size=88) db $0 ; signs db $b ; people - db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, $e1, $1 ; trainer + db SPRITE_BLUE, $3 + 4, $4 + 4, $ff, $ff, $41, SONY1 + $C8, $1 ; trainer db SPRITE_BALL, $3 + 4, $6 + 4, $ff, $ff, $2 ; person db SPRITE_BALL, $3 + 4, $7 + 4, $ff, $ff, $3 ; person db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $4 ; person @@ -6378,7 +7583,6 @@ OaksLabObject: ; 0x1d40a (size=88) EVENT_DISP $5, $b, $4 EVENT_DISP $5, $b, $5 - ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42) db $02 ; tileset db $04, $04 ; dimensions (y, x) @@ -6387,7 +7591,25 @@ ViridianMart_h: ; 0x1d462 to 0x1d46e (12 bytes) (bank=7) (id=42) dw $550a ; objects -INCBIN "baserom.gbc",$1d46e,$1d50a - $1d46e +INCBIN "baserom.gbc",$1d46e,$1d4e0 - $1d46e +ViridianMartTexts: ; 0x1d4e0 + dw ViridianMartText1, ViridianMartText2, ViridianMartText3 +INCBIN "baserom.gbc",$1d4e6,$a + +ViridianMartText1: ; 0x1d4f0 + TX_FAR _ViridianMartText1 + db $50 + +INCBIN "baserom.gbc",$1d4f5,$1d500 - $1d4f5 + +ViridianMartText2: ; 0x1d500 + TX_FAR _ViridianMartText2 + db $50 + +ViridianMartText3: ; 0x1d505 + TX_FAR _ViridianMartText3 + db $50 + ViridianMartObject: ; 0x1d50a (size=38) db $0 ; border tile @@ -6406,7 +7628,6 @@ ViridianMartObject: ; 0x1d50a (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - ViridianMartBlocks: ; 16 INCBIN "maps/viridianmart.blk" @@ -6418,7 +7639,18 @@ School_h: ; 0x1d540 to 0x1d54c (12 bytes) (bank=7) (id=43) dw $555d ; objects -INCBIN "baserom.gbc",$1d54c,$1d55d - $1d54c +INCBIN "baserom.gbc",$1d54c,$1d54f - $1d54c +SchoolTexts: ; 0x1d54f + dw SchoolText1, SchoolText2 + +SchoolText1: ; 0x1d553 + TX_FAR _SchoolText1 + db $50 + +SchoolText2: ; 0x1d558 + TX_FAR _SchoolText2 + db $50 + SchoolObject: ; 0x1d55d (size=32) db $a ; border tile @@ -6436,7 +7668,6 @@ SchoolObject: ; 0x1d55d (size=32) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6445,7 +7676,31 @@ ViridianHouse_h: ; 0x1d57d to 0x1d589 (12 bytes) (bank=7) (id=44) dw $55bb ; objects -INCBIN "baserom.gbc",$1d589,$1d5bb - $1d589 +INCBIN "baserom.gbc",$1d589,$1d595 - $1d589 + +ViridianHouseText1: ; 0x1d595 + TX_FAR _ViridianHouseText1 + db $50 + +ViridianHouseText2: ; 0x1d59a + TX_FAR _ViridianHouseText2 + db $50 + +ViridianHouseText3: ; 0x1d59f + db $08 ; asm + ld hl, $55b1 + call PrintText + ld a,SPEAROW + call $13d0 + call $3748 + jp $24d7 + +INCBIN "baserom.gbc",$1d5b1,$5 + +ViridianHouseText4: ; 0x1d5b6 + TX_FAR _ViridianHouseText4 + db $50 + ViridianHouseObject: ; 0x1d5bb (size=44) db $a ; border tile @@ -6465,7 +7720,6 @@ ViridianHouseObject: ; 0x1d5bb (size=44) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6474,7 +7728,26 @@ PewterHouse1_h: ; 0x1d5e7 to 0x1d5f3 (12 bytes) (bank=7) (id=55) dw $5616 ; objects -INCBIN "baserom.gbc",$1d5f3,$1d616 - $1d5f3 +INCBIN "baserom.gbc",$1d5f3,$1d5f6 - $1d5f3 +PewterHouse1Texts: ; 0x1d5f6 + dw PewterHouse1Text1, PewterHouse1Text2, PewterHouse1Text3 + +PewterHouse1Text1: ; 0x1d5fc + TX_FAR _PewterHouse1Text1 + db $08 ; asm + ld a, $3 + call $13d0 + call $3748 + jp $24d7 + +PewterHouse1Text2: ; 0x1d60c + TX_FAR _PewterHouse1Text2 + db $50 + +PewterHouse1Text3: ; 0x1d611 + TX_FAR _PewterHouse1Text3 + db $50 + PewterHouse1Object: ; 0x1d616 (size=38) db $a ; border tile @@ -6493,7 +7766,6 @@ PewterHouse1Object: ; 0x1d616 (size=38) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6502,7 +7774,18 @@ PewterHouse2_h: ; 0x1d63c to 0x1d648 (12 bytes) (bank=7) (id=57) dw $5659 ; objects -INCBIN "baserom.gbc",$1d648,$1d659 - $1d648 +INCBIN "baserom.gbc",$1d648,$1d64b - $1d648 +PewterHouse2Texts: ; 0x1d64b + dw PewterHouse2Text1, PewterHouse2Text2 + +PewterHouse2Text1: ; 0x1d64f + TX_FAR _PewterHouse2Text1 + db $50 + +PewterHouse2Text2: ; 0x1d654 + TX_FAR _PewterHouse2Text2 + db $50 + PewterHouse2Object: ; 0x1d659 (size=32) db $a ; border tile @@ -6520,7 +7803,6 @@ PewterHouse2Object: ; 0x1d659 (size=32) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6529,7 +7811,33 @@ CeruleanHouseTrashed_h: ; 0x1d679 to 0x1d685 (12 bytes) (bank=7) (id=62) dw $56bf ; objects -INCBIN "baserom.gbc",$1d685,$1d6bf - $1d685 +INCBIN "baserom.gbc",$1d685,$1d68f - $1d685 +CeruleanHouseTrashedText1: ; 0x1d68f + db $08 ; asm + ld b, $e4 + ld a, $1c + call Predef + and b + jr z, .asm_f8734 ; 0x1d698 + ld hl, $56b0 + call PrintText + jr .asm_8dfe9 ; 0x1d6a0 +.asm_f8734 ; 0x1d6a2 + ld hl, $56ab + call PrintText +.asm_8dfe9 ; 0x1d6a8 + jp $24d7 + +INCBIN "baserom.gbc",$1d6ab,$a + +CeruleanHouseTrashedText2: ; 0x1d6b5 + TX_FAR _CeruleanHouseTrashedText2 + db $50 + +CeruleanHouseTrashedText3: ; 0x1d6ba + TX_FAR _CeruleanHouseTrashedText3 + db $50 + CeruleanHouseTrashedObject: ; 0x1d6bf (size=43) db $a ; border tile @@ -6550,7 +7858,6 @@ CeruleanHouseTrashedObject: ; 0x1d6bf (size=43) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $0, $3 - CeruleanHouse2_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6559,7 +7866,20 @@ CeruleanHouse2_h: ; 0x1d6ea to 0x1d6f6 (12 bytes) (bank=7) (id=63) dw $5710 ; objects -INCBIN "baserom.gbc",$1d6f6,$1d710 - $1d6f6 +INCBIN "baserom.gbc",$1d6f6,$1d6fd - $1d6f6 + +CeruleanHouse2Text1: ; 0x1d6fd + TX_FAR _CeruleanHouse2Text1 + db $50 + +CeruleanHouse2Text2: ; 0x1d702 + db $08 ; asm + ld a, $6 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + CeruleanHouse2Object: ; 0x1d710 (size=32) db $a ; border tile @@ -6577,7 +7897,6 @@ CeruleanHouse2Object: ; 0x1d710 (size=32) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66) db $15 ; tileset db $04, $04 ; dimensions (y, x) @@ -6586,7 +7905,103 @@ BikeShop_h: ; 0x1d730 to 0x1d73c (12 bytes) (bank=7) (id=66) dw $5866 ; objects -INCBIN "baserom.gbc",$1d73c,$1d866 - $1d73c +INCBIN "baserom.gbc",$1d73c,$1d745 - $1d73c +BikeShopText1: ; 0x1d745 + db $08 ; asm + ld a, [$d75f] + bit 0, a + jr z, .asm_260d4 ; 0x1d74b + ld hl, $582f + call PrintText + jp $57f5 +.asm_260d4 ; 0x1d756 + ld b,BIKE_VOUCHER + call $3493 + jr z, .asm_41190 ; 0x1d75b + ld hl, $581f + call PrintText + ld bc,(BICYCLE << 8) | 1 + call $3e2e + jr nc, .asm_d0d90 ; 0x1d769 + ld a, $2d + ldh [$db], a + ld b, $5 ; BANK(MyFunction) + ld hl, $7f37 ; MyFunction + call Bankswitch + ld hl, $d75f + set 0, [hl] + ld hl, $5824 + call PrintText + jr .asm_99ef2 ; 0x1d782 +.asm_d0d90 ; 0x1d784 + ld hl, $5834 + call PrintText + jr .asm_99ef2 ; 0x1d78a +.asm_41190 ; 0x1d78c + ld hl, $5810 + call PrintText + xor a + ld [$cc26], a + ld [$cc2a], a + ld a, $3 + ld [$cc29], a + ld a, $1 + ld [$cc28], a + ld a, $2 + ld [$cc24], a + ld a, $1 + ld [$cc25], a + ld hl, $d730 + set 6, [hl] + ld hl, $c3a0 + ld b, $4 + ld c, $f + call $1922 + call $2429 + ld hl, $c3ca + ld de, $57f8 + call $1955 + ld hl, $c3e4 + ld de, $5807 + call $1955 + ld hl, $5815 + call PrintText + call $3abe + bit 1, a + jr nz, .asm_b7579 ; 0x1d7dc + ld hl, $d730 + res 6, [hl] + ld a, [$cc26] + and a + jr nz, .asm_b7579 ; 0x1d7e7 + ld hl, $581a + call PrintText +.asm_b7579 ; 0x1d7ef + ld hl, $582a + call PrintText +.asm_99ef2 ; 0x1d7f5 + jp $24d7 + +INCBIN "baserom.gbc",$1d7f8,$1d839 - $1d7f8 +BikeShopText2: ; 0x1d839 + db $08 ; asm + ld hl, $5843 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d843,$1d848 - $1d843 +BikeShopText3: ; 0x1d848 + db $08 ; asm + ld a, [$d75f] + bit 0, a + ld hl, $5861 + jr nz, .asm_34d2d ; 0x1d851 + ld hl, $585c +.asm_34d2d ; 0x1d856 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1d85c,$a BikeShopObject: ; 0x1d866 (size=38) db $e ; border tile @@ -6605,7 +8020,6 @@ BikeShopObject: ; 0x1d866 (size=38) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - BikeShopBlocks: ; 16 INCBIN "maps/bikeshop.blk" @@ -6617,7 +8031,84 @@ LavenderHouse1_h: ; 0x1d89c to 0x1d8a8 (12 bytes) (bank=7) (id=149) dw $596a ; objects -INCBIN "baserom.gbc",$1d8a8,$1d96a - $1d8a8 +INCBIN "baserom.gbc",$1d8a8,$1d8b8 - $1d8a8 +LavenderHouse1Text1: ; 0x1d8b8 + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_72e5d ; 0x1d8be + ld hl, $58d1 + call PrintText + jr .asm_6957f ; 0x1d8c6 +.asm_72e5d ; 0x1d8c8 + ld hl, $58d6 + call PrintText +.asm_6957f ; 0x1d8ce + jp $24d7 + +INCBIN "baserom.gbc",$1d8d1,$1d8db - $1d8d1 +LavenderHouse1Text2: ; 0x1d8db + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_06470 ; 0x1d8e1 + ld hl, $58f4 + call PrintText + jr .asm_3d208 ; 0x1d8e9 +.asm_06470 ; 0x1d8eb + ld hl, $58f9 + call PrintText +.asm_3d208 ; 0x1d8f1 + jp $24d7 + +INCBIN "baserom.gbc",$1d8f4,$a + +LavenderHouse1Text3: ; 0x1d8fe + TX_FAR _LavenderHouse1Text3 + db $8 + ld a, $2f + call $13d0 + jp $24d7 + +LavenderHouse1Text4: ; 0x1d90b + TX_FAR _LavenderHouse1Text4 + db $8 + ld a, $a7 + call $13d0 + jp $24d7 +; 0x1d918 + +LavenderHouse1Text5: ; 0x1d918 + db $08 ; asm + ld a, [$d76c] + bit 0, a + jr nz, .asm_15ac2 ; 0x1d91e + ld hl, $594c + call PrintText + ld bc, (POKE_FLUTE << 8) | 1 + call $3e2e + jr nc, .asm_5ce36 ; 0x1d92c + ld hl, $5951 + call PrintText + ld hl, $d76c + set 0, [hl] + jr .asm_da749 ; 0x1d939 +.asm_5ce36 ; 0x1d93b + ld hl, $595b + call PrintText + jr .asm_da749 ; 0x1d941 +.asm_15ac2 ; 0x1d943 + ld hl, $5960 + call PrintText +.asm_da749 ; 0x1d949 + jp $24d7 + +INCBIN "baserom.gbc",$1d94c,$19 + +LavenderHouse1Text6: ; 0x1d965 + TX_FAR _LavenderHouse1Text6 + db $50 + LavenderHouse1Object: ; 0x1d96a (size=56) db $a ; border tile @@ -6639,7 +8130,6 @@ LavenderHouse1Object: ; 0x1d96a (size=56) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6648,7 +8138,31 @@ LavenderHouse2_h: ; 0x1d9a2 to 0x1d9ae (12 bytes) (bank=7) (id=151) dw $59e6 ; objects -INCBIN "baserom.gbc",$1d9ae,$1d9e6 - $1d9ae +INCBIN "baserom.gbc",$1d9ae,$1d9b6 - $1d9ae + +LavenderHouse2Text1: ; 0x1d9b6 + TX_FAR _LavenderHouse2Text1 + db $8 + ld a, $11 + call $13d0 + jp $24d7 +; 0x1d9c3 + +LavenderHouse2Text2: ; 0x1d9c3 + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_65711 ; 0x1d9c9 + ld hl, $59dc + call PrintText + jr .asm_64be1 ; 0x1d9d1 +.asm_65711 ; 0x1d9d3 + ld hl, $59e1 + call PrintText +.asm_64be1 ; 0x1d9d9 + jp $24d7 + +INCBIN "baserom.gbc",$1d9dc,$a LavenderHouse2Object: ; 0x1d9e6 (size=32) db $a ; border tile @@ -6666,7 +8180,6 @@ LavenderHouse2Object: ; 0x1d9e6 (size=32) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - NameRater_h: ; 0x1da06 to 0x1da12 (12 bytes) (bank=7) (id=229) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6692,7 +8205,6 @@ NameRaterObject: ; 0x1dad6 (size=26) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6701,7 +8213,26 @@ VermilionHouse1_h: ; 0x1daf0 to 0x1dafc (12 bytes) (bank=7) (id=93) dw $5b20 ; objects -INCBIN "baserom.gbc",$1dafc,$1db20 - $1dafc +INCBIN "baserom.gbc",$1dafc,$1db06 - $1dafc + +VermilionHouse1Text1: ; 0x1db06 + TX_FAR _VermilionHouse1Text1 + db $50 + +VermilionHouse1Text2: ; 0x1db0b + TX_FAR _VermilionHouse1Text2 + db $08 ; asm + ld a, $24 + call $13d0 + call $3748 + jp $24d7 + +VermilionHouse1Text3: ; 0x1db1b + TX_FAR _VermilionHouse1Text3 + db $50 + +INCBIN "baserom.gbc", $1db1b + 5, $1db20 - ($1db1b + 5) + VermilionHouse1Object: ; 0x1db20 (size=38) db $a ; border tile @@ -6720,7 +8251,6 @@ VermilionHouse1Object: ; 0x1db20 (size=38) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - VermilionDock_h: ; 0x1db46 to 0x1db52 (12 bytes) (bank=7) (id=94) db $0e ; tileset db $06, $0e ; dimensions (y, x) @@ -6745,7 +8275,6 @@ VermilionDockObject: ; 0x1dcc6 (size=20) EVENT_DISP $e, $0, $e EVENT_DISP $e, $2, $e ; SS_ANNE_1 - VermilionDockBlocks: ; 84 INCBIN "maps/vermiliondock.blk" @@ -6757,7 +8286,24 @@ CeladonMansion5_h: ; 0x1dd2e to 0x1dd3a (12 bytes) (bank=7) (id=132) dw $5d5c ; objects -INCBIN "baserom.gbc",$1dd3a,$1dd5c - $1dd3a +INCBIN "baserom.gbc",$1dd3a,$1dd41 - $1dd3a + +CeladonMansion5Text1: ; 0x1dd41 + TX_FAR _CeladonMansion5Text1 + db $50 + +CeladonMansion5Text2: ; 0x1dd46 + db $08 ; asm + ld bc,(EEVEE << 8) | 25 + call GivePokemon + jr nc, .asm_24365 ; 0x1dd4d + ld a, $45 + ld [$cc4d], a + ld a, $11 + call Predef +.asm_24365 ; 0x1dd59 + jp $24d7 + CeladonMansion5Object: ; 0x1dd5c (size=32) db $a ; border tile @@ -6775,7 +8321,6 @@ CeladonMansion5Object: ; 0x1dd5c (size=32) EVENT_DISP $4, $7, $2 ; CELADON_MANSION_4 EVENT_DISP $4, $7, $3 ; CELADON_MANSION_4 - FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152) db $02 ; tileset db $04, $04 ; dimensions (y, x) @@ -6784,7 +8329,16 @@ FuchsiaMart_h: ; 0x1dd7c to 0x1dd88 (12 bytes) (bank=7) (id=152) dw $5d9b ; objects -INCBIN "baserom.gbc",$1dd88,$1dd9b - $1dd88 +INCBIN "baserom.gbc",$1dd88,$1dd91 - $1dd88 + +FuchsiaMartText2: ; 0x1dd91 + TX_FAR _FuchsiaMartText2 + db $50 + +FuchsiaMartText3: ; 0x1dd96 + TX_FAR _FuchsiaMartText3 + db $50 + FuchsiaMartObject: ; 0x1dd9b (size=38) db $0 ; border tile @@ -6803,7 +8357,6 @@ FuchsiaMartObject: ; 0x1dd9b (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - FuchsiaMartBlocks: ; 16 INCBIN "maps/fuchsiamart.blk" @@ -6815,7 +8368,30 @@ SaffronHouse1_h: ; 0x1ddd1 to 0x1dddd (12 bytes) (bank=7) (id=179) dw $5e04 ; objects -INCBIN "baserom.gbc",$1dddd,$1de04 - $1dddd +INCBIN "baserom.gbc",$1dddd,$1dde0 - $1dddd +SaffronHouse1Texts: ; 0x1dde0 + dw SaffronHouse1Text1, SaffronHouse1Text2, SaffronHouse1Text3, SaffronHouse1Text4 + +SaffronHouse1Text1: ; 0x1dde8 + TX_FAR _SaffronHouse1Text1 + db $50 + +SaffronHouse1Text2: ; 0x1dded + TX_FAR _SaffronHouse1Text2 + db $8 + ld a, $24 + call $13d0 + jp $24d7 +; 0x1ddfa + +SaffronHouse1Text3: ; 0x1ddfa + TX_FAR _SaffronHouse1Text3 + db $50 + +SaffronHouse1Text4: ; 0x1ddff + TX_FAR _SaffronHouse1Text4 + db $50 + SaffronHouse1Object: ; 0x1de04 (size=44) db $a ; border tile @@ -6835,7 +8411,6 @@ SaffronHouse1Object: ; 0x1de04 (size=44) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6844,7 +8419,33 @@ SaffronHouse2_h: ; 0x1de30 to 0x1de3c (12 bytes) (bank=7) (id=183) dw $5e8a ; objects -INCBIN "baserom.gbc",$1de3c,$1de8a - $1de3c +INCBIN "baserom.gbc",$1de3c,$1de41 - $1de3c +SaffronHouse2Text1: ; 0x1de41 + db $08 ; asm + ld a, [$d7bd] + bit 0, a + jr nz, .asm_9e72b ; 0x1de47 + ld hl, $5e75 + call PrintText + ld bc,(TM_29 << 8) | 1 + call $3e2e + jr nc, .asm_4b1da ; 0x1de55 + ld hl, $5e7a + call PrintText + ld hl, $d7bd + set 0, [hl] + jr .asm_fe4e1 ; 0x1de62 +.asm_4b1da ; 0x1de64 + ld hl, $5e85 + call PrintText + jr .asm_fe4e1 ; 0x1de6a +.asm_9e72b ; 0x1de6c + ld hl, $5e80 + call PrintText +.asm_fe4e1 ; 0x1de72 + jp $24d7 + +INCBIN "baserom.gbc",$1de75,$15 SaffronHouse2Object: ; 0x1de8a (size=26) db $a ; border tile @@ -6861,7 +8462,6 @@ SaffronHouse2Object: ; 0x1de8a (size=26) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46) db $11 ; tileset db $04, $04 ; dimensions (y, x) @@ -6870,7 +8470,14 @@ DiglettsCaveRoute2_h: ; 0x1dea4 to 0x1deb0 (12 bytes) (bank=7) (id=46) dw $5ebf ; objects -INCBIN "baserom.gbc",$1deb0,$1debf - $1deb0 +INCBIN "baserom.gbc",$1deb0,$1deb8 - $1deb0 +DiglettsCaveRoute2Texts: ; 0x1deb8 + dw DiglettsCaveRoute2Text1 + +DiglettsCaveRoute2Text1: ; 0x1deba + TX_FAR _DiglettsCaveRoute2Text1 + db $50 + DiglettsCaveRoute2Object: ; 0x1debf (size=34) db $7d ; border tile @@ -6889,7 +8496,6 @@ DiglettsCaveRoute2Object: ; 0x1debf (size=34) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $4, $4 ; DIGLETTS_CAVE - Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -6898,7 +8504,20 @@ Route2House_h: ; 0x1dee1 to 0x1deed (12 bytes) (bank=7) (id=48) dw $5f07 ; objects -INCBIN "baserom.gbc",$1deed,$1df07 - $1deed +INCBIN "baserom.gbc",$1deed,$1def4 - $1deed + +Route2HouseText1: ; 0x1def4 + TX_FAR _Route2HouseText1 + db $50 + +Route2HouseText2: ; 0x1def9 + db $08 ; asm + ld a, $1 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + Route2HouseObject: ; 0x1df07 (size=32) db $a ; border tile @@ -6916,7 +8535,6 @@ Route2HouseObject: ; 0x1df07 (size=32) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - Route5Gate_h: ; 0x1df27 to 0x1df33 (12 bytes) (bank=7) (id=70) db $0c ; tileset db $03, $04 ; dimensions (y, x) @@ -6946,7 +8564,6 @@ Route5GateObject: ; 0x1dffb (size=42) EVENT_DISP $4, $0, $3 EVENT_DISP $4, $0, $4 - Route5GateBlocks: ; 12 INCBIN "maps/route5gate.blk" @@ -6979,7 +8596,6 @@ Route6GateObject: ; 0x1e0be (size=42) EVENT_DISP $4, $0, $3 EVENT_DISP $4, $0, $4 - Route6GateBlocks: ; 12 INCBIN "maps/route6gate.blk" @@ -7012,7 +8628,6 @@ Route7GateObject: ; 0x1e185 (size=42) EVENT_DISP $3, $3, $5 EVENT_DISP $3, $4, $5 - Route7GateBlocks: ; 12 INCBIN "maps/route7gate.blk" @@ -7045,7 +8660,6 @@ Route8GateObject: ; 0x1e247 (size=42) EVENT_DISP $3, $3, $5 EVENT_DISP $3, $4, $5 - Route8GateBlocks: ; 12 INCBIN "maps/route8gate.blk" @@ -7057,7 +8671,16 @@ UndergroundPathEntranceRoute8_h: ; 0x1e27d to 0x1e289 (12 bytes) (bank=7) (id=80 dw $6298 ; objects -INCBIN "baserom.gbc",$1e289,$1e298 - $1e289 +INCBIN "baserom.gbc",$1e289,$1e291 - $1e289 +UndergroundPathEntranceRoute8Texts: ; 0x1e291 + dw UndergroundPathEntranceRoute8Text1 + +;XXX wtf? syntax error +UndergroundPathEntranceRoute8Text1: ; 0x1e293 + db $17, $8d, $42, $23 + ;TX_FAR _UndergroundPathEntranceRoute8Text1 + db $50 + UndergroundPathEntranceRoute8Object: ; 0x1e298 (size=34) db $a ; border tile @@ -7076,7 +8699,6 @@ UndergroundPathEntranceRoute8Object: ; 0x1e298 (size=34) EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_WE - PowerPlant_h: ; 0x1e2ba to 0x1e2c6 (12 bytes) (bank=7) (id=83) db $16 ; tileset db $12, $14 ; dimensions (y, x) @@ -7097,27 +8719,26 @@ PowerPlantObject: ; 0x1e3bf (size=135) db $0 ; signs db $e ; people - db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, $6, $28 ; trainer - db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, $6, $28 ; trainer - db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, $6, $28 ; trainer - db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, $8d, $2b ; trainer - db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, $6, $28 ; trainer - db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, $6, $28 ; trainer - db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, $8d, $2b ; trainer - db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, $6, $28 ; trainer - db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, $4b, $32 ; trainer - db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, $26 ; item - db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, $23 ; item - db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, $28 ; item - db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, $e1 ; item - db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, $e9 ; item + db SPRITE_BALL, $14 + 4, $9 + 4, $ff, $ff, $41, VOLTORB, $28 ; trainer + db SPRITE_BALL, $12 + 4, $20 + 4, $ff, $ff, $42, VOLTORB, $28 ; trainer + db SPRITE_BALL, $19 + 4, $15 + 4, $ff, $ff, $43, VOLTORB, $28 ; trainer + db SPRITE_BALL, $12 + 4, $19 + 4, $ff, $ff, $44, ELECTRODE, $2b ; trainer + db SPRITE_BALL, $22 + 4, $17 + 4, $ff, $ff, $45, VOLTORB, $28 ; trainer + db SPRITE_BALL, $1c + 4, $1a + 4, $ff, $ff, $46, VOLTORB, $28 ; trainer + db SPRITE_BALL, $e + 4, $15 + 4, $ff, $ff, $47, ELECTRODE, $2b ; trainer + db SPRITE_BALL, $20 + 4, $25 + 4, $ff, $ff, $48, VOLTORB, $28 ; trainer + db SPRITE_BIRD, $9 + 4, $4 + 4, $ff, $d1, $49, ZAPDOS, $32 ; trainer + db SPRITE_BALL, $19 + 4, $7 + 4, $ff, $ff, $8a, CARBOS ; item + db SPRITE_BALL, $3 + 4, $1c + 4, $ff, $ff, $8b, HP_UP ; item + db SPRITE_BALL, $3 + 4, $22 + 4, $ff, $ff, $8c, RARE_CANDY ; item + db SPRITE_BALL, $20 + 4, $1a + 4, $ff, $ff, $8d, TM_25 ; item + db SPRITE_BALL, $20 + 4, $14 + 4, $ff, $ff, $8e, TM_33 ; item ; warp-to EVENT_DISP $14, $23, $4 EVENT_DISP $14, $23, $5 EVENT_DISP $14, $b, $0 - PowerPlantBlocks: ; 360 INCBIN "maps/powerplant.blk" @@ -7129,7 +8750,16 @@ DiglettsCaveEntranceRoute11_h: ; 0x1e5ae to 0x1e5ba (12 bytes) (bank=7) (id=85) dw $65ca ; objects -INCBIN "baserom.gbc",$1e5ba,$1e5ca - $1e5ba +INCBIN "baserom.gbc",$1e5ba,$1e5c3 - $1e5ba +DiglettsCaveEntranceRoute11Texts: ; 0x1e5c3 + dw DiglettsCaveEntranceRoute11Text1 + +; XXX wtf? syntax error +DiglettsCaveEntranceRoute11Text1: ; 0x1e5c5 + db $17, $f9, $47, $23 + ;TX_FAR _DiglettsCaveEntranceRoute11Text1 + db $50 + DiglettsCaveEntranceRoute11Object: ; 0x1e5ca (size=34) db $7d ; border tile @@ -7148,7 +8778,6 @@ DiglettsCaveEntranceRoute11Object: ; 0x1e5ca (size=34) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $4, $4 ; DIGLETTS_CAVE - Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -7157,7 +8786,39 @@ Route16House_h: ; 0x1e5ec to 0x1e5f8 (12 bytes) (bank=7) (id=188) dw $6657 ; objects -INCBIN "baserom.gbc",$1e5f8,$1e657 - $1e5f8 +INCBIN "baserom.gbc",$1e5f8,$1e5ff - $1e5f8 +Route16HouseText1: ; 0x1e5ff + db $08 ; asm + ld a, [$d7e0] + bit 6, a + ld hl, $6636 + jr nz, .asm_13616 ; 0x1e608 + ld hl, $662b + call PrintText + ld bc,(HM_02 << 8) | 1 + call $3e2e + jr nc, .asm_d3ee3 ; 0x1e616 + ld hl, $d7e0 + set 6, [hl] + ld hl, $6630 + jr .asm_13616 ; 0x1e620 +.asm_d3ee3 ; 0x1e622 + ld hl, $663b +.asm_13616 ; 0x1e625 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1e62b,$1e640 - $1e62b +Route16HouseText2: ; 0x1e640 + db $08 ; asm + ld hl, $6652 + call PrintText + ld a,FEAROW + call $13d0 + call $3748 + jp $24d7 + +INCBIN "baserom.gbc",$1e652,$5 Route16HouseObject: ; 0x1e657 (size=32) db $a ; border tile @@ -7175,7 +8836,6 @@ Route16HouseObject: ; 0x1e657 (size=32) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - Route22Gate_h: ; 0x1e677 to 0x1e683 (12 bytes) (bank=7) (id=193) db $0c ; tileset db $04, $05 ; dimensions (y, x) @@ -7205,7 +8865,6 @@ Route22GateObject: ; 0x1e720 (size=42) EVENT_DISP $5, $0, $4 EVENT_DISP $5, $0, $5 - Route22GateBlocks: ; 20 INCBIN "maps/route22gate.blk" @@ -7217,7 +8876,47 @@ BillsHouse_h: ; 0x1e75e to 0x1e76a (12 bytes) (bank=7) (id=88) dw $68df ; objects -INCBIN "baserom.gbc",$1e76a,$1e8df - $1e76a +INCBIN "baserom.gbc",$1e76a,$1e874 - $1e76a +BillsHouseText2: ; 0x1e874 + db $08 ; asm + ld a, [$d7f2] + bit 4, a + jr nz, .asm_5491f ; 0x1e87a + ld hl, $68ba + call PrintText + ld bc,(S_S__TICKET << 8) | 1 + call $3e2e + jr nc, .asm_18a67 ; 0x1e888 + ld hl, $68bf + call PrintText + ld hl, $d7f2 + set 4, [hl] + ld a, $7 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $9 + ld [$cc4d], a + ld a, $11 + call Predef +.asm_5491f ; 0x1e8a9 + ld hl, $68cb + call PrintText + jr .asm_bd408 ; 0x1e8af +.asm_18a67 ; 0x1e8b1 + ld hl, $68c6 + call PrintText +.asm_bd408 ; 0x1e8b7 + jp $24d7 + +INCBIN "baserom.gbc",$1e8ba,$1e8d0 - $1e8ba +BillsHouseText3: ; 0x1e8d0 + db $08 ; asm + ld hl, $68da + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$1e8da,$5 BillsHouseObject: ; 0x1e8df (size=38) db $d ; border tile @@ -8491,7 +10190,7 @@ ReadTrainer: ; 5C53 ld a,1 ld [$CC49],a push hl - call $3927 + call AddPokemonToParty pop hl jr .LoopTrainerData\@ .SpecialTrainer\@ @@ -8508,7 +10207,7 @@ ReadTrainer: ; 5C53 ld a,1 ld [$CC49],a push hl - call $3927 + call AddPokemonToParty pop hl jr .SpecialTrainer\@ .AddLoneAttack\@ @@ -8874,19 +10573,19 @@ BeautyData: db 29,STARYU,STARYU,STARYU,0 db 30,SEADRA,HORSEA,SEADRA,0 PsychicData: - db 31,KADABRA,SLOWPOKE,MR__MIME,KADABRA,0 - db 34,MR__MIME,KADABRA,0 + db 31,KADABRA,SLOWPOKE,MR_MIME,KADABRA,0 + db 34,MR_MIME,KADABRA,0 db 33,SLOWPOKE,SLOWPOKE,SLOWBRO,0 db 38,SLOWBRO,0 RockerData: db 20,VOLTORB,MAGNEMITE,VOLTORB,0 db 29,VOLTORB,ELECTRODE,0 JugglerData: - db 29,KADABRA,MR__MIME,0 + db 29,KADABRA,MR_MIME,0 db 41,DROWZEE,HYPNO,KADABRA,KADABRA,0 db 31,DROWZEE,DROWZEE,KADABRA,DROWZEE,0 db 34,DROWZEE,HYPNO,0 - db 48,MR__MIME,0 + db 48,MR_MIME,0 db 33,HYPNO,0 db 38,HYPNO,0 db 34,DROWZEE,KADABRA,0 @@ -9036,7 +10735,7 @@ KogaData: BlaineData: db $FF,42,GROWLITHE,40,PONYTA,42,RAPIDASH,47,ARCANINE,0 SabrinaData: - db $FF,38,KADABRA,37,MR__MIME,38,VENOMOTH,43,ALAKAZAM,0 + db $FF,38,KADABRA,37,MR_MIME,38,VENOMOTH,43,ALAKAZAM,0 GentlemanData: db 18,GROWLITHE,GROWLITHE,0 db 19,NIDORAN_M,NIDORAN_F,0 @@ -9603,7 +11302,6 @@ AIBattleUseItemText: TX_FAR _AIBattleUseItemText db "@" - INCBIN "baserom.gbc",$3A849,$3B05C - $3A849 EvosAttacksPointerTable: ; 705C @@ -10268,7 +11966,7 @@ Mon067_EvosAttacks: db 52,SUBMISSION db 0 Mon122_EvosAttacks: -;MR__MIME +;MR_MIME ;Evolutions db 0 ;Learnset @@ -12093,9 +13791,9 @@ INCBIN "baserom.gbc",$3CA83,$3D6A9 - $3CA83 .next8\@ call $60DF call $5C5C - ld hl,$7B7B - ld b,$B - call $35D6 + ld hl,$7B7B ; MyFunction + ld b,$B ; BANK(MyFunction) + call Bankswitch ld a,1 ld [$CCF4],a .next9\@ @@ -13922,7 +15620,7 @@ PokedexOrder: ; 5024 db DEX_GRAVELER db DEX_CHANSEY db DEX_MACHOKE - db DEX_MR__MIME + db DEX_MR_MIME db DEX_HITMONLEE db DEX_HITMONCHAN db DEX_ARBOK @@ -14073,7 +15771,6 @@ PokedexOrder: ; 5024 db DEX_VICTREEBEL INCBIN "baserom.gbc",$410E2,$2769 - $10E2 - ; XXX what do these do FuncCoord 5,0 ld hl,Coord @@ -14133,10 +15830,10 @@ OTString67E5: ; 67E5 SECTION "bank11",DATA,BANK[$11] -LavendarTown_h: ; 0x44000 to 0x4402d (45 bytes) (bank=11) (id=4) +LavenderTown_h: ; 0x44000 to 0x4402d (45 bytes) (bank=11) (id=4) db $00 ; tileset db $09, $0a ; dimensions (y, x) - dw LavendarTownBlocks, $410e, $410b ; blocks, texts, scripts + dw LavenderTownBlocks, $410e, $410b ; blocks, texts, scripts db NORTH | SOUTH | WEST ; connections ; connections data @@ -14163,7 +15860,7 @@ LavendarTown_h: ; 0x44000 to 0x4402d (45 bytes) (bank=11) (id=4) dw $402d ; objects -LavendarTownObject: ; 0x4402d (size=88) +LavenderTownObject: ; 0x4402d (size=88) db $2c ; border tile db $6 ; warps @@ -14175,12 +15872,12 @@ LavendarTownObject: ; 0x4402d (size=88) db $d, $7, $0, NAME_RATERS_HOUSE db $6 ; signs - db $9, $b, $4 ; LavendarTownText4 - db $3, $9, $5 ; LavendarTownText5 - db $d, $10, $6 ; LavendarTownText6 - db $5, $4, $7 ; LavendarTownText7 - db $9, $5, $8 ; LavendarTownText8 - db $7, $11, $9 ; LavendarTownText9 + db $9, $b, $4 ; LavenderTownText4 + db $3, $9, $5 ; LavenderTownText5 + db $d, $10, $6 ; LavenderTownText6 + db $5, $4, $7 ; LavenderTownText7 + db $9, $5, $8 ; LavenderTownText8 + db $7, $11, $9 ; LavenderTownText9 db $3 ; people db SPRITE_LITTLE_GIRL, $9 + 4, $f + 4, $fe, $0, $1 ; person @@ -14195,10 +15892,8 @@ LavendarTownObject: ; 0x4402d (size=88) EVENT_DISP $a, $d, $3 ; LAVENDER_HOUSE_2 EVENT_DISP $a, $d, $7 ; NAME_RATERS_HOUSE -INCBIN "baserom.gbc",$44085,$0 - -LavendarTownBlocks: ; 90 - INCBIN "maps/lavendartown.blk" +LavenderTownBlocks: ; 90 + INCBIN "maps/lavendertown.blk" ViridianPokeCenterBlocks: ; 28 INCBIN "maps/viridianpokecenter.blk" @@ -14206,7 +15901,48 @@ ViridianPokeCenterBlocks: ; 28 SafariZoneRestHouse1Blocks: ; 16 INCBIN "maps/safarizoneresthouse1.blk" -INCBIN "baserom.gbc",$4410b,$146 +INCBIN "baserom.gbc",$4410b,$44120 - $4410b +LavenderTownText1: ; 0x44120 + db $08 ; asm + ld hl, $413c + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $4146 + jr nz, .asm_40831 ; 0x44131 + ld hl, $4141 +.asm_40831 ; 0x44136 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$4413c,$f + +LavenderTownText2: ; 0x4414b + TX_FAR _LavenderTownText2 + db $50 + +LavenderTownText3: ; 0x44150 + TX_FAR _LavenderTownText3 + db $50 + +LavenderTownText4: ; 0x44155 + TX_FAR _LavenderTownText4 + db $50 + +LavenderTownText5: ; 0x4415a + TX_FAR _LavenderTownText5 + db $50 + +LavenderTownText8: ; 0x4415f + TX_FAR _LavenderTownText8 + db $50 + +LavenderTownText9: ; 0x44164 + TX_FAR _LavenderTownText9 + db $50 + +INCBIN "baserom.gbc",$44169,$e8 ViridianPokecenter_h: ; 0x44251 to 0x4425d (12 bytes) (bank=11) (id=41) db $06 ; tileset @@ -14216,7 +15952,21 @@ ViridianPokecenter_h: ; 0x44251 to 0x4425d (12 bytes) (bank=11) (id=41) dw $4277 ; objects -INCBIN "baserom.gbc",$4425d,$44277 - $4425d +INCBIN "baserom.gbc",$4425d,$4426b - $4425d + +ViridianPokeCenterText1: ; 0x4426b + db $ff + TX_FAR _ViridianPokeCenterText1 + +INCBIN "baserom.gbc",$44270,$44271 - $44270 + +ViridianPokeCenterText3: ; 0x44271 + TX_FAR _ViridianPokeCenterText3 + db $50 + +;XXX wtf? +db $f6 + ViridianPokeCenterObject: ; 0x44277 (size=44) db $0 ; border tile @@ -14236,7 +15986,6 @@ ViridianPokeCenterObject: ; 0x44277 (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - Mansion1_h: ; 0x442a3 to 0x442af (12 bytes) (bank=11) (id=165) db $16 ; tileset db $0e, $0f ; dimensions (y, x) @@ -14245,7 +15994,14 @@ Mansion1_h: ; 0x442a3 to 0x442af (12 bytes) (bank=11) (id=165) dw $43a4 ; objects -INCBIN "baserom.gbc",$442af,$443a4 - $442af +INCBIN "baserom.gbc",$442af,$44341 - $442af +Mansion1Text1: ; 0x44341 + db $08 ; asm + ld hl, $4334 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$4434b,$59 Mansion1Object: ; 0x443a4 (size=90) db $2e ; border tile @@ -14262,9 +16018,9 @@ Mansion1Object: ; 0x443a4 (size=90) db $0 ; signs db $3 ; people - db SPRITE_OAK_AIDE, $11 + 4, $11 + 4, $ff, $d2, $41, $e4, $4 ; trainer - db SPRITE_BALL, $3 + 4, $e + 4, $ff, $ff, $82, $1d ; item - db SPRITE_BALL, $15 + 4, $12 + 4, $ff, $ff, $83, $26 ; item + db SPRITE_OAK_AIDE, $11 + 4, $11 + 4, $ff, $d2, $41, SCIENTIST + $C8, $4 ; trainer + db SPRITE_BALL, $3 + 4, $e + 4, $ff, $ff, $82, ESCAPE_ROPE ; item + db SPRITE_BALL, $15 + 4, $12 + 4, $ff, $ff, $83, CARBOS ; item ; warp-to EVENT_DISP $f, $1b, $4 @@ -14286,7 +16042,51 @@ RockTunnel1_h: ; 0x444d0 to 0x444dc (12 bytes) (bank=11) (id=82) dw $45f6 ; objects -INCBIN "baserom.gbc",$444dc,$445f6 - $444dc +INCBIN "baserom.gbc",$444dc,$4455a - $444dc + +RockTunnel1Text1: ; 0x4455a + db $8 + ld hl, $4505 + jr asm_0c916 ; 0x4455e $22 + +RockTunnel1Text2: + db $8 + ld hl, $4511 + jr asm_0c916 ; 0x44564 $1c + +RockTunnel1Text3: + db $8 + ld hl, $451d + jr asm_0c916 ; 0x4456a $16 + +RockTunnel1Text4: + db $8 + ld hl, $4529 + jr asm_0c916 ; 0x44570 $10 + +RockTunnel1Text5: + db $8 + ld hl, $4535 + jr asm_0c916 ; 0x44576 $a + +RockTunnel1Text6: + db $8 + ld hl, $4541 + jr asm_0c916 ; 0x4457c $4 + +RockTunnel1Text7: + db $8 + ld hl, $454d +asm_0c916: ; 0x44582 + call $31cc + jp $24d7 + +INCBIN "baserom.gbc",$44588,$69 + +RockTunnel1Text8: ; 0x445f1 + TX_FAR _RockTunnel1Text8 + db $50 + RockTunnel1Object: ; 0x445f6 (size=127) db $3 ; border tile @@ -14304,13 +16104,13 @@ RockTunnel1Object: ; 0x445f6 (size=127) db $1d, $b, $8 ; RockTunnel1Text8 db $7 ; people - db SPRITE_HIKER, $5 + 4, $7 + 4, $ff, $d0, $41, $d1, $c ; trainer - db SPRITE_HIKER, $10 + 4, $5 + 4, $ff, $d0, $42, $d1, $d ; trainer - db SPRITE_HIKER, $f + 4, $11 + 4, $ff, $d2, $43, $d1, $e ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $17 + 4, $ff, $d2, $44, $cf, $7 ; trainer - db SPRITE_LASS, $15 + 4, $25 + 4, $ff, $d2, $45, $ce, $11 ; trainer - db SPRITE_LASS, $18 + 4, $16 + 4, $ff, $d0, $46, $ce, $12 ; trainer - db SPRITE_LASS, $18 + 4, $20 + 4, $ff, $d3, $47, $ce, $13 ; trainer + db SPRITE_HIKER, $5 + 4, $7 + 4, $ff, $d0, $41, HIKER + $C8, $c ; trainer + db SPRITE_HIKER, $10 + 4, $5 + 4, $ff, $d0, $42, HIKER + $C8, $d ; trainer + db SPRITE_HIKER, $f + 4, $11 + 4, $ff, $d2, $43, HIKER + $C8, $e ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $17 + 4, $ff, $d2, $44, POKEMANIAC + $C8, $7 ; trainer + db SPRITE_LASS, $15 + 4, $25 + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $11 ; trainer + db SPRITE_LASS, $18 + 4, $16 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $12 ; trainer + db SPRITE_LASS, $18 + 4, $20 + 4, $ff, $d3, $47, JR__TRAINER_F + $C8, $13 ; trainer ; warp-to EVENT_DISP $14, $3, $f @@ -14322,7 +16122,6 @@ RockTunnel1Object: ; 0x445f6 (size=127) EVENT_DISP $14, $b, $11 ; ROCK_TUNNEL_2 EVENT_DISP $14, $11, $25 ; ROCK_TUNNEL_2 - RockTunnel1Blocks: ; 360 INCBIN "maps/rocktunnel1.blk" @@ -14334,7 +16133,9 @@ SeafoamIslands1_h: ; 0x447dd to 0x447e9 (12 bytes) (bank=11) (id=192) dw $484f ; objects -INCBIN "baserom.gbc",$447e9,$4484f - $447e9 +INCBIN "baserom.gbc",$447e9,$4484b - $447e9 +SeafoamIslands1Texts: ; 0x4484b + dw SeafoamIslands1Text1, SeafoamIslands1Text2 SeafoamIslands1Object: ; 0x4484f (size=72) db $7d ; border tile @@ -14392,7 +16193,6 @@ SSAnne3Object: ; 0x4493c (size=26) EVENT_DISP $a, $3, $0 ; SS_ANNE_5 EVENT_DISP $a, $3, $13 ; SS_ANNE_2 - SSAnne3Blocks: ; 30 INCBIN "maps/ssanne3.blk" @@ -14404,7 +16204,32 @@ VictoryRoad3_h: ; 0x44974 to 0x44980 (12 bytes) (bank=11) (id=198) dw $4acd ; objects -INCBIN "baserom.gbc",$44980,$44acd - $44980 +INCBIN "baserom.gbc",$44980,$44a69 - $44980 +VictoryRoad3Text1: ; 0x44a69 + db $08 ; asm + ld hl, $4a38 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad3Text2: ; 0x44a73 + db $08 ; asm + ld hl, $4a44 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad3Text3: ; 0x44a7d + db $08 ; asm + ld hl, $4a50 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad3Text4: ; 0x44a87 + db $08 ; asm + ld hl, $4a5c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$44a91,$3c VictoryRoad3Object: ; 0x44acd (size=106) db $7d ; border tile @@ -14417,12 +16242,12 @@ VictoryRoad3Object: ; 0x44acd (size=106) db $0 ; signs db $a ; people - db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $1c + 4, $ff, $d2, $41, $e7, $2 ; trainer - db SPRITE_LASS, $d + 4, $7 + 4, $ff, $d3, $42, $e8, $2 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $e + 4, $6 + 4, $ff, $d2, $43, $e7, $3 ; trainer - db SPRITE_LASS, $3 + 4, $d + 4, $ff, $d3, $44, $e8, $3 ; trainer - db SPRITE_BALL, $5 + 4, $1a + 4, $ff, $ff, $85, $36 ; item - db SPRITE_BALL, $7 + 4, $7 + 4, $ff, $ff, $86, $f7 ; item + db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $1c + 4, $ff, $d2, $41, COOLTRAINER_M + $C8, $2 ; trainer + db SPRITE_LASS, $d + 4, $7 + 4, $ff, $d3, $42, COOLTRAINER_F + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $e + 4, $6 + 4, $ff, $d2, $43, COOLTRAINER_M + $C8, $3 ; trainer + db SPRITE_LASS, $3 + 4, $d + 4, $ff, $d3, $44, COOLTRAINER_F + $C8, $3 ; trainer + db SPRITE_BALL, $5 + 4, $1a + 4, $ff, $ff, $85, MAX_REVIVE ; item + db SPRITE_BALL, $7 + 4, $7 + 4, $ff, $ff, $86, TM_47 ; item db SPRITE_BOULDER, $3 + 4, $16 + 4, $ff, $10, $7 ; person db SPRITE_BOULDER, $c + 4, $d + 4, $ff, $10, $8 ; person db SPRITE_BOULDER, $a + 4, $18 + 4, $ff, $10, $9 ; person @@ -14434,7 +16259,6 @@ VictoryRoad3Object: ; 0x44acd (size=106) EVENT_DISP $f, $f, $1b ; VICTORY_ROAD_2 EVENT_DISP $f, $0, $2 ; VICTORY_ROAD_2 - VictoryRoad3Blocks: ; 135 INCBIN "maps/victoryroad3.blk" @@ -14446,7 +16270,38 @@ RocketHideout1_h: ; 0x44bbe to 0x44bca (12 bytes) (bank=11) (id=199) dw $4ce7 ; objects -INCBIN "baserom.gbc",$44bca,$44ce7 - $44bca +INCBIN "baserom.gbc",$44bca,$44c5f - $44bca +RocketHideout1Text1: ; 0x44c5f + db $08 ; asm + ld hl, $4c22 + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text2: ; 0x44c69 + db $08 ; asm + ld hl, $4c2e + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text3: ; 0x44c73 + db $08 ; asm + ld hl, $4c3a + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text4: ; 0x44c7d + db $08 ; asm + ld hl, $4c46 + call LoadTrainerHeader + jp $24d7 + +RocketHideout1Text5: ; 0x44c87 + db $08 ; asm + ld hl, $4c52 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$44c91,$56 RocketHideout1Object: ; 0x44ce7 (size=98) db $2e ; border tile @@ -14460,13 +16315,13 @@ RocketHideout1Object: ; 0x44ce7 (size=98) db $0 ; signs db $7 ; people - db SPRITE_ROCKET, $8 + 4, $1a + 4, $ff, $d2, $41, $e6, $8 ; trainer - db SPRITE_ROCKET, $6 + 4, $c + 4, $ff, $d3, $42, $e6, $9 ; trainer - db SPRITE_ROCKET, $11 + 4, $12 + 4, $ff, $d0, $43, $e6, $a ; trainer - db SPRITE_ROCKET, $19 + 4, $f + 4, $ff, $d3, $44, $e6, $b ; trainer - db SPRITE_ROCKET, $12 + 4, $1c + 4, $ff, $d2, $45, $e6, $c ; trainer - db SPRITE_BALL, $e + 4, $b + 4, $ff, $ff, $86, $1d ; item - db SPRITE_BALL, $11 + 4, $9 + 4, $ff, $ff, $87, $12 ; item + db SPRITE_ROCKET, $8 + 4, $1a + 4, $ff, $d2, $41, ROCKET + $C8, $8 ; trainer + db SPRITE_ROCKET, $6 + 4, $c + 4, $ff, $d3, $42, ROCKET + $C8, $9 ; trainer + db SPRITE_ROCKET, $11 + 4, $12 + 4, $ff, $d0, $43, ROCKET + $C8, $a ; trainer + db SPRITE_ROCKET, $19 + 4, $f + 4, $ff, $d3, $44, ROCKET + $C8, $b ; trainer + db SPRITE_ROCKET, $12 + 4, $1c + 4, $ff, $d2, $45, ROCKET + $C8, $c ; trainer + db SPRITE_BALL, $e + 4, $b + 4, $ff, $ff, $86, ESCAPE_ROPE ; item + db SPRITE_BALL, $11 + 4, $9 + 4, $ff, $ff, $87, HYPER_POTION ; item ; warp-to EVENT_DISP $f, $2, $17 ; ROCKET_HIDEOUT_2 @@ -14475,7 +16330,6 @@ RocketHideout1Object: ; 0x44ce7 (size=98) EVENT_DISP $f, $18, $15 ; ROCKET_HIDEOUT_2 EVENT_DISP $f, $13, $19 ; ROCKET_HIDEOUT_ELEVATOR - RocketHideout1Blocks: ; 210 INCBIN "maps/rockethideout1.blk" @@ -14487,7 +16341,14 @@ RocketHideout2_h: ; 0x44e1b to 0x44e27 (12 bytes) (bank=11) (id=200) dw $50f7 ; objects -INCBIN "baserom.gbc",$44e27,$450f7 - $44e27 +INCBIN "baserom.gbc",$44e27,$450de - $44e27 +RocketHideout2Text1: ; 0x450de + db $08 ; asm + ld hl, $50d1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$450e8,$f RocketHideout2Object: ; 0x450f7 (size=80) db $2e ; border tile @@ -14501,11 +16362,11 @@ RocketHideout2Object: ; 0x450f7 (size=80) db $0 ; signs db $5 ; people - db SPRITE_ROCKET, $c + 4, $14 + 4, $ff, $d0, $41, $e6, $d ; trainer - db SPRITE_BALL, $b + 4, $1 + 4, $ff, $ff, $82, $a ; item - db SPRITE_BALL, $8 + 4, $10 + 4, $ff, $ff, $83, $31 ; item - db SPRITE_BALL, $c + 4, $6 + 4, $ff, $ff, $84, $cf ; item - db SPRITE_BALL, $15 + 4, $3 + 4, $ff, $ff, $85, $13 ; item + db SPRITE_ROCKET, $c + 4, $14 + 4, $ff, $d0, $41, ROCKET + $C8, $d ; trainer + db SPRITE_BALL, $b + 4, $1 + 4, $ff, $ff, $82, MOON_STONE ; item + db SPRITE_BALL, $8 + 4, $10 + 4, $ff, $ff, $83, NUGGET ; item + db SPRITE_BALL, $c + 4, $6 + 4, $ff, $ff, $84, TM_07 ; item + db SPRITE_BALL, $15 + 4, $3 + 4, $ff, $ff, $85, SUPER_POTION ; item ; warp-to EVENT_DISP $f, $8, $1b ; ROCKET_HIDEOUT_1 @@ -14514,7 +16375,6 @@ RocketHideout2Object: ; 0x450f7 (size=80) EVENT_DISP $f, $16, $15 ; ROCKET_HIDEOUT_1 EVENT_DISP $f, $13, $19 ; ROCKET_HIDEOUT_ELEVATOR - RocketHideout2Blocks: ; 210 INCBIN "maps/rockethideout2.blk" @@ -14526,7 +16386,21 @@ RocketHideout3_h: ; 0x45219 to 0x45225 (12 bytes) (bank=11) (id=201) dw $534d ; objects -INCBIN "baserom.gbc",$45225,$4534d - $45225 +INCBIN "baserom.gbc",$45225,$4531b - $45225 +RocketHideout3Text1: ; 0x4531b + db $08 ; asm + ld hl, $5302 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$45325,$45334 - $45325 +RocketHideout3Text2: ; 0x45334 + db $08 ; asm + ld hl, $530e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$4533e,$f RocketHideout3Object: ; 0x4534d (size=50) db $2e ; border tile @@ -14537,16 +16411,15 @@ RocketHideout3Object: ; 0x4534d (size=50) db $0 ; signs db $4 ; people - db SPRITE_ROCKET, $16 + 4, $a + 4, $ff, $d3, $41, $e6, $e ; trainer - db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d1, $42, $e6, $f ; trainer - db SPRITE_BALL, $11 + 4, $1a + 4, $ff, $ff, $83, $d2 ; item - db SPRITE_BALL, $e + 4, $14 + 4, $ff, $ff, $84, $28 ; item + db SPRITE_ROCKET, $16 + 4, $a + 4, $ff, $d3, $41, ROCKET + $C8, $e ; trainer + db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d1, $42, ROCKET + $C8, $f ; trainer + db SPRITE_BALL, $11 + 4, $1a + 4, $ff, $ff, $83, TM_10 ; item + db SPRITE_BALL, $e + 4, $14 + 4, $ff, $ff, $84, RARE_CANDY ; item ; warp-to EVENT_DISP $f, $6, $19 ; ROCKET_HIDEOUT_2 EVENT_DISP $f, $12, $13 ; ROCKET_HIDEOUT_4 - RocketHideout3Blocks: ; 210 INCBIN "maps/rockethideout3.blk" @@ -14558,7 +16431,57 @@ RocketHideout4_h: ; 0x45451 to 0x4545d (12 bytes) (bank=11) (id=202) dw $55f1 ; objects -INCBIN "baserom.gbc",$4545d,$455f1 - $4545d +INCBIN "baserom.gbc",$4545d,$4553a - $4545d +RocketHideout4Text1: ; 0x4553a + db $08 ; asm + ld a, [$d81b] + bit 7, a + jp nz, $5571 + ld hl, $557a + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $557f + ld de, $557f + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + xor a + ldh [$b4], a + ld a, $3 + ld [$d634], a + ld [$da39], a + jr .asm_209f0 ; 0x4556f + ld hl, $5584 + call PrintText +.asm_209f0 ; 0x45577 + jp $24d7 + +INCBIN "baserom.gbc",$4557a,$45589 - $4557a +RocketHideout4Text2: ; 0x45589 + db $08 ; asm + ld hl, $5515 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$45593,$455a2 - $45593 +RocketHideout4Text3: ; 0x455a2 + db $08 ; asm + ld hl, $5521 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$455ac,$455bb - $455ac +RocketHideout4Text4: ; 0x455bb + db $08 ; asm + ld hl, $552d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$455c5,$2c RocketHideout4Object: ; 0x455f1 (size=95) db $2e ; border tile @@ -14570,22 +16493,21 @@ RocketHideout4Object: ; 0x455f1 (size=95) db $0 ; signs db $9 ; people - db SPRITE_GIOVANNI, $3 + 4, $19 + 4, $ff, $d0, $41, $e5, $1 ; trainer - db SPRITE_ROCKET, $c + 4, $17 + 4, $ff, $d0, $42, $e6, $10 ; trainer - db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d0, $43, $e6, $11 ; trainer - db SPRITE_ROCKET, $2 + 4, $b + 4, $ff, $d0, $44, $e6, $12 ; trainer - db SPRITE_BALL, $c + 4, $a + 4, $ff, $ff, $85, $23 ; item - db SPRITE_BALL, $4 + 4, $9 + 4, $ff, $ff, $86, $ca ; item - db SPRITE_BALL, $14 + 4, $c + 4, $ff, $ff, $87, $25 ; item - db SPRITE_BALL, $2 + 4, $19 + 4, $ff, $ff, $88, $48 ; item - db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $89, $4a ; item + db SPRITE_GIOVANNI, $3 + 4, $19 + 4, $ff, $d0, $41, GIOVANNI + $C8, $1 ; trainer + db SPRITE_ROCKET, $c + 4, $17 + 4, $ff, $d0, $42, ROCKET + $C8, $10 ; trainer + db SPRITE_ROCKET, $c + 4, $1a + 4, $ff, $d0, $43, ROCKET + $C8, $11 ; trainer + db SPRITE_ROCKET, $2 + 4, $b + 4, $ff, $d0, $44, ROCKET + $C8, $12 ; trainer + db SPRITE_BALL, $c + 4, $a + 4, $ff, $ff, $85, HP_UP ; item + db SPRITE_BALL, $4 + 4, $9 + 4, $ff, $ff, $86, TM_02 ; item + db SPRITE_BALL, $14 + 4, $c + 4, $ff, $ff, $87, IRON ; item + db SPRITE_BALL, $2 + 4, $19 + 4, $ff, $ff, $88, SILPH_SCOPE ; item + db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $89, LIFT_KEY ; item ; warp-to EVENT_DISP $f, $a, $13 ; ROCKET_HIDEOUT_3 EVENT_DISP $f, $f, $18 ; ROCKET_HIDEOUT_ELEVATOR EVENT_DISP $f, $f, $19 ; ROCKET_HIDEOUT_ELEVATOR - RocketHideout4Blocks: ; 180 INCBIN "maps/rockethideout4.blk" @@ -14597,7 +16519,24 @@ RocketHideoutElevator_h: ; 0x45704 to 0x45710 (12 bytes) (bank=11) (id=203) dw $5791 ; objects -INCBIN "baserom.gbc",$45710,$45791 - $45710 +INCBIN "baserom.gbc",$45710,$4576d - $45710 +RocketHideoutElevatorText1: ; 0x4576d + db $08 ; asm + ld b,LIFT_KEY + call $3493 + jr z, .asm_8d8f0 ; 0x45773 + call $5741 + ld hl, $5759 + ld a, $61 + call Predef + jr .asm_46c43 ; 0x45780 +.asm_8d8f0 ; 0x45782 + ld hl, $578b + call PrintText +.asm_46c43 ; 0x45788 + jp $24d7 + +INCBIN "baserom.gbc",$4578b,$6 RocketHideoutElevatorObject: ; 0x45791 (size=23) db $f ; border tile @@ -14614,7 +16553,6 @@ RocketHideoutElevatorObject: ; 0x45791 (size=23) EVENT_DISP $3, $1, $2 ; ROCKET_HIDEOUT_1 EVENT_DISP $3, $1, $3 ; ROCKET_HIDEOUT_1 - RocketHideoutElevatorBlocks: ; 12 INCBIN "maps/rockethideoutelevator.blk" @@ -14626,7 +16564,15 @@ SilphCoElevator_h: ; 0x457b4 to 0x457c0 (12 bytes) (bank=11) (id=236) dw $5844 ; objects -INCBIN "baserom.gbc",$457c0,$45844 - $457c0 +INCBIN "baserom.gbc",$457c0,$45835 - $457c0 +SilphCoElevatorText1: ; 0x45835 + db $08 ; asm + call $57f1 + ld hl, $5811 + ld a, $61 + call Predef + jp $24d7 + SilphCoElevatorObject: ; 0x45844 (size=23) db $f ; border tile @@ -14643,7 +16589,6 @@ SilphCoElevatorObject: ; 0x45844 (size=23) EVENT_DISP $2, $3, $1 EVENT_DISP $2, $3, $2 - SilphCoElevatorBlocks: ; 4 INCBIN "maps/silphcoelevator.blk" @@ -14655,7 +16600,20 @@ SafariZoneEast_h: ; 0x4585f to 0x4586b (12 bytes) (bank=11) (id=217) dw $588b ; objects -INCBIN "baserom.gbc",$4586b,$4588b - $4586b +INCBIN "baserom.gbc",$4586b,$4587c - $4586b + +SafariZoneEastText5: ; 0x4587c + TX_FAR _SafariZoneEastText5 + db $50 + +SafariZoneEastText6: ; 0x45881 + TX_FAR _SafariZoneEastText6 + db $50 + +SafariZoneEastText7: ; 0x45886 + TX_FAR _SafariZoneEastText7 + db $50 + SafariZoneEastObject: ; 0x4588b (size=81) db $0 ; border tile @@ -14672,10 +16630,10 @@ SafariZoneEastObject: ; 0x4588b (size=81) db $17, $5, $7 ; SafariZoneEastText7 db $4 ; people - db SPRITE_BALL, $a + 4, $15 + 4, $ff, $ff, $81, $10 ; item - db SPRITE_BALL, $7 + 4, $3 + 4, $ff, $ff, $82, $11 ; item - db SPRITE_BALL, $d + 4, $14 + 4, $ff, $ff, $83, $26 ; item - db SPRITE_BALL, $c + 4, $f + 4, $ff, $ff, $84, $ed ; item + db SPRITE_BALL, $a + 4, $15 + 4, $ff, $ff, $81, FULL_RESTORE ; item + db SPRITE_BALL, $7 + 4, $3 + 4, $ff, $ff, $82, MAX_POTION ; item + db SPRITE_BALL, $d + 4, $14 + 4, $ff, $ff, $83, CARBOS ; item + db SPRITE_BALL, $c + 4, $f + 4, $ff, $ff, $84, TM_37 ; item ; warp-to EVENT_DISP $f, $4, $0 ; SAFARI_ZONE_NORTH @@ -14684,7 +16642,6 @@ SafariZoneEastObject: ; 0x4588b (size=81) EVENT_DISP $f, $17, $0 ; SAFARI_ZONE_CENTER EVENT_DISP $f, $9, $19 ; SAFARI_ZONE_REST_HOUSE_3 - SafariZoneEastBlocks: ; 195 INCBIN "maps/safarizoneeast.blk" @@ -14696,7 +16653,28 @@ SafariZoneNorth_h: ; 0x4599f to 0x459ab (12 bytes) (bank=11) (id=218) dw $59d5 ; objects -INCBIN "baserom.gbc",$459ab,$459d5 - $459ab +INCBIN "baserom.gbc",$459ab,$459bc - $459ab + +SafariZoneNorthText3: ; 0x459bc + TX_FAR _SafariZoneNorthText3 + db $50 + +SafariZoneNorthText4: ; 0x459c1 + TX_FAR _SafariZoneNorthText4 + db $50 + +SafariZoneNorthText5: ; 0x459c6 + TX_FAR _SafariZoneNorthText5 + db $50 + +SafariZoneNorthText6: ; 0x459cb + TX_FAR _SafariZoneNorthText6 + db $50 + +SafariZoneNorthText7: ; 0x459d0 + TX_FAR _SafariZoneNorthText7 + db $50 + SafariZoneNorthObject: ; 0x459d5 (size=105) db $0 ; border tile @@ -14719,8 +16697,8 @@ SafariZoneNorthObject: ; 0x459d5 (size=105) db $1c, $1a, $7 ; SafariZoneNorthText7 db $2 ; people - db SPRITE_BALL, $1 + 4, $19 + 4, $ff, $ff, $81, $24 ; item - db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $82, $f0 ; item + db SPRITE_BALL, $1 + 4, $19 + 4, $ff, $ff, $81, PROTEIN ; item + db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $82, TM_40 ; item ; warp-to EVENT_DISP $14, $23, $2 ; SAFARI_ZONE_WEST @@ -14733,7 +16711,6 @@ SafariZoneNorthObject: ; 0x459d5 (size=105) EVENT_DISP $14, $1f, $27 ; SAFARI_ZONE_EAST EVENT_DISP $14, $3, $23 ; SAFARI_ZONE_REST_HOUSE_4 - SafariZoneNorthBlocks: ; 360 INCBIN "maps/safarizonenorth.blk" @@ -14745,7 +16722,16 @@ SafariZoneCenter_h: ; 0x45ba6 to 0x45bb2 (12 bytes) (bank=11) (id=220) dw $5bc5 ; objects -INCBIN "baserom.gbc",$45bb2,$45bc5 - $45bb2 +INCBIN "baserom.gbc",$45bb2,$45bbb - $45bb2 + +SafariZoneCenterText2: ; 0x45bbb + TX_FAR _SafariZoneCenterText2 + db $50 + +SafariZoneCenterText3: ; 0x45bc0 + TX_FAR _SafariZoneCenterText3 + db $50 + SafariZoneCenterObject: ; 0x45bc5 (size=89) db $0 ; border tile @@ -14765,7 +16751,7 @@ SafariZoneCenterObject: ; 0x45bc5 (size=89) db $16, $e, $3 ; SafariZoneCenterText3 db $1 ; people - db SPRITE_BALL, $a + 4, $e + 4, $ff, $ff, $81, $31 ; item + db SPRITE_BALL, $a + 4, $e + 4, $ff, $ff, $81, NUGGET ; item ; warp-to EVENT_DISP $f, $19, $e ; SAFARIZONEENTRANCE @@ -14778,7 +16764,6 @@ SafariZoneCenterObject: ; 0x45bc5 (size=89) EVENT_DISP $f, $b, $1d ; SAFARI_ZONE_EAST EVENT_DISP $f, $13, $11 ; SAFARI_ZONE_REST_HOUSE_1 - SafariZoneCenterBlocks: ; 195 INCBIN "maps/safarizonecenter.blk" @@ -14790,7 +16775,18 @@ SafariZoneRestHouse1_h: ; 0x45ce1 to 0x45ced (12 bytes) (bank=11) (id=221) dw $5cfe ; objects -INCBIN "baserom.gbc",$45ced,$45cfe - $45ced +INCBIN "baserom.gbc",$45ced,$45cf0 - $45ced +SafariZoneRestHouse1Texts: ; 0x45cf0 + dw SafariZoneRestHouse1Text1, SafariZoneRestHouse1Text2 + +SafariZoneRestHouse1Text1: ; 0x45cf4 + TX_FAR _SafariZoneRestHouse1Text1 + db $50 + +SafariZoneRestHouse1Text2: ; 0x45cf9 + TX_FAR _SafariZoneRestHouse1Text2 + db $50 + SafariZoneRestHouse1Object: ; 0x45cfe (size=32) db $a ; border tile @@ -14808,7 +16804,6 @@ SafariZoneRestHouse1Object: ; 0x45cfe (size=32) EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_CENTER EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_CENTER - SafariZoneRestHouse2_h: ; 0x45d1e to 0x45d2a (12 bytes) (bank=11) (id=223) db $0c ; tileset db $04, $04 ; dimensions (y, x) @@ -14817,7 +16812,22 @@ SafariZoneRestHouse2_h: ; 0x45d1e to 0x45d2a (12 bytes) (bank=11) (id=223) dw $5d43 ; objects -INCBIN "baserom.gbc",$45d2a,$45d43 - $45d2a +INCBIN "baserom.gbc",$45d2a,$45d2e - $45d2a +SafariZoneRestHouse2Texts: ; 0x45d2e + dw SafariZoneRestHouse2Text1, SafariZoneRestHouse2Text2, SafariZoneRestHouse2Text3 + +SafariZoneRestHouse2Text1: ; 0x45d34 + TX_FAR _SafariZoneRestHouse2Text1 + db $50 + +SafariZoneRestHouse2Text2: ; 0x45d39 + TX_FAR _SafariZoneRestHouse2Text2 + db $50 + +SafariZoneRestHouse2Text3: ; 0x45d3e + TX_FAR _SafariZoneRestHouse2Text3 + db $50 + SafariZoneRestHouse2Object: ; 0x45d43 (size=38) db $a ; border tile @@ -14836,7 +16846,6 @@ SafariZoneRestHouse2Object: ; 0x45d43 (size=38) EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_WEST EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_WEST - SafariZoneRestHouse3_h: ; 0x45d69 to 0x45d75 (12 bytes) (bank=11) (id=224) db $0c ; tileset db $04, $04 ; dimensions (y, x) @@ -14845,7 +16854,22 @@ SafariZoneRestHouse3_h: ; 0x45d69 to 0x45d75 (12 bytes) (bank=11) (id=224) dw $5d8e ; objects -INCBIN "baserom.gbc",$45d75,$45d8e - $45d75 +INCBIN "baserom.gbc",$45d75,$45d79 - $45d75 +SafariZoneRestHouse3Texts: ; 0x45d79 + dw SafariZoneRestHouse3Text1, SafariZoneRestHouse3Text2, SafariZoneRestHouse3Text3 + +SafariZoneRestHouse3Text1: ; 0x45d7f + TX_FAR _SafariZoneRestHouse3Text1 + db $50 + +SafariZoneRestHouse3Text2: ; 0x45d84 + TX_FAR _SafariZoneRestHouse3Text2 + db $50 + +SafariZoneRestHouse3Text3: ; 0x45d89 + TX_FAR _SafariZoneRestHouse3Text3 + db $50 + SafariZoneRestHouse3Object: ; 0x45d8e (size=38) db $a ; border tile @@ -14864,7 +16888,6 @@ SafariZoneRestHouse3Object: ; 0x45d8e (size=38) EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_EAST EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_EAST - SafariZoneRestHouse4_h: ; 0x45db4 to 0x45dc0 (12 bytes) (bank=11) (id=225) db $0c ; tileset db $04, $04 ; dimensions (y, x) @@ -14873,7 +16896,22 @@ SafariZoneRestHouse4_h: ; 0x45db4 to 0x45dc0 (12 bytes) (bank=11) (id=225) dw $5dd9 ; objects -INCBIN "baserom.gbc",$45dc0,$45dd9 - $45dc0 +INCBIN "baserom.gbc",$45dc0,$45dc4 - $45dc0 +SafariZoneRestHouse4Texts: ; 0x45dc4 + dw SafariZoneRestHouse4Text1, SafariZoneRestHouse4Text2, SafariZoneRestHouse4Text3 + +SafariZoneRestHouse4Text1: ; 0x45dca + TX_FAR _SafariZoneRestHouse4Text1 + db $50 + +SafariZoneRestHouse4Text2: ; 0x45dcf + TX_FAR _SafariZoneRestHouse4Text2 + db $50 + +SafariZoneRestHouse4Text3: ; 0x45dd4 + TX_FAR _SafariZoneRestHouse4Text3 + db $50 + SafariZoneRestHouse4Object: ; 0x45dd9 (size=38) db $a ; border tile @@ -14892,7 +16930,6 @@ SafariZoneRestHouse4Object: ; 0x45dd9 (size=38) EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_NORTH EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_NORTH - UnknownDungeon2_h: ; 0x45dff to 0x45e0b (12 bytes) (bank=11) (id=226) db $11 ; tileset db $09, $0f ; dimensions (y, x) @@ -14916,9 +16953,9 @@ UnknownDungeon2Object: ; 0x45e14 (size=73) db $0 ; signs db $3 ; people - db SPRITE_BALL, $9 + 4, $1d + 4, $ff, $ff, $81, $4f ; item - db SPRITE_BALL, $f + 4, $4 + 4, $ff, $ff, $82, $2 ; item - db SPRITE_BALL, $6 + 4, $d + 4, $ff, $ff, $83, $10 ; item + db SPRITE_BALL, $9 + 4, $1d + 4, $ff, $ff, $81, PP_UP ; item + db SPRITE_BALL, $f + 4, $4 + 4, $ff, $ff, $82, ULTRA_BALL ; item + db SPRITE_BALL, $6 + 4, $d + 4, $ff, $ff, $83, FULL_RESTORE ; item ; warp-to EVENT_DISP $f, $1, $1d ; UNKNOWN_DUNGEON_1 @@ -14928,7 +16965,6 @@ UnknownDungeon2Object: ; 0x45e14 (size=73) EVENT_DISP $f, $3, $1 ; UNKNOWN_DUNGEON_1 EVENT_DISP $f, $b, $3 ; UNKNOWN_DUNGEON_1 - UnknownDungeon2Blocks: ; 135 INCBIN "maps/unknowndungeon2.blk" @@ -14940,7 +16976,14 @@ UnknownDungeon3_h: ; 0x45ee4 to 0x45ef0 (12 bytes) (bank=11) (id=227) dw $5f36 ; objects -INCBIN "baserom.gbc",$45ef0,$45f36 - $45ef0 +INCBIN "baserom.gbc",$45ef0,$45f1c - $45ef0 +UnknownDungeon3Text1: ; 0x45f1c + db $08 ; asm + ld hl, $5f0f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$45f26,$10 UnknownDungeon3Object: ; 0x45f36 (size=34) db $7d ; border tile @@ -14950,14 +16993,13 @@ UnknownDungeon3Object: ; 0x45f36 (size=34) db $0 ; signs db $3 ; people - db SPRITE_SLOWBRO, $d + 4, $1b + 4, $ff, $d0, $41, $83, $46 ; trainer - db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $82, $2 ; item - db SPRITE_BALL, $1 + 4, $12 + 4, $ff, $ff, $83, $36 ; item + db SPRITE_SLOWBRO, $d + 4, $1b + 4, $ff, $d0, $41, MEWTWO, $46 ; trainer + db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $82, ULTRA_BALL ; item + db SPRITE_BALL, $1 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item ; warp-to EVENT_DISP $f, $6, $3 ; UNKNOWN_DUNGEON_1 - UnknownDungeon3Blocks: ; 135 INCBIN "maps/unknowndungeon3.blk" @@ -14969,7 +17011,56 @@ RockTunnel2_h: ; 0x45fdf to 0x45feb (12 bytes) (bank=11) (id=232) dw $613d ; objects -INCBIN "baserom.gbc",$45feb,$4613d - $45feb +INCBIN "baserom.gbc",$45feb,$46075 - $45feb +RockTunnel2Text1: ; 0x46075 + db $08 ; asm + ld hl, $6014 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text2: ; 0x4607f + db $08 ; asm + ld hl, $6020 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text3: ; 0x46089 + db $08 ; asm + ld hl, $602c + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text4: ; 0x46093 + db $08 ; asm + ld hl, $6038 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text5: ; 0x4609d + db $08 ; asm + ld hl, $6044 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text6: ; 0x460a7 + db $08 ; asm + ld hl, $6050 + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text7: ; 0x460b1 + db $08 ; asm + ld hl, $605c + call LoadTrainerHeader + jp $24d7 + +RockTunnel2Text8: ; 0x460bb + db $08 ; asm + ld hl, $6068 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$460c5,$78 RockTunnel2Object: ; 0x4613d (size=100) db $3 ; border tile @@ -14982,14 +17073,14 @@ RockTunnel2Object: ; 0x4613d (size=100) db $0 ; signs db $8 ; people - db SPRITE_LASS, $d + 4, $b + 4, $ff, $d0, $41, $ce, $9 ; trainer - db SPRITE_HIKER, $a + 4, $6 + 4, $ff, $d0, $42, $d1, $9 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $d0, $43, $cf, $3 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $14 + 4, $ff, $d3, $44, $cf, $4 ; trainer - db SPRITE_HIKER, $a + 4, $1e + 4, $ff, $d0, $45, $d1, $a ; trainer - db SPRITE_LASS, $1c + 4, $e + 4, $ff, $d3, $46, $ce, $a ; trainer - db SPRITE_HIKER, $5 + 4, $21 + 4, $ff, $d3, $47, $d1, $b ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $1e + 4, $1a + 4, $ff, $d0, $48, $cf, $5 ; trainer + db SPRITE_LASS, $d + 4, $b + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $9 ; trainer + db SPRITE_HIKER, $a + 4, $6 + 4, $ff, $d0, $42, HIKER + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $3 + 4, $ff, $d0, $43, POKEMANIAC + $C8, $3 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $15 + 4, $14 + 4, $ff, $d3, $44, POKEMANIAC + $C8, $4 ; trainer + db SPRITE_HIKER, $a + 4, $1e + 4, $ff, $d0, $45, HIKER + $C8, $a ; trainer + db SPRITE_LASS, $1c + 4, $e + 4, $ff, $d3, $46, JR__TRAINER_F + $C8, $a ; trainer + db SPRITE_HIKER, $5 + 4, $21 + 4, $ff, $d3, $47, HIKER + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $1e + 4, $1a + 4, $ff, $d0, $48, POKEMANIAC + $C8, $5 ; trainer ; warp-to EVENT_DISP $14, $19, $21 ; ROCK_TUNNEL_1 @@ -14997,7 +17088,6 @@ RockTunnel2Object: ; 0x4613d (size=100) EVENT_DISP $14, $b, $17 ; ROCK_TUNNEL_1 EVENT_DISP $14, $3, $3 ; ROCK_TUNNEL_1 - RockTunnel2Blocks: ; 360 INCBIN "maps/rocktunnel2.blk" @@ -15009,7 +17099,9 @@ SeafoamIslands2_h: ; 0x46309 to 0x46315 (12 bytes) (bank=11) (id=159) dw $6376 ; objects -INCBIN "baserom.gbc",$46315,$46376 - $46315 +INCBIN "baserom.gbc",$46315,$46372 - $46315 +SeafoamIslands2Texts: ; 0x46372 + dw SeafoamIslands2Text1, SeafoamIslands2Text2 SeafoamIslands2Object: ; 0x46376 (size=72) db $7d ; border tile @@ -15037,7 +17129,6 @@ SeafoamIslands2Object: ; 0x46376 (size=72) EVENT_DISP $f, $b, $19 ; SEAFOAM_ISLANDS_3 EVENT_DISP $f, $3, $19 ; SEAFOAM_ISLANDS_1 - SeafoamIslands2Blocks: ; 135 INCBIN "maps/seafoamislands2.blk" @@ -15049,7 +17140,9 @@ SeafoamIslands3_h: ; 0x46445 to 0x46451 (12 bytes) (bank=11) (id=160) dw $64b2 ; objects -INCBIN "baserom.gbc",$46451,$464b2 - $46451 +INCBIN "baserom.gbc",$46451,$464ae - $46451 +SeafoamIslands3Texts: ; 0x464ae + dw SeafoamIslands3Text1, SeafoamIslands3Text2 SeafoamIslands3Object: ; 0x464b2 (size=72) db $7d ; border tile @@ -15077,7 +17170,6 @@ SeafoamIslands3Object: ; 0x464b2 (size=72) EVENT_DISP $f, $b, $19 ; SEAFOAM_ISLANDS_2 EVENT_DISP $f, $e, $19 ; SEAFOAM_ISLANDS_4 - SeafoamIslands3Blocks: ; 135 INCBIN "maps/seafoamislands3.blk" @@ -15089,7 +17181,9 @@ SeafoamIslands4_h: ; 0x46581 to 0x4658d (12 bytes) (bank=11) (id=161) dw $66a6 ; objects -INCBIN "baserom.gbc",$4658d,$466a6 - $4658d +INCBIN "baserom.gbc",$4658d,$4669a - $4658d +SeafoamIslands4Texts: ; 0x4669a + dw SeafoamIslands4Text1, SeafoamIslands4Text2, SeafoamIslands4Text3, SeafoamIslands4Text4, SeafoamIslands4Text5, SeafoamIslands4Text6 SeafoamIslands4Object: ; 0x466a6 (size=96) db $7d ; border tile @@ -15121,7 +17215,6 @@ SeafoamIslands4Object: ; 0x466a6 (size=96) EVENT_DISP $f, $11, $14 ; SEAFOAM_ISLANDS_5 EVENT_DISP $f, $11, $15 ; SEAFOAM_ISLANDS_5 - SeafoamIslands4Blocks: ; 135 INCBIN "maps/seafoamislands4.blk" @@ -15133,7 +17226,25 @@ SeafoamIslands5_h: ; 0x4678d to 0x46799 (12 bytes) (bank=11) (id=162) dw $68bc ; objects -INCBIN "baserom.gbc",$46799,$468bc - $46799 +INCBIN "baserom.gbc",$46799,$46893 - $46799 +SeafoamIslands5Text3: ; 0x46893 + db $08 ; asm + ld hl, $6886 + call LoadTrainerHeader + ld a, $4 + ld [$d668], a + jp $24d7 + +INCBIN "baserom.gbc",$468a2,$10 + +SeafoamIslands5Text4: ; 0x468b2 + TX_FAR _SeafoamIslands5Text4 + db $50 + +SeafoamIslands5Text5: ; 0x468b7 + TX_FAR _SeafoamIslands5Text5 + db $50 + SeafoamIslands5Object: ; 0x468bc (size=62) db $7d ; border tile @@ -15150,7 +17261,7 @@ SeafoamIslands5Object: ; 0x468bc (size=62) db $3 ; people db SPRITE_BOULDER, $f + 4, $4 + 4, $ff, $ff, $1 ; person db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $ff, $2 ; person - db SPRITE_BIRD, $1 + 4, $6 + 4, $ff, $d0, $43, $4a, $32 ; trainer + db SPRITE_BIRD, $1 + 4, $6 + 4, $ff, $d0, $43, ARTICUNO, $32 ; trainer ; warp-to EVENT_DISP $f, $11, $14 ; SEAFOAM_ISLANDS_4 @@ -15158,7 +17269,6 @@ SeafoamIslands5Object: ; 0x468bc (size=62) EVENT_DISP $f, $7, $b ; SEAFOAM_ISLANDS_4 EVENT_DISP $f, $4, $19 ; SEAFOAM_ISLANDS_4 - SeafoamIslands5Blocks: ; 135 INCBIN "maps/seafoamislands5.blk" INCBIN "baserom.gbc",$46981,$167f @@ -15211,8 +17321,6 @@ Route7Object: ; 0x48022 (size=47) EVENT_DISP $a, $a, $b ; ROUTE_7_GATE EVENT_DISP $a, $d, $5 ; PATH_ENTRANCE_ROUTE_7 -INCBIN "baserom.gbc",$48051,$0 - Route7Blocks: ; 90 INCBIN "maps/route7.blk" @@ -15340,14 +17448,83 @@ CeladonMart3_h: ; 0x48219 to 0x48225 (12 bytes) (bank=12) (id=124) dw $42c4 ; objects -INCBIN "baserom.gbc",$48225,$482c4 - $48225 +INCBIN "baserom.gbc",$48225,$4824a - $48225 +CeladonMart3Text1: ; 0x4824a + db $08 ; asm + ld a, [$d778] + bit 7, a + jr nz, .asm_a5463 ; 0x48250 + ld hl, $4278 + call PrintText + ld bc,(TM_18 << 8) | 1 + call $3e2e + jr nc, .asm_95f37 ; 0x4825e + ld hl, $d778 + set 7, [hl] + ld hl, $427d + jr .asm_81359 ; 0x48268 +.asm_95f37 ; 0x4826a + ld hl, $4288 + jr .asm_81359 ; 0x4826d +.asm_a5463 ; 0x4826f + ld hl, $4283 +.asm_81359 ; 0x48272 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48278,$15 + +CeladonMart3Text2: ; 0x4828d + TX_FAR _CeladonMart3Text2 + db $50 + +CeladonMart3Text3: ; 0x48292 + TX_FAR _CeladonMart3Text3 + db $50 + +CeladonMart3Text4: ; 0x48297 + TX_FAR _CeladonMart3Text4 + db $50 + +CeladonMart3Text5: ; 0x4829c + TX_FAR _CeladonMart3Text5 + db $50 + +CeladonMart3Text6: ; 0x482a1 + TX_FAR _CeladonMart3Text6 + db $50 + +CeladonMart3Text7: ; 0x482a6 + TX_FAR _CeladonMart3Text7 + db $50 + +CeladonMart3Text9: ; 0x482ab + TX_FAR _CeladonMart3Text9 + db $50 + +CeladonMart3Text11: ; 0x482b0 + TX_FAR _CeladonMart3Text11 + db $50 + +CeladonMart3Text13: ; 0x482b5 + TX_FAR _CeladonMart3Text13 + db $50 + +CeladonMart3Text14: ; 0x482ba + TX_FAR _CeladonMart3Text14 + db $50 + +CeladonMart3Text15: ; 0x482bf + TX_FAR _CeladonMart3Text15 + db $50 + CeladonMart3Object: ; 0x482c4 (size=94) db $f ; border tile db $3 ; warps db $1, $c, $0, CELADON_MART_4 db $1, $10, $1, CELADON_MART_2 - db $1, $1, $0, CELADON_MART_6 + db $1, $1, $0, CELADON_MART_ELEVATOR db $c ; signs db $4, $2, $6 ; CeladonMart3Text6 @@ -15373,8 +17550,7 @@ CeladonMart3Object: ; 0x482c4 (size=94) ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_4 EVENT_DISP $a, $1, $10 ; CELADON_MART_2 - EVENT_DISP $a, $1, $1 ; CELADON_MART_6 - + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart3Blocks: ; 40 INCBIN "maps/celadonmart3.blk" @@ -15387,14 +17563,27 @@ CeladonMart4_h: ; 0x4834a to 0x48356 (12 bytes) (bank=12) (id=125) dw $4370 ; objects -INCBIN "baserom.gbc",$48356,$48370 - $48356 +INCBIN "baserom.gbc",$48356,$48361 - $48356 + +CeladonMart4Text2: ; 0x48361 + TX_FAR _CeladonMart4Text2 + db $50 + +CeladonMart4Text3: ; 0x48366 + TX_FAR _CeladonMart4Text3 + db $50 + +CeladonMart4Text4: ; 0x4836b + TX_FAR _CeladonMart4Text4 + db $50 + CeladonMart4Object: ; 0x48370 (size=49) db $f ; border tile db $3 ; warps db $1, $c, $0, CELADON_MART_3 - db $1, $10, $1, CELADON_HOUSE - db $1, $1, $0, CELADON_MART_6 + db $1, $10, $1, CELADON_MART_5 + db $1, $1, $0, CELADON_MART_ELEVATOR db $1 ; signs db $1, $e, $4 ; CeladonMart4Text4 @@ -15406,55 +17595,94 @@ CeladonMart4Object: ; 0x48370 (size=49) ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_3 - EVENT_DISP $a, $1, $10 ; CELADON_HOUSE - EVENT_DISP $a, $1, $1 ; CELADON_MART_6 - + EVENT_DISP $a, $1, $10 ; CELADON_MART_5 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart4Blocks: ; 40 INCBIN "maps/celadonmart4.blk" -CeladonMart5_h: ; 0x483c9 to 0x483d5 (12 bytes) (bank=12) (id=126) +CeladonMartRoof_h: ; 0x483c9 to 0x483d5 (12 bytes) (bank=12) (id=126) db $12 ; tileset db $04, $0a ; dimensions (y, x) - dw CeladonMart5Blocks, $455b, $43d5 ; blocks, texts, scripts + dw CeladonMartRoofBlocks, $455b, $43d5 ; blocks, texts, scripts db $00 ; connections dw $45a8 ; objects -INCBIN "baserom.gbc",$483d5,$485a8 - $483d5 -CeladonMart5Object: ; 0x485a8 (size=36) +INCBIN "baserom.gbc",$483d5,$48567 - $483d5 + +CeladonMartRoofText1: ; 0x48567 + TX_FAR _CeladonMartRoofText1 + db $50 + +CeladonMartRoofText2: ; 0x4856c + db $08 ; asm + call $43d8 + ld a, [$cd37] + and a + jr z, .asm_914b9 ; 0x48574 + ld a, $1 + ld [$cc3c], a + ld hl, $459d + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_05aa4 ; 0x48588 + call $440c + jr .asm_05aa4 ; 0x4858d +.asm_914b9 ; 0x4858f + ld hl, $4598 + call PrintText +.asm_05aa4 ; 0x48595 + jp $24d7 + +INCBIN "baserom.gbc",$48598,$b + +CeladonMartRoofText6: ; 0x485a3 + TX_FAR _CeladonMartRoofText6 + db $50 + +CeladonMartRoofObject: ; 0x485a8 (size=36) db $42 ; border tile db $1 ; warps - db $2, $f, $0, CELADON_HOUSE + db $2, $f, $0, CELADON_MART_5 db $4 ; signs - db $1, $a, $3 ; CeladonMart5Text3 - db $1, $b, $4 ; CeladonMart5Text4 - db $2, $c, $5 ; CeladonMart5Text5 - db $2, $d, $6 ; CeladonMart5Text6 + db $1, $a, $3 ; CeladonMartRoofText3 + db $1, $b, $4 ; CeladonMartRoofText4 + db $2, $c, $5 ; CeladonMartRoofText5 + db $2, $d, $6 ; CeladonMartRoofText6 db $2 ; people db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $a + 4, $ff, $d2, $1 ; person db SPRITE_LITTLE_GIRL, $5 + 4, $5 + 4, $fe, $0, $2 ; person ; warp-to - EVENT_DISP $a, $2, $f ; CELADON_HOUSE - + EVENT_DISP $a, $2, $f ; CELADON_MART_5 -CeladonMart5Blocks: ; 40 +CeladonMartRoofBlocks: ; 40 INCBIN "maps/celadonmart5.blk" -CeladonMart6_h: ; 0x485f4 to 0x48600 (12 bytes) (bank=12) (id=127) +CeladonMartElevator_h: ; 0x485f4 to 0x48600 (12 bytes) (bank=12) (id=127) db $12 ; tileset db $02, $02 ; dimensions (y, x) - dw CeladonMart6Blocks, $465c, $4600 ; blocks, texts, scripts + dw CeladonMartElevatorBlocks, $465c, $4600 ; blocks, texts, scripts db $00 ; connections dw $466d ; objects -INCBIN "baserom.gbc",$48600,$4866d - $48600 -CeladonMart6Object: ; 0x4866d (size=23) +INCBIN "baserom.gbc",$48600,$4865e - $48600 +CeladonMartElevatorText1: ; 0x4865e + db $08 ; asm + call $4631 + ld hl, $464a + ld a, $61 + call Predef + jp $24d7 + +CeladonMartElevatorObject: ; 0x4866d (size=23) db $f ; border tile db $2 ; warps @@ -15462,7 +17690,7 @@ CeladonMart6Object: ; 0x4866d (size=23) db $3, $2, $5, CELADON_MART_1 db $1 ; signs - db $0, $3, $1 ; CeladonMart6Text1 + db $0, $3, $1 ; CeladonMartElevatorText1 db $0 ; people @@ -15470,8 +17698,7 @@ CeladonMart6Object: ; 0x4866d (size=23) EVENT_DISP $2, $3, $1 ; CELADON_MART_1 EVENT_DISP $2, $3, $2 ; CELADON_MART_1 - -CeladonMart6Blocks: ; 4 +CeladonMartElevatorBlocks: ; 4 INCBIN "maps/celadonmart6.blk" CeladonMansion1_h: ; 0x48688 to 0x48694 (12 bytes) (bank=12) (id=128) @@ -15482,7 +17709,39 @@ CeladonMansion1_h: ; 0x48688 to 0x48694 (12 bytes) (bank=12) (id=128) dw $46cf ; objects -INCBIN "baserom.gbc",$48694,$486cf - $48694 +INCBIN "baserom.gbc",$48694,$48697 - $48694 +CeladonMansion1Texts: ; 0x48697 + dw CeladonMansion1Text1, CeladonMansion1Text2, CeladonMansion1Text3, CeladonMansion1Text4, CeladonMansion1Text5 +INCBIN "baserom.gbc",$486a1,$6 + +CeladonMansion1Text1: ; 0x486a7 + TX_FAR _CeladonMansion1Text1 + db $08 ; asm + ld a, $4d + jp $46a1 + +CeladonMansion1Text2: ; 0x486b1 + TX_FAR _CeladonMansion1Text2 + db $50 + +CeladonMansion1Text3: ; 0x486b6 + TX_FAR _CeladonMansion1Text3 + db $8 + ld a, $4 + jp $46a1 +; 0x486c0 + +CeladonMansion1Text4: ; 0x486c0 + TX_FAR _CeladonMansion1Text4 + db $8 + ld a, $f + jp $46a1 +; 0x486ca + +CeladonMansion1Text5: ; 0x486ca + TX_FAR _CeladonMansion1Text5 + db $50 + CeladonMansion1Object: ; 0x486cf (size=71) db $f ; border tile @@ -15509,7 +17768,6 @@ CeladonMansion1Object: ; 0x486cf (size=71) EVENT_DISP $4, $1, $7 ; CELADON_MANSION_2 EVENT_DISP $4, $1, $2 ; CELADON_MANSION_2 - CeladonMansion1Blocks: ; 24 INCBIN "maps/celadonmansion1.blk" @@ -15521,7 +17779,14 @@ CeladonMansion2_h: ; 0x4872e to 0x4873a (12 bytes) (bank=12) (id=129) dw $4745 ; objects -INCBIN "baserom.gbc",$4873a,$48745 - $4873a +INCBIN "baserom.gbc",$4873a,$4873e - $4873a +CeladonMansion2Texts: ; 0x4873e + dw CeladonMansion2Text1 + +CeladonMansion2Text1: ; 0x48740 + TX_FAR _CeladonMansion2Text1 + db $50 + CeladonMansion2Object: ; 0x48745 (size=39) db $f ; border tile @@ -15542,7 +17807,6 @@ CeladonMansion2Object: ; 0x48745 (size=39) EVENT_DISP $4, $1, $2 ; CELADON_MANSION_1 EVENT_DISP $4, $1, $4 ; CELADON_MANSION_3 - CeladonMansion2Blocks: ; 24 INCBIN "maps/celadonmansion2.blk" @@ -15554,7 +17818,54 @@ CeladonMansion3_h: ; 0x48784 to 0x48790 (12 bytes) (bank=12) (id=130) dw $47ff ; objects -INCBIN "baserom.gbc",$48790,$487ff - $48790 +INCBIN "baserom.gbc",$48790,$487a3 - $48790 + +CeladonMansion3Text1: ; 0x487a3 + TX_FAR _CeladonMansion3Text1 + db $50 + +CeladonMansion3Text2: ; 0x487a8 + TX_FAR _CeladonMansion3Text2 + db $50 + +CeladonMansion3Text3: ; 0x487ad + TX_FAR _CeladonMansion3Text3 + db $50 + +CeladonMansion3Text4: ; 0x487b2 + db $08 ; asm + ld hl, $d2f7 + ld b, $13 + call $2b7f + ld a, [$d11e] + cp $96 + jr nc, .asm_f03d0 ; 0x487c0 + ld hl, $47d0 + jr .asm_c13f0 ; 0x487c5 +.asm_f03d0 ; 0x487c7 + ld hl, $47d5 +.asm_c13f0 ; 0x487ca + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$487d0,$1b + +CeladonMansion3Text5: ; 0x487eb + TX_FAR _CeladonMansion3Text5 + db $50 + +CeladonMansion3Text6: ; 0x487f0 + TX_FAR _CeladonMansion3Text6 + db $50 + +CeladonMansion3Text7: ; 0x487f5 + TX_FAR _CeladonMansion3Text7 + db $50 + +CeladonMansion3Text8: ; 0x487fa + TX_FAR _CeladonMansion3Text8 + db $50 + CeladonMansion3Object: ; 0x487ff (size=72) db $f ; border tile @@ -15582,7 +17893,6 @@ CeladonMansion3Object: ; 0x487ff (size=72) EVENT_DISP $4, $1, $2 ; CELADON_MANSION_4 EVENT_DISP $4, $1, $4 ; CELADON_MANSION_2 - CeladonMansion3Blocks: ; 24 INCBIN "maps/celadonmansion3.blk" @@ -15594,7 +17904,14 @@ CeladonMansion4_h: ; 0x4885f to 0x4886b (12 bytes) (bank=12) (id=131) dw $4875 ; objects -INCBIN "baserom.gbc",$4886b,$48875 - $4886b +INCBIN "baserom.gbc",$4886b,$4886e - $4886b +CeladonMansion4Texts: ; 0x4886e + dw CeladonMansion4Text1 + +CeladonMansion4Text1: ; 0x48870 + TX_FAR _CeladonMansion4Text1 + db $50 + CeladonMansion4Object: ; 0x48875 (size=31) db $9 ; border tile @@ -15613,7 +17930,6 @@ CeladonMansion4Object: ; 0x48875 (size=31) EVENT_DISP $4, $1, $2 ; CELADON_MANSION_3 EVENT_DISP $4, $7, $2 ; CELADON_MANSION_5 - CeladonMansion4Blocks: ; 24 INCBIN "maps/celadonmansion4.blk" @@ -15625,7 +17941,14 @@ CeladonPokecenter_h: ; 0x488ac to 0x488b8 (12 bytes) (bank=12) (id=133) dw $48d2 ; objects -INCBIN "baserom.gbc",$488b8,$488d2 - $488b8 +INCBIN "baserom.gbc",$488b8,$488c8 - $488b8 + +CeladonPokecenterText2: ; _CeladonPokecenterText2 +CeladonPokecenterText1: ; 0x488c8 + TX_FAR _CeladonPokecenterText1 + +INCBIN "baserom.gbc",$488c8 + 4,$488d2 - ($488c8+4) + CeladonPokecenterObject: ; 0x488d2 (size=44) db $0 ; border tile @@ -15645,7 +17968,6 @@ CeladonPokecenterObject: ; 0x488d2 (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - CeladonGym_h: ; 0x488fe to 0x4890a (12 bytes) (bank=12) (id=134) db $07 ; tileset db $09, $05 ; dimensions (y, x) @@ -15654,7 +17976,92 @@ CeladonGym_h: ; 0x488fe to 0x4890a (12 bytes) (bank=12) (id=134) dw $4b30 ; objects -INCBIN "baserom.gbc",$4890a,$48b30 - $4890a +INCBIN "baserom.gbc",$4890a,$48a11 - $4890a +CeladonGymText1: ; 0x48a11 + db $08 ; asm + ld a, [$d77c] + bit 1, a + jr z, .asm_16064 ; 0x48a17 + bit 0, a + jr nz, .asm_3b22c ; 0x48a1b + call z, $4963 + call $30b6 + jr .asm_96252 ; 0x48a23 +.asm_3b22c ; 0x48a25 + ld hl, $4a68 + call PrintText + jr .asm_96252 ; 0x48a2b +.asm_16064 ; 0x48a2d + ld hl, $4a5e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4a63 + ld de, $4a63 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $4 + ld [$d05c], a + ld a, $3 + ld [$d5ff], a + ld [$da39], a +.asm_96252 ; 0x48a5b + jp $24d7 + +INCBIN "baserom.gbc",$48a5e,$48a81 - $48a5e +CeladonGymText2: ; 0x48a81 + db $08 ; asm + ld hl, $49bc + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48a8b,$48a9a - $48a8b +CeladonGymText3: ; 0x48a9a + db $08 ; asm + ld hl, $49c8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48aa4,$48ab3 - $48aa4 +CeladonGymText4: ; 0x48ab3 + db $08 ; asm + ld hl, $49d4 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48abd,$48acc - $48abd +CeladonGymText5: ; 0x48acc + db $08 ; asm + ld hl, $49e0 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48ad6,$48ae5 - $48ad6 +CeladonGymText6: ; 0x48ae5 + db $08 ; asm + ld hl, $49ec + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48aef,$48afe - $48aef +CeladonGymText7: ; 0x48afe + db $08 ; asm + ld hl, $49f8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48b08,$48b17 - $48b08 +CeladonGymText8: ; 0x48b17 + db $08 ; asm + ld hl, $4a04 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$48b21,$f CeladonGymObject: ; 0x48b30 (size=84) db $3 ; border tile @@ -15665,20 +18072,19 @@ CeladonGymObject: ; 0x48b30 (size=84) db $0 ; signs db $8 ; people - db SPRITE_ERIKA, $3 + 4, $4 + 4, $ff, $d0, $41, $ed, $1 ; trainer - db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d3, $42, $cb, $11 ; trainer - db SPRITE_FOULARD_WOMAN, $a + 4, $7 + 4, $ff, $d2, $43, $da, $1 ; trainer - db SPRITE_LASS, $5 + 4, $9 + 4, $ff, $d0, $44, $ce, $b ; trainer - db SPRITE_FOULARD_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $45, $da, $2 ; trainer - db SPRITE_LASS, $3 + 4, $6 + 4, $ff, $d0, $46, $cb, $12 ; trainer - db SPRITE_FOULARD_WOMAN, $3 + 4, $3 + 4, $ff, $d0, $47, $da, $3 ; trainer - db SPRITE_LASS, $3 + 4, $5 + 4, $ff, $d0, $48, $e8, $1 ; trainer + db SPRITE_ERIKA, $3 + 4, $4 + 4, $ff, $d0, $41, ERIKA + $C8, $1 ; trainer + db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d3, $42, LASS + $C8, $11 ; trainer + db SPRITE_FOULARD_WOMAN, $a + 4, $7 + 4, $ff, $d2, $43, BEAUTY + $C8, $1 ; trainer + db SPRITE_LASS, $5 + 4, $9 + 4, $ff, $d0, $44, JR__TRAINER_F + $C8, $b ; trainer + db SPRITE_FOULARD_WOMAN, $5 + 4, $1 + 4, $ff, $d0, $45, BEAUTY + $C8, $2 ; trainer + db SPRITE_LASS, $3 + 4, $6 + 4, $ff, $d0, $46, LASS + $C8, $12 ; trainer + db SPRITE_FOULARD_WOMAN, $3 + 4, $3 + 4, $ff, $d0, $47, BEAUTY + $C8, $3 ; trainer + db SPRITE_LASS, $3 + 4, $5 + 4, $ff, $d0, $48, COOLTRAINER_F + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $11, $4 EVENT_DISP $5, $11, $5 - CeladonGymBlocks: ; 45 INCBIN "maps/celadongym.blk" @@ -15690,7 +18096,265 @@ CeladonGameCorner_h: ; 0x48bb1 to 0x48bbd (12 bytes) (bank=12) (id=135) dw $4fa0 ; objects -INCBIN "baserom.gbc",$48bbd,$48fa0 - $48bbd +INCBIN "baserom.gbc",$48bbd,$48ca4 - $48bbd + +CeladonGameCornerText1: ; 0x48ca4 + TX_FAR _CeladonGameCornerText1 + db $50 + +CeladonGameCornerText2: ; 0x48ca9 + db $08 ; asm + call $4f1e + ld hl, $4d22 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_c650b ; 0x48cba + ld b,COIN_CASE + call $3493 + jr z, .asm_ed086 ; 0x48cc1 + call $4f95 + jr nc, .asm_31338 ; 0x48cc6 + xor a + ldh [$9f], a + ldh [$a1], a + ld a, $10 + ldh [$a0], a + call $35a6 + jr nc, .asm_b6ef0 ; 0x48cd4 + ld hl, $4d31 + jr .asm_e2afd ; 0x48cd9 +.asm_b6ef0 ; 0x48cdb + xor a + ldh [$9f], a + ldh [$a1], a + ld a, $10 + ldh [$a0], a + ld hl, $ffa1 + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $50 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + call $4f1e + ld hl, $4d27 + jr .asm_e2afd ; 0x48d0d +.asm_c650b ; 0x48d0f + ld hl, $4d2c + jr .asm_e2afd ; 0x48d12 +.asm_31338 ; 0x48d14 + ld hl, $4d36 + jr .asm_e2afd ; 0x48d17 +.asm_ed086 ; 0x48d19 + ld hl, $4d3b +.asm_e2afd ; 0x48d1c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48d22,$1e + +CeladonGameCornerText3: ; 0x48d40 + TX_FAR _CeladonGameCornerText3 + db $50 + +CeladonGameCornerText4: ; 0x48d45 + TX_FAR _CeladonGameCornerText4 + db $50 + +CeladonGameCornerText5: ; 0x48d4a + db $08 ; asm + ld a, [$d77e] + bit 2, a + jr nz, .asm_d0957 ; 0x48d50 + ld hl, $4d9c + call PrintText + ld b,COIN_CASE + call $3493 + jr z, .asm_5aef9 ; 0x48d5d + call $4f95 + jr nc, .asm_98546 ; 0x48d62 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $10 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 2, [hl] + ld a, $1 + ld [$cc3c], a + ld hl, $4da1 + jr .asm_c7d1a ; 0x48d87 +.asm_d0957 ; 0x48d89 + ld hl, $4dac + jr .asm_c7d1a ; 0x48d8c +.asm_98546 ; 0x48d8e + ld hl, $4da7 + jr .asm_c7d1a ; 0x48d91 +.asm_5aef9 ; 0x48d93 + ld hl, $4f19 +.asm_c7d1a ; 0x48d96 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48d9c,$15 + +CeladonGameCornerText6: ; 0x48db1 + TX_FAR _CeladonGameCornerText6 + db $50 + +CeladonGameCornerText7: ; 0x48db6 + db $08 ; asm + ld a, [$d77c] + bit 1, a + ld hl, $4dca + jr z, .asm_be3fd ; 0x48dbf + ld hl, $4dcf +.asm_be3fd ; 0x48dc4 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48dca,$a + +CeladonGameCornerText8: ; 0x48dd4 + TX_FAR _CeladonGameCornerText8 + db $50 + +CeladonGameCornerText9: ; 0x48dd9 + db $08 ; asm + ld a, [$d77e] + bit 4, a + jr nz, .asm_ed8bc ; 0x48ddf + ld hl, $4e26 + call PrintText + ld b,COIN_CASE + call $3493 + jr z, .asm_df794 ; 0x48dec + call $4f95 + jr nc, .asm_f17c3 ; 0x48df1 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $20 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 4, [hl] + ld hl, $4e2b + jr .asm_0ddc2 ; 0x48e11 +.asm_ed8bc ; 0x48e13 + ld hl, $4e36 + jr .asm_0ddc2 ; 0x48e16 +.asm_f17c3 ; 0x48e18 + ld hl, $4e31 + jr .asm_0ddc2 ; 0x48e1b +.asm_df794 ; 0x48e1d + ld hl, $4f19 +.asm_0ddc2 ; 0x48e20 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48e26,$48e3b - $48e26 +CeladonGameCornerText10: ; 0x48e3b + db $08 ; asm + ld a, [$d77e] + bit 3, a + jr nz, .asm_ff080 ; 0x48e41 + ld hl, $4e88 + call PrintText + ld b,COIN_CASE + call $3493 + jr z, .asm_4fb0c ; 0x48e4e + call $4f95 + jr z, .asm_9505a ; 0x48e53 + xor a + ldh [$9f], a + ldh [$a0], a + ld a, $20 + ldh [$a1], a + ld de, $d5a5 + ld hl, $ffa1 + ld c, $2 + ld a, $b + call Predef + ld hl, $d77e + set 3, [hl] + ld hl, $4e8d + jr .asm_78d65 ; 0x48e73 +.asm_ff080 ; 0x48e75 + ld hl, $4e98 + jr .asm_78d65 ; 0x48e78 +.asm_9505a ; 0x48e7a + ld hl, $4e93 + jr .asm_78d65 ; 0x48e7d +.asm_4fb0c ; 0x48e7f + ld hl, $4f19 +.asm_78d65 ; 0x48e82 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$48e88,$48e9d - $48e88 +CeladonGameCornerText11: ; 0x48e9d + db $08 ; asm + ld hl, $4ece + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4ed3 + ld de, $4ed3 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + xor a + ldh [$b4], a + ldh [$b3], a + ldh [$b2], a + ld a, $1 + ld [$d65f], a + jp $24d7 + +INCBIN "baserom.gbc",$48ece,$48edd - $48ece +CeladonGameCornerText12: ; 0x48edd + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $4f09 + call PrintText + call $3748 + ld a, $ad + call $23b1 + call $3748 + ld hl, $d77e + set 1, [hl] + ld a, $43 + ld [$d09f], a + ld bc, $0208 + ld a, $17 + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$48f09,$97 CeladonGameCornerObject: ; 0x48fa0 (size=99) db $f ; border tile @@ -15713,36 +18377,48 @@ CeladonGameCornerObject: ; 0x48fa0 (size=99) db SPRITE_GAMBLER, $f + 4, $b + 4, $ff, $d3, $8 ; person db SPRITE_MART_GUY, $b + 4, $e + 4, $ff, $d2, $9 ; person db SPRITE_GENTLEMAN, $d + 4, $11 + 4, $ff, $d3, $a ; person - db SPRITE_ROCKET, $5 + 4, $9 + 4, $ff, $d1, $4b, $e6, $7 ; trainer + db SPRITE_ROCKET, $5 + 4, $9 + 4, $ff, $d1, $4b, ROCKET + $C8, $7 ; trainer ; warp-to EVENT_DISP $a, $11, $f EVENT_DISP $a, $11, $10 EVENT_DISP $a, $4, $11 ; ROCKET_HIDEOUT_1 - CeladonGameCornerBlocks: ; 90 INCBIN "maps/celadongamecorner.blk" -CeladonHouse_h: ; 0x4905d to 0x49069 (12 bytes) (bank=12) (id=136) +CeladonMart5_h: ; 0x4905d to 0x49069 (12 bytes) (bank=12) (id=136) db $12 ; tileset db $04, $0a ; dimensions (y, x) - dw CeladonHouseBlocks, $506c, $5069 ; blocks, texts, scripts + dw CeladonMart5Blocks, $506c, $5069 ; blocks, texts, scripts db $00 ; connections dw $5085 ; objects -INCBIN "baserom.gbc",$49069,$49085 - $49069 -CeladonHouseObject: ; 0x49085 (size=55) +INCBIN "baserom.gbc",$49069,$49076 - $49069 + +CeladonMart5Text1: ; 0x49076 + TX_FAR _CeladonMart5Text1 + db $50 + +CeladonMart5Text2: ; 0x4907b + TX_FAR _CeladonMart5Text2 + db $50 + +CeladonMart5Text5: ; 0x49080 + TX_FAR _CeladonMart5Text5 + db $50 + +CeladonMart5Object: ; 0x49085 (size=55) db $f ; border tile db $3 ; warps - db $1, $c, $0, CELADON_MART_5 + db $1, $c, $0, CELADON_MART_ROOF db $1, $10, $1, CELADON_MART_4 - db $1, $1, $0, CELADON_MART_6 + db $1, $1, $0, CELADON_MART_ELEVATOR db $1 ; signs - db $1, $e, $5 ; CeladonHouseText5 + db $1, $e, $5 ; CeladonMart5Text5 db $4 ; people db SPRITE_GENTLEMAN, $5 + 4, $e + 4, $fe, $1, $1 ; person @@ -15751,11 +18427,11 @@ CeladonHouseObject: ; 0x49085 (size=55) db SPRITE_MART_GUY, $3 + 4, $6 + 4, $ff, $d0, $4 ; person ; warp-to - EVENT_DISP $a, $1, $c ; CELADON_MART_5 + EVENT_DISP $a, $1, $c ; CELADON_MART_ROOF EVENT_DISP $a, $1, $10 ; CELADON_MART_4 - EVENT_DISP $a, $1, $1 ; CELADON_MART_6 + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR -CeladonHouseBlocks: ; 40 +CeladonMart5Blocks: ; 40 INCBIN "maps/celadonhouse.blk" CeladonPrizeRoom_h: ; 0x490e4 to 0x490f0 (12 bytes) (bank=12) (id=137) @@ -15766,7 +18442,17 @@ CeladonPrizeRoom_h: ; 0x490e4 to 0x490f0 (12 bytes) (bank=12) (id=137) dw $5108 ; objects -INCBIN "baserom.gbc",$490f0,$49108 - $490f0 +INCBIN "baserom.gbc",$490f0,$490fd - $490f0 + +CeladonPrizeRoomText1: ; 0x490fd + TX_FAR _CeladonPrizeRoomText1 + db $50 + +CeladonPrizeRoomText2: ; 0x49102 + TX_FAR _CeladonPrizeRoomText2 + db $50 + +INCBIN "baserom.gbc",$49107,$1 CeladonPrizeRoomObject: ; 0x49108 (size=41) db $f ; border tile @@ -15799,7 +18485,50 @@ CeladonDiner_h: ; 0x49145 to 0x49151 (12 bytes) (bank=12) (id=138) dw $51bc ; objects -INCBIN "baserom.gbc",$49151,$491bc - $49151 +INCBIN "baserom.gbc",$49151,$4915f - $49151 + +CeladonDinerText1: ; 0x4915f + TX_FAR _CeladonDinerText1 + db $50 + +CeladonDinerText2: ; 0x49164 + TX_FAR _CeladonDinerText2 + db $50 + +CeladonDinerText3: ; 0x49169 + TX_FAR _CeladonDinerText3 + db $50 + +CeladonDinerText4: ; 0x4916e + TX_FAR _CeladonDinerText4 + db $50 + +CeladonDinerText5: ; 0x49173 + db $08 ; asm + ld a, [$d783] + bit 0, a + jr nz, .asm_eb14d ; 0x49179 + ld hl, $51a7 + call PrintText + ld bc,(COIN_CASE << 8) | 1 + call $3e2e + jr nc, .asm_78e93 ; 0x49187 + ld hl, $d783 + set 0, [hl] + ld hl, $51ac + call PrintText + jr .asm_68b61 ; 0x49194 +.asm_78e93 ; 0x49196 + ld hl, $51b2 + call PrintText + jr .asm_68b61 ; 0x4919c +.asm_eb14d ; 0x4919e + ld hl, $51b7 + call PrintText +.asm_68b61 ; 0x491a4 + jp $24d7 + +INCBIN "baserom.gbc",$491a7,$15 CeladonDinerObject: ; 0x491bc (size=50) db $f ; border tile @@ -15832,7 +18561,21 @@ CeladonHouse2_h: ; 0x49202 to 0x4920e (12 bytes) (bank=12) (id=139) dw $5227 ; objects -INCBIN "baserom.gbc",$4920e,$49227 - $4920e +INCBIN "baserom.gbc",$4920e,$49212 - $4920e +CeladonHouse2Texts: ; 0x49212 + dw CeladonHouse2Text1, CeladonHouse2Text2, CeladonHouse2Text3 + +CeladonHouse2Text1: ; 0x49218 + TX_FAR _CeladonHouse2Text1 + db $50 + +CeladonHouse2Text2: ; 0x4921d + TX_FAR _CeladonHouse2Text2 + db $50 + +CeladonHouse2Text3: ; 0x49222 + TX_FAR _CeladonHouse2Text3 + db $50 CeladonHouse2Object: ; 0x49227 (size=38) db $f ; border tile @@ -15863,7 +18606,21 @@ CeladonHotel_h: ; 0x4925d to 0x49269 (12 bytes) (bank=12) (id=140) dw $5281 ; objects -INCBIN "baserom.gbc",$49269,$49281 - $49269 +INCBIN "baserom.gbc",$49269,$4926c - $49269 +CeladonHotelTexts: ; 0x4926c + dw CeladonHotelText1, CeladonHotelText2, CeladonHotelText3 + +CeladonHotelText1: ; 0x49272 + TX_FAR _CeladonHotelText1 + db $50 + +CeladonHotelText2: ; 0x49277 + TX_FAR _CeladonHotelText2 + db $50 + +CeladonHotelText3: ; 0x4927c + TX_FAR _CeladonHotelText3 + db $50 CeladonHotelObject: ; 0x49281 (size=38) db $0 ; border tile @@ -15894,7 +18651,75 @@ MtMoonPokecenter_h: ; 0x492c3 to 0x492cf (12 bytes) (bank=12) (id=68) dw $5376 ; objects -INCBIN "baserom.gbc",$492cf,$49376 - $492cf +INCBIN "baserom.gbc",$492cf,$492e1 - $492cf + +db $ff +MtMoonPokecenterText1: ; 0x492e1 + TX_FAR _MtMoonPokecenterText1 + db $50 + +MtMoonPokecenterText3: ; 0x492e7 + TX_FAR _MtMoonPokecenterText3 + db $50 + +MtMoonPokecenterText4: ; 0x492ec + db $08 ; asm + ld a, [$d7c6] + add a + jp c, $5353 + ld hl, $535c + call PrintText + ld a, $13 + ld [$d125], a + call $30e8 + call $35ec + ld a, [$cc26] + and a + jp nz, $534e + ldh [$9f], a + ldh [$a1], a + ld a, $5 + ldh [$a0], a + call $35a6 + jr nc, .asm_faa09 ; 0x49317 + ld hl, $5366 + jr .asm_ae354 ; 0x4931c +.asm_faa09 ; 0x4931e + ld bc,(MAGIKARP << 8) | 5 + call GivePokemon + jr nc, .asm_38361 ; 0x49324 + xor a + ld [W_WHICHTRADE], a + ld [$cd3f], a + ld a, $5 + ld [$cd3e], a + ld hl, $cd3f + ld de, $d349 + ld c, $3 + ld a, $c + call Predef + ld a, $13 + ld [$d125], a + call $30e8 + ld hl, $d7c6 + set 7, [hl] + jr .asm_38361 ; 0x4934c + ld hl, $5361 + jr .asm_ae354 ; 0x49351 + ld hl, $536b +.asm_ae354 ; 0x49356 + call PrintText +.asm_38361 ; 0x49359 + jp $24d7 + +INCBIN "baserom.gbc",$4935c,$14 + +MtMoonPokecenterText5: ; 0x49370 + TX_FAR _MtMoonPokecenterText5 + db $50 + +;XXX wtf? +db $f6 MtMoonPokecenterObject: ; 0x49376 (size=56) db $0 ; border tile @@ -15925,7 +18750,21 @@ RockTunnelPokecenter_h: ; 0x493ae to 0x493ba (12 bytes) (id=81) dw $53d4 ; objects -INCBIN "baserom.gbc",$493ba,$493d4 - $493ba +INCBIN "baserom.gbc",$493ba,$493c8 - $493ba + +db $ff +RockTunnelPokecenterText1: ; 0x493c8 + TX_FAR _RockTunnelPokecenterText1 + +INCBIN "baserom.gbc",$493cd,$493ce - $493cd + +RockTunnelPokecenterText3: ; 0x493ce + TX_FAR _RockTunnelPokecenterText3 + db $50 + +; RockTunnelPokecenterText4: ; 0x493d3 + +INCBIN "baserom.gbc",$493ce+5,$493d4-($493ce+5) RockTunnelPokecenterObject: ; 0x493d4 (size=44) db $0 ; border tile @@ -15954,7 +18793,13 @@ Route11Gate_h: ; 0x49400 to 0x4940c (12 bytes) (id=84) dw $5416 ; objects -INCBIN "baserom.gbc",$4940c,$49416 - $4940c +INCBIN "baserom.gbc",$4940c,$4940f - $4940c +Route11GateTexts: ; 0x4940f + dw Route11GateText1 + +Route11GateText1: ; 0x49411 + TX_FAR _Route11GateText1 + db $50 Route11GateObject: ; 0x49416 (size=50) db $a ; border tile @@ -15986,7 +18831,31 @@ Route11GateUpstairs_h: ; 0x49448 to 0x49454 (12 bytes) (id=86) dw $54da ; objects -INCBIN "baserom.gbc",$49454,$494da - $49454 +INCBIN "baserom.gbc",$49454,$4945f - $49454 +Route11GateUpstairsText1: ; 0x4945f + db $08 ; asm + xor a + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$4946c,$494a8 - $4946c +Route11GateUpstairsText3: ; 0x494a8 + db $08 ; asm + ld a, [$c109] + cp $4 + jp nz, $55c9 + ld a, [$d7d8] + bit 7, a + ld hl, $54c4 + jr z, .asm_5ac80 ; 0x494b9 + ld hl, $54c9 +.asm_5ac80 ; 0x494be + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$494c4,$16 Route11GateUpstairsObject: ; 0x494da (size=30) db $a ; border tile @@ -16013,7 +18882,13 @@ Route12Gate_h: ; 0x494f8 to 0x49504 (12 bytes) (id=87) dw $550e ; objects -INCBIN "baserom.gbc",$49504,$4950e - $49504 +INCBIN "baserom.gbc",$49504,$49507 - $49504 +Route12GateTexts: ; 0x49507 + dw Route12GateText1 + +Route12GateText1: ; 0x49509 + TX_FAR _Route12GateText1 + db $50 Route12GateObject: ; 0x4950e (size=50) db $a ; border tile @@ -16048,7 +18923,61 @@ Route12GateUpstairs_h: ; 0x49554 to 0x49560 (12 bytes) (id=195) dw $55de ; objects -INCBIN "baserom.gbc",$49560,$495de - $49560 +INCBIN "baserom.gbc",$49560,$49569 - $49560 +Route12GateUpstairsText1: ; 0x49569 + db $08 ; asm + ld a, [$d7d7] + rrca + jr c, .asm_0ad3c ; 0x4956e + ld hl, $559c + call PrintText + ld bc,(TM_39 << 8) | 1 + call $3e2e + jr nc, .asm_4c2be ; 0x4957c + ld hl, $55a1 + call PrintText + ld hl, $d7d7 + set 0, [hl] + jr .asm_4ba56 ; 0x49589 +.asm_4c2be ; 0x4958b + ld hl, $55ac + call PrintText + jr .asm_4ba56 ; 0x49591 +.asm_0ad3c ; 0x49593 + ld hl, $55a7 + call PrintText +.asm_4ba56 ; 0x49599 + jp $24d7 + +INCBIN "baserom.gbc",$4959c,$495b1 - $4959c +Route12GateUpstairsText2: ; 0x495b1 + db $08 ; asm + ld hl, $55b8 + jp $55c9 + rla + ld e, d + ld c, c + inc hl + ld d, b + ld [$c421], sp + ld d, l + jp $55c9 + rla + add [hl] + ld c, c + inc hl + ld d, b + ld a, [$c109] + cp $4 + jr z, .asm_2fb7f ; 0x495ce + ld a, $1 + jr .asm_b02ad ; 0x495d2 +.asm_2fb7f ; 0x495d4 + call PrintText + xor a +.asm_b02ad ; 0x495d8 + ld [$cc3c], a + jp $24d7 Route12GateUpstairsObject: ; 0x495de (size=24) db $a ; border tile @@ -16066,7 +18995,6 @@ Route12GateUpstairsObject: ; 0x495de (size=24) ; warp-to EVENT_DISP $4, $7, $7 ; ROUTE_12_GATE - Route15Gate_h: ; 0x495f6 to 0x49602 (12 bytes) (id=184) db $0c ; tileset db $05, $04 ; dimensions (y, x) @@ -16075,7 +19003,13 @@ Route15Gate_h: ; 0x495f6 to 0x49602 (12 bytes) (id=184) dw $560c ; objects -INCBIN "baserom.gbc",$49602,$4960c - $49602 +INCBIN "baserom.gbc",$49602,$49605 - $49602 +Route15GateTexts: ; 0x49605 + dw Route15GateText1 + +Route15GateText1: ; 0x49607 + TX_FAR _Route15GateText1 + db $50 Route15GateObject: ; 0x4960c (size=50) db $a ; border tile @@ -16109,7 +19043,25 @@ Route16GateMap_h: ; 0x496b2 to 0x496be (12 bytes) (id=186) dw $578b ; objects -INCBIN "baserom.gbc",$496be,$4978b - $496be +INCBIN "baserom.gbc",$496be,$49760 - $496be +Route16GateMapText1: ; 0x49760 + db $08 ; asm + call $5755 + jr z, .asm_0bdf3 ; 0x49764 + ld hl, $577c + call PrintText + jr .asm_56c9d ; 0x4976c +.asm_0bdf3 ; 0x4976e + ld hl, $5777 + call PrintText +.asm_56c9d ; 0x49774 + jp $24d7 + +INCBIN "baserom.gbc",$49777,$f + +Route16GateMapText2: ; 0x49786 + TX_FAR _Route16GateMapText2 + db $50 Route16GateMapObject: ; 0x4978b (size=88) db $a ; border tile @@ -16153,7 +19105,21 @@ Route16GateUpstairs_h: ; 0x497ff to 0x4980b (12 bytes) (id=187) dw $584c ; objects -INCBIN "baserom.gbc",$4980b,$4984c - $4980b +INCBIN "baserom.gbc",$4980b,$49816 - $4980b +Route16GateUpstairsText1: ; 0x49816 + db $08 ; asm + ld hl, $5820 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$49820,$49825 - $49820 +Route16GateUpstairsText2: ; 0x49825 + db $08 ; asm + ld hl, $582f + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$4982f,$1d Route16GateUpstairsObject: ; 0x4984c (size=30) db $a ; border tile @@ -16180,7 +19146,21 @@ Route18Gate_h: ; 0x4986a to 0x49876 (12 bytes) (id=190) dw $5937 ; objects -INCBIN "baserom.gbc",$49876,$49937 - $49876 +INCBIN "baserom.gbc",$49876,$49911 - $49876 +Route18GateText1: ; 0x49911 + db $08 ; asm + call $5755 + jr z, .asm_3c84d ; 0x49915 + ld hl, $592d + call PrintText + jr .asm_a8410 ; 0x4991d +.asm_3c84d ; 0x4991f + ld hl, $5928 + call PrintText +.asm_a8410 ; 0x49925 + jp $24d7 + +INCBIN "baserom.gbc",$49928,$f Route18GateObject: ; 0x49937 (size=50) db $a ; border tile @@ -16212,7 +19192,16 @@ Route18GateHeader_h: ; 0x49969 to 0x49975 (12 bytes) (id=191) dw $59a4 ; objects -INCBIN "baserom.gbc",$49975,$499a4 - $49975 +INCBIN "baserom.gbc",$49975,$4997e - $49975 +Route18GateHeaderText1: ; 0x4997e + db $08 ; asm + ld a, $5 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$4998c,$18 Route18GateHeaderObject: ; 0x499a4 (size=24) db $a ; border tile @@ -16238,7 +19227,54 @@ MtMoon1_h: ; 0x499bc to 0x499c8 (12 bytes) (id=59) dw $5b06 ; objects -INCBIN "baserom.gbc",$499c8,$49b06 - $499c8 +INCBIN "baserom.gbc",$499c8,$49a52 - $499c8 +MtMoon1Text1: ; 0x49a52 + db $08 ; asm + ld hl, $59fd + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text2: ; 0x49a5c + db $08 ; asm + ld hl, $5a09 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text3: ; 0x49a66 + db $08 ; asm + ld hl, $5a15 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text4: ; 0x49a70 + db $08 ; asm + ld hl, $5a21 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text5: ; 0x49a7a + db $08 ; asm + ld hl, $5a2d + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text6: ; 0x49a84 + db $08 ; asm + ld hl, $5a39 + call LoadTrainerHeader + jp $24d7 + +MtMoon1Text7: ; 0x49a8e + db $08 ; asm + ld hl, $5a45 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$49a98,$69 + +MtMoon1Text14: ; 0x49b01 + TX_FAR _MtMoon1Text14 + db $50 MtMoon1Object: ; 0x49b06 (size=145) db $3 ; border tile @@ -16254,19 +19290,19 @@ MtMoon1Object: ; 0x49b06 (size=145) db $17, $f, $e ; MtMoon1Text14 db $d ; people - db SPRITE_HIKER, $6 + 4, $5 + 4, $ff, $d0, $41, $d1, $1 ; trainer - db SPRITE_BUG_CATCHER, $10 + 4, $c + 4, $ff, $d3, $42, $c9, $3 ; trainer - db SPRITE_LASS, $4 + 4, $1e + 4, $ff, $d0, $43, $cb, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $1f + 4, $18 + 4, $ff, $d1, $44, $d0, $1 ; trainer - db SPRITE_LASS, $17 + 4, $10 + 4, $ff, $d0, $45, $cb, $6 ; trainer - db SPRITE_BUG_CATCHER, $16 + 4, $7 + 4, $ff, $d0, $46, $ca, $7 ; trainer - db SPRITE_BUG_CATCHER, $1b + 4, $1e + 4, $ff, $d3, $47, $ca, $8 ; trainer - db SPRITE_BALL, $14 + 4, $2 + 4, $ff, $ff, $88, $14 ; item - db SPRITE_BALL, $2 + 4, $2 + 4, $ff, $ff, $89, $a ; item - db SPRITE_BALL, $1f + 4, $23 + 4, $ff, $ff, $8a, $28 ; item - db SPRITE_BALL, $17 + 4, $24 + 4, $ff, $ff, $8b, $1d ; item - db SPRITE_BALL, $21 + 4, $14 + 4, $ff, $ff, $8c, $14 ; item - db SPRITE_BALL, $20 + 4, $5 + 4, $ff, $ff, $8d, $d4 ; item + db SPRITE_HIKER, $6 + 4, $5 + 4, $ff, $d0, $41, HIKER + $C8, $1 ; trainer + db SPRITE_BUG_CATCHER, $10 + 4, $c + 4, $ff, $d3, $42, YOUNGSTER + $C8, $3 ; trainer + db SPRITE_LASS, $4 + 4, $1e + 4, $ff, $d0, $43, LASS + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $1f + 4, $18 + 4, $ff, $d1, $44, SUPER_NERD + $C8, $1 ; trainer + db SPRITE_LASS, $17 + 4, $10 + 4, $ff, $d0, $45, LASS + $C8, $6 ; trainer + db SPRITE_BUG_CATCHER, $16 + 4, $7 + 4, $ff, $d0, $46, BUG_CATCHER + $C8, $7 ; trainer + db SPRITE_BUG_CATCHER, $1b + 4, $1e + 4, $ff, $d3, $47, BUG_CATCHER + $C8, $8 ; trainer + db SPRITE_BALL, $14 + 4, $2 + 4, $ff, $ff, $88, POTION ; item + db SPRITE_BALL, $2 + 4, $2 + 4, $ff, $ff, $89, MOON_STONE ; item + db SPRITE_BALL, $1f + 4, $23 + 4, $ff, $ff, $8a, RARE_CANDY ; item + db SPRITE_BALL, $17 + 4, $24 + 4, $ff, $ff, $8b, ESCAPE_ROPE ; item + db SPRITE_BALL, $21 + 4, $14 + 4, $ff, $ff, $8c, POTION ; item + db SPRITE_BALL, $20 + 4, $5 + 4, $ff, $ff, $8d, TM_12 ; item ; warp-to EVENT_DISP $14, $23, $e @@ -16286,7 +19322,118 @@ MtMoon3_h: ; 0x49cff to 0x49d0b (12 bytes) (id=61) dw $5fdb ; objects -INCBIN "baserom.gbc",$49d0b,$49fdb - $49d0b +INCBIN "baserom.gbc",$49d0b,$49e79 - $49d0b +MtMoon3Text1: ; 0x49e79 + db $08 ; asm + ld a, [$d7f6] + bit 1, a + jr z, .asm_be1e0 ; 0x49e7f + and $c0 + jr nz, .asm_f8cd4 ; 0x49e83 + ld hl, $5f8f + call PrintText + jr .asm_f1fba ; 0x49e8b +.asm_be1e0 ; 0x49e8d + ld hl, $5f85 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5f8a + ld de, $5f8a + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $3 + ld [$d607], a + ld [$da39], a + jr .asm_f1fba ; 0x49eb6 +.asm_f8cd4 ; 0x49eb8 + ld hl, $5f94 + call PrintText +.asm_f1fba ; 0x49ebe + jp $24d7 + +MtMoon3Text2: ; 0x49ec1 + db $08 ; asm + ld hl, $5e48 + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text3: ; 0x49ecb + db $08 ; asm + ld hl, $5e54 + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text4: ; 0x49ed5 + db $08 ; asm + ld hl, $5e60 + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text5: ; 0x49edf + db $08 ; asm + ld hl, $5e6c + call LoadTrainerHeader + jp $24d7 + +MtMoon3Text6: ; 0x49ee9 + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $5f24 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_1fa5e ; 0x49efc + ld bc,(DOME_FOSSIL << 8) | 1 + call $3e2e + jp nc, $5f76 + call $5f69 + ld a, $6d + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f6 + set 6, [hl] + ld a, $4 + ld [$d607], a + ld [$da39], a +.asm_1fa5e ; 0x49f21 + jp $24d7 + +INCBIN "baserom.gbc",$49f24,$49f29 - $49f24 +MtMoon3Text7: ; 0x49f29 + db $08 ; asm + ld a, $1 + ld [$cc3c], a + ld hl, $5f64 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_8e988 ; 0x49f3c + ld bc,(HELIX_FOSSIL << 8) | 1 + call $3e2e + jp nc, $5f76 + call $5f69 + ld a, $6e + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7f6 + set 7, [hl] + ld a, $4 + ld [$d607], a + ld [$da39], a +.asm_8e988 ; 0x49f61 + jp $24d7 + +INCBIN "baserom.gbc",$49f64,$77 MtMoon3Object: ; 0x49fdb (size=102) db $3 ; border tile @@ -16300,15 +19447,15 @@ MtMoon3Object: ; 0x49fdb (size=102) db $0 ; signs db $9 ; people - db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $c + 4, $ff, $d3, $41, $d0, $2 ; trainer - db SPRITE_ROCKET, $10 + 4, $b + 4, $ff, $d0, $42, $e6, $1 ; trainer - db SPRITE_ROCKET, $16 + 4, $f + 4, $ff, $d0, $43, $e6, $2 ; trainer - db SPRITE_ROCKET, $b + 4, $1d + 4, $ff, $d1, $44, $e6, $3 ; trainer - db SPRITE_ROCKET, $11 + 4, $1d + 4, $ff, $d2, $45, $e6, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $c + 4, $ff, $d3, $41, SUPER_NERD + $C8, $2 ; trainer + db SPRITE_ROCKET, $10 + 4, $b + 4, $ff, $d0, $42, ROCKET + $C8, $1 ; trainer + db SPRITE_ROCKET, $16 + 4, $f + 4, $ff, $d0, $43, ROCKET + $C8, $2 ; trainer + db SPRITE_ROCKET, $b + 4, $1d + 4, $ff, $d1, $44, ROCKET + $C8, $3 ; trainer + db SPRITE_ROCKET, $11 + 4, $1d + 4, $ff, $d2, $45, ROCKET + $C8, $4 ; trainer db SPRITE_OMANYTE, $6 + 4, $c + 4, $ff, $ff, $6 ; person db SPRITE_OMANYTE, $6 + 4, $d + 4, $ff, $ff, $7 ; person - db SPRITE_BALL, $15 + 4, $19 + 4, $ff, $ff, $88, $23 ; item - db SPRITE_BALL, $5 + 4, $1d + 4, $ff, $ff, $89, $c9 ; item + db SPRITE_BALL, $15 + 4, $19 + 4, $ff, $ff, $88, HP_UP ; item + db SPRITE_BALL, $5 + 4, $1d + 4, $ff, $ff, $89, TM_01 ; item ; warp-to EVENT_DISP $14, $9, $19 ; MT_MOON_2 @@ -16327,7 +19474,23 @@ SafariZoneWest_h: ; 0x4a1a9 to 0x4a1b5 (12 bytes) (id=219) dw $61dc ; objects -INCBIN "baserom.gbc",$4a1b5,$4a1dc - $4a1b5 +INCBIN "baserom.gbc",$4a1b5,$4a1c8 - $4a1b5 + +SafariZoneWestText5: ; 0x4a1c8 + TX_FAR _SafariZoneWestText5 + db $50 + +SafariZoneWestText6: ; 0x4a1cd + TX_FAR _SafariZoneWestText6 + db $50 + +SafariZoneWestText7: ; 0x4a1d2 + TX_FAR _SafariZoneWestText7 + db $50 + +SafariZoneWestText8: ; 0x4a1d7 + TX_FAR _SafariZoneWestText8 + db $50 SafariZoneWestObject: ; 0x4a1dc (size=108) db $0 ; border tile @@ -16349,10 +19512,10 @@ SafariZoneWestObject: ; 0x4a1dc (size=108) db $16, $18, $8 ; SafariZoneWestText8 db $4 ; people - db SPRITE_BALL, $14 + 4, $8 + 4, $ff, $ff, $81, $11 ; item - db SPRITE_BALL, $7 + 4, $9 + 4, $ff, $ff, $82, $e8 ; item - db SPRITE_BALL, $12 + 4, $12 + 4, $ff, $ff, $83, $36 ; item - db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $84, $40 ; item + db SPRITE_BALL, $14 + 4, $8 + 4, $ff, $ff, $81, MAX_POTION ; item + db SPRITE_BALL, $7 + 4, $9 + 4, $ff, $ff, $82, TM_32 ; item + db SPRITE_BALL, $12 + 4, $12 + 4, $ff, $ff, $83, MAX_REVIVE ; item + db SPRITE_BALL, $7 + 4, $13 + 4, $ff, $ff, $84, GOLD_TEETH ; item ; warp-to EVENT_DISP $f, $0, $14 ; SAFARI_ZONE_NORTH @@ -16364,7 +19527,6 @@ SafariZoneWestObject: ; 0x4a1dc (size=108) EVENT_DISP $f, $3, $3 ; SAFARI_ZONE_SECRET_HOUSE EVENT_DISP $f, $b, $b ; SAFARI_ZONE_REST_HOUSE_2 - SafariZoneWestBlocks: ; 195 INCBIN "maps/safarizonewest.blk" @@ -16376,7 +19538,33 @@ SafariZoneSecretHouse_h: ; 0x4a30b to 0x4a317 (12 bytes) (id=222) dw $6365 ; objects -INCBIN "baserom.gbc",$4a317,$4a365 - $4a317 +INCBIN "baserom.gbc",$4a317,$4a31c - $4a317 +SafariZoneSecretHouseText1: ; 0x4a31c + db $08 ; asm + ld a, [$d857] + bit 0, a + jr nz, .asm_20a9b ; 0x4a322 + ld hl, $6350 + call PrintText + ld bc,(HM_03 << 8) | 1 + call $3e2e + jr nc, .asm_a21d2 ; 0x4a330 + ld hl, $6355 + call PrintText + ld hl, $d857 + set 0, [hl] + jr .asm_8f1fc ; 0x4a33d +.asm_a21d2 ; 0x4a33f + ld hl, $6360 + call PrintText + jr .asm_8f1fc ; 0x4a345 +.asm_20a9b ; 0x4a347 + ld hl, $635b + call PrintText +.asm_8f1fc ; 0x4a34d + jp $24d7 + +INCBIN "baserom.gbc",$4a350,$15 SafariZoneSecretHouseObject: ; 0x4a365 (size=26) db $17 ; border tile @@ -16393,7 +19581,6 @@ SafariZoneSecretHouseObject: ; 0x4a365 (size=26) EVENT_DISP $4, $7, $2 ; SAFARI_ZONE_WEST EVENT_DISP $4, $7, $3 ; SAFARI_ZONE_WEST - SafariZoneSecretHouseBlocks: ; 16 INCBIN "maps/safarizonesecrethouse.blk" @@ -16501,7 +19688,14 @@ BattleCenterM_h: ; 0x4fd04 to 0x4fd10 (12 bytes) (id=239) dw $7d53 ; objects -INCBIN "baserom.gbc",$4fd10,$4fd53 - $4fd10 +INCBIN "baserom.gbc",$4fd10,$4fd4c - $4fd10 +BattleCenterMTexts: ; 0x4fd4c + dw BattleCenterMText1 + +BattleCenterMText1: ; 0x4fd4e + TX_FAR _BattleCenterMText1 + db $50 + BattleCenterMObject: ; 0x4fd53 (size=10) db $e ; border tile @@ -16512,7 +19706,6 @@ BattleCenterMObject: ; 0x4fd53 (size=10) db $1 ; people db SPRITE_RED, $2 + 4, $2 + 4, $ff, $0, $1 ; person - BattleCenterMBlocks: ; 20 INCBIN "maps/battlecenterm.blk" @@ -16524,7 +19717,14 @@ TradeCenterM_h: ; 0x4fd71 to 0x4fd7d (12 bytes) (id=240) dw $7d87 ; objects -INCBIN "baserom.gbc",$4fd7d,$4fd87 - $4fd7d +INCBIN "baserom.gbc",$4fd7d,$4fd80 - $4fd7d +TradeCenterMTexts: ; 0x4fd80 + dw TradeCenterMText1 + +TradeCenterMText1: ; 0x4fd82 + TX_FAR _TradeCenterMText1 + db $50 + TradeCenterMObject: ; 0x4fd87 (size=10) db $e ; border tile @@ -16535,7 +19735,6 @@ TradeCenterMObject: ; 0x4fd87 (size=10) db $1 ; people db SPRITE_RED, $2 + 4, $2 + 4, $ff, $0, $1 ; person - TradeCenterMBlocks: ; 20 INCBIN "maps/tradecenterm.blk" @@ -16685,7 +19884,7 @@ PredefPointers: ; 7E79 dbw $1C,$76BD dbw $1C,$75E8 dbw $1C,$77E2 - dbw $1C,$5AD9 + dbw BANK(Predef54),Predef54 ; 54 initiate trade dbw $1D,$405C dbw $11,$4169 dbw $1E,$45BA @@ -16742,8 +19941,6 @@ Route22Object: ; 0x50022 (size=27) ; warp-to EVENT_DISP $14, $5, $8 ; ROUTE_22_GATE -INCBIN "baserom.gbc",$5003d,$0 - Route22Blocks: ; 180 INCBIN "maps/route22.blk" @@ -16783,23 +19980,21 @@ Route20Object: ; 0x50113 (size=106) db $b, $39, $c ; Route20Text12 db $a ; people - db SPRITE_SWIMMER, $8 + 4, $57 + 4, $ff, $d1, $41, $d7, $9 ; trainer - db SPRITE_SWIMMER, $b + 4, $44 + 4, $ff, $d1, $42, $da, $f ; trainer - db SPRITE_SWIMMER, $a + 4, $2d + 4, $ff, $d0, $43, $da, $6 ; trainer - db SPRITE_SWIMMER, $e + 4, $37 + 4, $ff, $d3, $44, $ce, $18 ; trainer - db SPRITE_SWIMMER, $d + 4, $26 + 4, $ff, $d0, $45, $d7, $a ; trainer - db SPRITE_SWIMMER, $d + 4, $57 + 4, $ff, $d1, $46, $d7, $b ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $9 + 4, $22 + 4, $ff, $d1, $47, $df, $b ; trainer - db SPRITE_SWIMMER, $7 + 4, $19 + 4, $ff, $d1, $48, $da, $7 ; trainer - db SPRITE_SWIMMER, $c + 4, $18 + 4, $ff, $d0, $49, $ce, $10 ; trainer - db SPRITE_SWIMMER, $8 + 4, $f + 4, $ff, $d1, $4a, $da, $8 ; trainer + db SPRITE_SWIMMER, $8 + 4, $57 + 4, $ff, $d1, $41, SWIMMER + $C8, $9 ; trainer + db SPRITE_SWIMMER, $b + 4, $44 + 4, $ff, $d1, $42, BEAUTY + $C8, $f ; trainer + db SPRITE_SWIMMER, $a + 4, $2d + 4, $ff, $d0, $43, BEAUTY + $C8, $6 ; trainer + db SPRITE_SWIMMER, $e + 4, $37 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $18 ; trainer + db SPRITE_SWIMMER, $d + 4, $26 + 4, $ff, $d0, $45, SWIMMER + $C8, $a ; trainer + db SPRITE_SWIMMER, $d + 4, $57 + 4, $ff, $d1, $46, SWIMMER + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $9 + 4, $22 + 4, $ff, $d1, $47, BIRD_KEEPER + $C8, $b ; trainer + db SPRITE_SWIMMER, $7 + 4, $19 + 4, $ff, $d1, $48, BEAUTY + $C8, $7 ; trainer + db SPRITE_SWIMMER, $c + 4, $18 + 4, $ff, $d0, $49, JR__TRAINER_F + $C8, $10 ; trainer + db SPRITE_SWIMMER, $8 + 4, $f + 4, $ff, $d1, $4a, BEAUTY + $C8, $8 ; trainer ; warp-to EVENT_DISP $32, $5, $30 ; SEAFOAM_ISLANDS_1 EVENT_DISP $32, $9, $3a ; SEAFOAM_ISLANDS_1 -INCBIN "baserom.gbc",$5017d,$0 - Route20Blocks: ; 450 INCBIN "maps/route20.blk" @@ -16854,8 +20049,6 @@ Route23Object: ; 0x50361 (size=81) EVENT_DISP $a, $1f, $4 ; VICTORY_ROAD_1 EVENT_DISP $a, $1f, $e ; VICTORY_ROAD_2 -INCBIN "baserom.gbc",$503b2,$0 - Route23Blocks: ; 720 INCBIN "maps/route23.blk" @@ -16891,16 +20084,14 @@ Route24Object: ; 0x506a4 (size=67) db $0 ; signs db $8 ; people - db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $b + 4, $ff, $d2, $41, $e6, $6 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $5 + 4, $ff, $d1, $42, $cd, $2 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $13 + 4, $b + 4, $ff, $d2, $43, $cd, $3 ; trainer - db SPRITE_LASS, $16 + 4, $a + 4, $ff, $d3, $44, $cb, $7 ; trainer - db SPRITE_BUG_CATCHER, $19 + 4, $b + 4, $ff, $d2, $45, $c9, $4 ; trainer - db SPRITE_LASS, $1c + 4, $a + 4, $ff, $d3, $46, $cb, $8 ; trainer - db SPRITE_BUG_CATCHER, $1f + 4, $b + 4, $ff, $d2, $47, $ca, $9 ; trainer - db SPRITE_BALL, $5 + 4, $a + 4, $ff, $ff, $88, $f5 ; item - -INCBIN "baserom.gbc",$506e7,$0 + db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $b + 4, $ff, $d2, $41, ROCKET + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $14 + 4, $5 + 4, $ff, $d1, $42, JR__TRAINER_M + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $13 + 4, $b + 4, $ff, $d2, $43, JR__TRAINER_M + $C8, $3 ; trainer + db SPRITE_LASS, $16 + 4, $a + 4, $ff, $d3, $44, LASS + $C8, $7 ; trainer + db SPRITE_BUG_CATCHER, $19 + 4, $b + 4, $ff, $d2, $45, YOUNGSTER + $C8, $4 ; trainer + db SPRITE_LASS, $1c + 4, $a + 4, $ff, $d3, $46, LASS + $C8, $8 ; trainer + db SPRITE_BUG_CATCHER, $1f + 4, $b + 4, $ff, $d2, $47, BUG_CATCHER + $C8, $9 ; trainer + db SPRITE_BALL, $5 + 4, $a + 4, $ff, $ff, $88, TM_45 ; item Route24Blocks: ; 180 INCBIN "maps/route24.blk" @@ -16933,22 +20124,20 @@ Route25Object: ; 0x507b2 (size=94) db $3, $2b, $b ; Route25Text11 db $a ; people - db SPRITE_BUG_CATCHER, $2 + 4, $e + 4, $ff, $d0, $41, $c9, $5 ; trainer - db SPRITE_BUG_CATCHER, $5 + 4, $12 + 4, $ff, $d1, $42, $c9, $6 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $18 + 4, $ff, $d0, $43, $cd, $2 ; trainer - db SPRITE_LASS, $8 + 4, $12 + 4, $ff, $d3, $44, $cb, $9 ; trainer - db SPRITE_BUG_CATCHER, $3 + 4, $20 + 4, $ff, $d2, $45, $c9, $7 ; trainer - db SPRITE_LASS, $4 + 4, $25 + 4, $ff, $d0, $46, $cb, $a ; trainer - db SPRITE_HIKER, $4 + 4, $8 + 4, $ff, $d3, $47, $d1, $2 ; trainer - db SPRITE_HIKER, $9 + 4, $17 + 4, $ff, $d1, $48, $d1, $3 ; trainer - db SPRITE_HIKER, $7 + 4, $d + 4, $ff, $d3, $49, $d1, $4 ; trainer - db SPRITE_BALL, $2 + 4, $16 + 4, $ff, $ff, $8a, $db ; item + db SPRITE_BUG_CATCHER, $2 + 4, $e + 4, $ff, $d0, $41, YOUNGSTER + $C8, $5 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $12 + 4, $ff, $d1, $42, YOUNGSTER + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $18 + 4, $ff, $d0, $43, JR__TRAINER_M + $C8, $2 ; trainer + db SPRITE_LASS, $8 + 4, $12 + 4, $ff, $d3, $44, LASS + $C8, $9 ; trainer + db SPRITE_BUG_CATCHER, $3 + 4, $20 + 4, $ff, $d2, $45, YOUNGSTER + $C8, $7 ; trainer + db SPRITE_LASS, $4 + 4, $25 + 4, $ff, $d0, $46, LASS + $C8, $a ; trainer + db SPRITE_HIKER, $4 + 4, $8 + 4, $ff, $d3, $47, HIKER + $C8, $2 ; trainer + db SPRITE_HIKER, $9 + 4, $17 + 4, $ff, $d1, $48, HIKER + $C8, $3 ; trainer + db SPRITE_HIKER, $7 + 4, $d + 4, $ff, $d3, $49, HIKER + $C8, $4 ; trainer + db SPRITE_BALL, $2 + 4, $16 + 4, $ff, $ff, $8a, TM_19 ; item ; warp-to EVENT_DISP $1e, $3, $2d ; BILLS_HOUSE -INCBIN "baserom.gbc",$50810,$0 - Route25Blocks: ; 270 INCBIN "maps/route25.blk" @@ -16986,7 +20175,6 @@ IndigoPlateauObject: ; 0x50936 (size=20) EVENT_DISP $a, $5, $9 ; INDIGO_PLATEAU_LOBBY EVENT_DISP $a, $5, $a ; INDIGO_PLATEAU_LOBBY - IndigoPlateauBlocks: ; 90 INCBIN "maps/indigoplateau.blk" @@ -17078,12 +20266,347 @@ SaffronCityObject: ; 0x509dc (size=188) EVENT_DISP $14, $1d, $9 ; SAFFRON_POKECENTER EVENT_DISP $14, $1d, $1d ; SAFFRON_HOUSE_2 -INCBIN "baserom.gbc",$50a98,$0 - SaffronCityBlocks: ; 360 INCBIN "maps/saffroncity.blk" -INCBIN "baserom.gbc",$50c00,$b91 +INCBIN "baserom.gbc",$50c00,$50c35 - $50c00 + +SaffronCityText1: ; 0x50c35 + TX_FAR _SaffronCityText1 + db $50 + +SaffronCityText2: ; 0x50c3a + TX_FAR _SaffronCityText2 + db $50 + +SaffronCityText3: ; 0x50c3f + TX_FAR _SaffronCityText3 + db $50 + +SaffronCityText4: ; 0x50c44 + TX_FAR _SaffronCityText4 + db $50 + +SaffronCityText5: ; 0x50c49 + TX_FAR _SaffronCityText5 + db $50 + +SaffronCityText6: ; 0x50c4e + TX_FAR _SaffronCityText6 + db $50 + +SaffronCityText7: ; 0x50c53 + TX_FAR _SaffronCityText7 + db $50 + +SaffronCityText8: ; 0x50c58 + TX_FAR _SaffronCityText8 + db $50 + +SaffronCityText9: ; 0x50c5d + TX_FAR _SaffronCityText9 + db $50 + +SaffronCityText10: ; 0x50c62 + TX_FAR _SaffronCityText10 + db $50 + +SaffronCityText11: ; 0x50c67 + TX_FAR _SaffronCityText11 + db $50 + +SaffronCityText12: ; 0x50c6c + TX_FAR _SaffronCityText12 + +INCBIN "baserom.gbc",$50c70,$50c72 - $50c70 + +SaffronCityText13: ; 0x50c72 + TX_FAR _SaffronCityText13 + db $50 + +SaffronCityText14: ; 0x50c77 + TX_FAR _SaffronCityText14 + db $50 + +SaffronCityText15: ; 0x50c7c + TX_FAR _SaffronCityText15 + db $50 + +SaffronCityText16: ; 0x50c81 + TX_FAR _SaffronCityText16 + db $50 + +SaffronCityText17: ; 0x50c86 + TX_FAR _SaffronCityText17 + db $50 + +SaffronCityText18: ; 0x50c8b + TX_FAR _SaffronCityText18 + db $50 + +SaffronCityText20: ; 0x50c90 + TX_FAR _SaffronCityText20 + db $50 + +SaffronCityText21: ; 0x50c95 + TX_FAR _SaffronCityText21 + db $50 + +SaffronCityText22: ; 0x50c9a + TX_FAR _SaffronCityText22 + db $50 + +SaffronCityText24: ; 0x50c9f + TX_FAR _SaffronCityText24 + db $50 + +SaffronCityText25: ; 0x50ca4 + TX_FAR _SaffronCityText25 + db $50 + +INCBIN "baserom.gbc",$50ca9,$50db3 - $50ca9 +Route20Text1: ; 0x50db3 + db $08 ; asm + ld hl, $4d3a + call LoadTrainerHeader + jp $24d7 + +Route20Text2: ; 0x50dbd + db $08 ; asm + ld hl, $4d46 + call LoadTrainerHeader + jp $24d7 + +Route20Text3: ; 0x50dc7 + db $08 ; asm + ld hl, $4d52 + call LoadTrainerHeader + jp $24d7 + +Route20Text4: ; 0x50dd1 + db $08 ; asm + ld hl, $4d5e + call LoadTrainerHeader + jp $24d7 + +Route20Text5: ; 0x50ddb + db $08 ; asm + ld hl, $4d6a + call LoadTrainerHeader + jp $24d7 + +Route20Text6: ; 0x50de5 + db $08 ; asm + ld hl, $4d76 + call LoadTrainerHeader + jp $24d7 + +Route20Text7: ; 0x50def + db $08 ; asm + ld hl, $4d82 + call LoadTrainerHeader + jp $24d7 + +Route20Text8: ; 0x50df9 + db $08 ; asm + ld hl, $4d8e + call LoadTrainerHeader + jp $24d7 + +Route20Text9: ; 0x50e03 + db $08 ; asm + ld hl, $4d9a + call LoadTrainerHeader + jp $24d7 + +Route20Text10: ; 0x50e0d + db $08 ; asm + ld hl, $4da6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$50e17,$96 + +Route20Text12: +Route20Text11: ; 0x50ead + TX_FAR _Route20Text11 + db $50 + +INCBIN "baserom.gbc",$50eb2,$5117b - $50eb2 +Route22Text1: ; 0x5117b + db $08 ; asm + ld a, [$d7eb] + bit 5, a + jr z, .asm_a88cf ; 0x51181 + ld hl, $51b2 + call PrintText + jr .asm_48088 ; 0x51189 +.asm_a88cf ; 0x5118b + ld hl, $51ad + call PrintText +.asm_48088 ; 0x51191 + jp $24d7 + +Route22Text2: ; 0x51194 + db $08 ; asm + ld a, [$d7eb] + bit 6, a + jr z, .asm_58c0a ; 0x5119a + ld hl, $51c6 + call PrintText + jr .asm_673ee ; 0x511a2 +.asm_58c0a ; 0x511a4 + ld hl, $51c1 + call PrintText +.asm_673ee ; 0x511aa + jp $24d7 + +INCBIN "baserom.gbc",$511ad,$28 + +Route22Text3: ; 0x511d5 + TX_FAR _Route22Text3 + db $50 + +INCBIN "baserom.gbc",$511da,$51307 - $511da +Route23Text1: ; 0x51307 + db $08 ; asm + ld a, $6 + call $5346 + jp $24d7 + +Route23Text2: ; 0x51310 + db $08 ; asm + ld a, $5 + call $5346 + jp $24d7 + +Route23Text3: ; 0x51319 + db $08 ; asm + ld a, $4 + call $5346 + jp $24d7 + +Route23Text4: ; 0x51322 + db $08 ; asm + ld a, $3 + call $5346 + jp $24d7 + +Route23Text5: ; 0x5132b + db $08 ; asm + ld a, $2 + call $5346 + jp $24d7 + +Route23Text6: ; 0x51334 + db $08 ; asm + ld a, $1 + call $5346 + jp $24d7 + +INCBIN "baserom.gbc",$5133d,$6b + +Route23Text8: ; 0x513a8 + TX_FAR _Route23Text8 + db $50 + +INCBIN "baserom.gbc",$513ad,$51535 - $513ad +Route24Text2: ; 0x51535 + db $08 ; asm + ld hl, $545b + call LoadTrainerHeader + jp $24d7 + +Route24Text3: ; 0x5153f + db $08 ; asm + ld hl, $5467 + call LoadTrainerHeader + jp $24d7 + +Route24Text4: ; 0x51549 + db $08 ; asm + ld hl, $5473 + call LoadTrainerHeader + jp $24d7 + +Route24Text5: ; 0x51553 + db $08 ; asm + ld hl, $547f + call LoadTrainerHeader + jp $24d7 + +Route24Text6: ; 0x5155d + db $08 ; asm + ld hl, $548b + call LoadTrainerHeader + jp $24d7 + +Route24Text7: ; 0x51567 + db $08 ; asm + ld hl, $5497 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51571,$516ab - $51571 +Route25Text1: ; 0x516ab + db $08 ; asm + ld hl, $563e + call LoadTrainerHeader + jp $24d7 + +Route25Text2: ; 0x516b5 + db $08 ; asm + ld hl, $564a + call LoadTrainerHeader + jp $24d7 + +Route25Text3: ; 0x516bf + db $08 ; asm + ld hl, $5656 + call LoadTrainerHeader + jp $24d7 + +Route25Text4: ; 0x516c9 + db $08 ; asm + ld hl, $5662 + call LoadTrainerHeader + jp $24d7 + +Route25Text5: ; 0x516d3 + db $08 ; asm + ld hl, $566e + call LoadTrainerHeader + jp $24d7 + +Route25Text6: ; 0x516dd + db $08 ; asm + ld hl, $567a + call LoadTrainerHeader + jp $24d7 + +Route25Text7: ; 0x516e7 + db $08 ; asm + ld hl, $5686 + call LoadTrainerHeader + jp $24d7 + +Route25Text8: ; 0x516f1 + db $08 ; asm + ld hl, $5692 + call LoadTrainerHeader + jp $24d7 + +Route25Text9: ; 0x516fb + db $08 ; asm + ld hl, $569e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51705,$87 + +Route25Text11: ; 0x5178c + TX_FAR _Route25Text11 + db $50 VictoryRoad2_h: ; 0x51791 to 0x5179d (12 bytes) (id=194) db $11 ; tileset @@ -17093,7 +20616,44 @@ VictoryRoad2_h: ; 0x51791 to 0x5179d (12 bytes) (id=194) dw $5915 ; objects -INCBIN "baserom.gbc",$5179d,$51915 - $5179d +INCBIN "baserom.gbc",$5179d,$5187e - $5179d +VictoryRoad2Text1: ; 0x5187e + db $08 ; asm + ld hl, $5835 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text2: ; 0x51888 + db $08 ; asm + ld hl, $5841 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text3: ; 0x51892 + db $08 ; asm + ld hl, $584d + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text4: ; 0x5189c + db $08 ; asm + ld hl, $5859 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text5: ; 0x518a6 + db $08 ; asm + ld hl, $5865 + call LoadTrainerHeader + jp $24d7 + +VictoryRoad2Text6: ; 0x518b0 + db $08 ; asm + ld hl, $5871 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$518ba,$5b VictoryRoad2Object: ; 0x51915 (size=154) db $7d ; border tile @@ -17109,16 +20669,16 @@ VictoryRoad2Object: ; 0x51915 (size=154) db $0 ; signs db $d ; people - db SPRITE_HIKER, $9 + 4, $c + 4, $ff, $d2, $41, $e0, $9 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $15 + 4, $ff, $d2, $42, $dd, $2 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $8 + 4, $13 + 4, $ff, $d0, $43, $de, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $d0, $44, $cf, $6 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $3 + 4, $1a + 4, $ff, $d2, $45, $dd, $5 ; trainer - db SPRITE_BIRD, $5 + 4, $b + 4, $ff, $d1, $46, $49, $32 ; trainer - db SPRITE_BALL, $5 + 4, $1b + 4, $ff, $ff, $87, $d9 ; item - db SPRITE_BALL, $9 + 4, $12 + 4, $ff, $ff, $88, $34 ; item - db SPRITE_BALL, $b + 4, $9 + 4, $ff, $ff, $89, $cd ; item - db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $8a, $37 ; item + db SPRITE_HIKER, $9 + 4, $c + 4, $ff, $d2, $41, BLACKBELT + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $15 + 4, $ff, $d2, $42, JUGGLER + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $8 + 4, $13 + 4, $ff, $d0, $43, TAMER + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $4 + 4, $ff, $d0, $44, POKEMANIAC + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $3 + 4, $1a + 4, $ff, $d2, $45, JUGGLER + $C8, $5 ; trainer + db SPRITE_BIRD, $5 + 4, $b + 4, $ff, $d1, $46, MOLTRES, $32 ; trainer + db SPRITE_BALL, $5 + 4, $1b + 4, $ff, $ff, $87, TM_17 ; item + db SPRITE_BALL, $9 + 4, $12 + 4, $ff, $ff, $88, FULL_HEAL ; item + db SPRITE_BALL, $b + 4, $9 + 4, $ff, $ff, $89, TM_05 ; item + db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $8a, GUARD_SPEC_ ; item db SPRITE_BOULDER, $e + 4, $4 + 4, $ff, $10, $b ; person db SPRITE_BOULDER, $5 + 4, $5 + 4, $ff, $10, $c ; person db SPRITE_BOULDER, $10 + 4, $17 + 4, $ff, $10, $d ; person @@ -17132,7 +20692,6 @@ VictoryRoad2Object: ; 0x51915 (size=154) EVENT_DISP $f, $7, $1b ; VICTORY_ROAD_3 EVENT_DISP $f, $1, $1 ; VICTORY_ROAD_3 - VictoryRoad2Blocks: ; 135 INCBIN "maps/victoryroad2.blk" @@ -17172,7 +20731,6 @@ MtMoon2Object: ; 0x51a4d (size=68) EVENT_DISP $e, $3, $17 ; MT_MOON_3 EVENT_DISP $e, $3, $1b - MtMoon2Blocks: ; 196 INCBIN "maps/mtmoon2.blk" @@ -17184,7 +20742,105 @@ SilphCo7_h: ; 0x51b55 to 0x51b61 (12 bytes) (id=212) dw $5ed7 ; objects -INCBIN "baserom.gbc",$51b61,$51ed7 - $51b61 +INCBIN "baserom.gbc",$51b61,$51d8e - $51b61 +SilphCo7Text1: ; 0x51d8e + db $08 ; asm + ld a, [$d72e] + bit 0, a + jr z, .asm_d7e17 ; 0x51d94 + ld a, [$d838] + bit 7, a + jr nz, .asm_688b4 ; 0x51d9b + ld hl, $5ddd + call PrintText + jr .asm_b3069 ; 0x51da3 +.asm_d7e17 ; 0x51da5 + ld hl, $5dd3 + call PrintText + ld bc,(LAPRAS << 8) | 15 + call GivePokemon + jr nc, .asm_b3069 ; 0x51db1 + ld a, [$ccd3] + and a + call z, $3865 + call $3c3c + ld hl, $5dd8 + call PrintText + ld hl, $d72e + set 0, [hl] + jr .asm_b3069 ; 0x51dc8 +.asm_688b4 ; 0x51dca + ld hl, $5de2 + call PrintText +.asm_b3069 ; 0x51dd0 + jp $24d7 + +INCBIN "baserom.gbc",$51dd3,$51e0a - $51dd3 +SilphCo7Text3: ; 0x51e0a + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_254aa ; 0x51e10 + ld hl, $5e23 + call PrintText + jr .asm_6472b ; 0x51e18 +.asm_254aa ; 0x51e1a + ld hl, $5e28 + call PrintText +.asm_6472b ; 0x51e20 + jp $24d7 + +INCBIN "baserom.gbc",$51e23,$51e2d - $51e23 +SilphCo7Text4: ; 0x51e2d + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_0f7ee ; 0x51e33 + ld hl, $5e46 + call PrintText + jr .asm_27a32 ; 0x51e3b +.asm_0f7ee ; 0x51e3d + ld hl, $5e4b + call PrintText +.asm_27a32 ; 0x51e43 + jp $24d7 + +INCBIN "baserom.gbc",$51e46,$51e50 - $51e46 +SilphCo7Text5: ; 0x51e50 + db $08 ; asm + ld hl, $5d5d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51e5a,$51e69 - $51e5a +SilphCo7Text6: ; 0x51e69 + db $08 ; asm + ld hl, $5d69 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51e73,$51e82 - $51e73 +SilphCo7Text7: ; 0x51e82 + db $08 ; asm + ld hl, $5d75 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51e8c,$51e9b - $51e8c +SilphCo7Text8: ; 0x51e9b + db $08 ; asm + ld hl, $5d81 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$51ea5,$51eb4 - $51ea5 +SilphCo7Text9: ; 0x51eb4 + db $08 ; asm + ld hl, $5ebe + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$51ebe,$19 SilphCo7Object: ; 0x51ed7 (size=128) db $2e ; border tile @@ -17203,13 +20859,13 @@ SilphCo7Object: ; 0x51ed7 (size=128) db SPRITE_LAPRAS_GIVER, $d + 4, $d + 4, $ff, $d1, $2 ; person db SPRITE_LAPRAS_GIVER, $a + 4, $7 + 4, $ff, $ff, $3 ; person db SPRITE_ERIKA, $8 + 4, $a + 4, $ff, $ff, $4 ; person - db SPRITE_ROCKET, $1 + 4, $d + 4, $ff, $d0, $45, $e6, $20 ; trainer - db SPRITE_OAK_AIDE, $d + 4, $2 + 4, $ff, $d0, $46, $e4, $8 ; trainer - db SPRITE_ROCKET, $2 + 4, $14 + 4, $ff, $d2, $47, $e6, $21 ; trainer - db SPRITE_ROCKET, $e + 4, $13 + 4, $ff, $d3, $48, $e6, $22 ; trainer + db SPRITE_ROCKET, $1 + 4, $d + 4, $ff, $d0, $45, ROCKET + $C8, $20 ; trainer + db SPRITE_OAK_AIDE, $d + 4, $2 + 4, $ff, $d0, $46, SCIENTIST + $C8, $8 ; trainer + db SPRITE_ROCKET, $2 + 4, $14 + 4, $ff, $d2, $47, ROCKET + $C8, $21 ; trainer + db SPRITE_ROCKET, $e + 4, $13 + 4, $ff, $d3, $48, ROCKET + $C8, $22 ; trainer db SPRITE_BLUE, $7 + 4, $3 + 4, $ff, $d1, $9 ; person - db SPRITE_BALL, $9 + 4, $1 + 4, $ff, $ff, $8a, $27 ; item - db SPRITE_BALL, $b + 4, $18 + 4, $ff, $ff, $8b, $cb ; item + db SPRITE_BALL, $9 + 4, $1 + 4, $ff, $ff, $8a, CALCIUM ; item + db SPRITE_BALL, $b + 4, $18 + 4, $ff, $ff, $8b, TM_03 ; item ; warp-to EVENT_DISP $d, $0, $10 ; SILPH_CO_8F @@ -17219,7 +20875,6 @@ SilphCo7Object: ; 0x51ed7 (size=128) EVENT_DISP $d, $3, $5 ; SILPH_CO_3F EVENT_DISP $d, $f, $15 ; SILPH_CO_5F - SilphCo7Blocks: ; 117 INCBIN "maps/silphco7.blk" @@ -17231,7 +20886,24 @@ Mansion2_h: ; 0x51fcc to 0x51fd8 (12 bytes) (id=214) dw $60d1 ; objects -INCBIN "baserom.gbc",$51fd8,$520d1 - $51fd8 +INCBIN "baserom.gbc",$51fd8,$52064 - $51fd8 +Mansion2Text1: ; 0x52064 + db $08 ; asm + ld hl, $6057 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5206e,$f + +Mansion2Text3: ; 0x5207d + TX_FAR _Mansion2Text3 + db $50 + +Mansion2Text4: ; 0x52082 + TX_FAR _Mansion2Text4 + db $50 + +INCBIN "baserom.gbc",$52087,$4a Mansion2Object: ; 0x520d1 (size=63) db $1 ; border tile @@ -17244,8 +20916,8 @@ Mansion2Object: ; 0x520d1 (size=63) db $0 ; signs db $4 ; people - db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $3 + 4, $fe, $2, $41, $d3, $7 ; trainer - db SPRITE_BALL, $7 + 4, $1c + 4, $ff, $ff, $82, $27 ; item + db SPRITE_BLACK_HAIR_BOY_2, $11 + 4, $3 + 4, $fe, $2, $41, BURGLAR + $C8, $7 ; trainer + db SPRITE_BALL, $7 + 4, $1c + 4, $ff, $ff, $82, CALCIUM ; item db SPRITE_BOOK_MAP_DEX, $2 + 4, $12 + 4, $ff, $ff, $3 ; person db SPRITE_BOOK_MAP_DEX, $16 + 4, $3 + 4, $ff, $ff, $4 ; person @@ -17265,7 +20937,20 @@ Mansion3_h: ; 0x521e2 to 0x521ee (12 bytes) (id=215) dw $62e6 ; objects -INCBIN "baserom.gbc",$521ee,$522e6 - $521ee +INCBIN "baserom.gbc",$521ee,$522af - $521ee +Mansion3Text1: ; 0x522af + db $08 ; asm + ld hl, $6296 + call LoadTrainerHeader + jp $24d7 + +Mansion3Text2: ; 0x522b9 + db $08 ; asm + ld hl, $62a2 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$522c3,$23 Mansion3Object: ; 0x522e6 (size=64) db $1 ; border tile @@ -17277,10 +20962,10 @@ Mansion3Object: ; 0x522e6 (size=64) db $0 ; signs db $5 ; people - db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $5 + 4, $fe, $2, $41, $d3, $8 ; trainer - db SPRITE_OAK_AIDE, $b + 4, $14 + 4, $ff, $d2, $42, $e4, $c ; trainer - db SPRITE_BALL, $10 + 4, $1 + 4, $ff, $ff, $83, $11 ; item - db SPRITE_BALL, $5 + 4, $19 + 4, $ff, $ff, $84, $25 ; item + db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $5 + 4, $fe, $2, $41, BURGLAR + $C8, $8 ; trainer + db SPRITE_OAK_AIDE, $b + 4, $14 + 4, $ff, $d2, $42, SCIENTIST + $C8, $c ; trainer + db SPRITE_BALL, $10 + 4, $1 + 4, $ff, $ff, $83, MAX_POTION ; item + db SPRITE_BALL, $5 + 4, $19 + 4, $ff, $ff, $84, IRON ; item db SPRITE_BOOK_MAP_DEX, $c + 4, $6 + 4, $ff, $ff, $5 ; person ; warp-to @@ -17298,7 +20983,25 @@ Mansion4_h: ; 0x523ad to 0x523b9 (12 bytes) (id=216) dw $6498 ; objects -INCBIN "baserom.gbc",$523b9,$52498 - $523b9 +INCBIN "baserom.gbc",$523b9,$52461 - $523b9 +Mansion4Text1: ; 0x52461 + db $08 ; asm + ld hl, $6448 + call LoadTrainerHeader + jp $24d7 + +Mansion4Text2: ; 0x5246b + db $08 ; asm + ld hl, $6454 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$52475,$1e + +Mansion4Text7: ; 0x52493 + TX_FAR _Mansion4Text7 + db $50 + Mansion4Object: ; 0x52498 (size=69) db $1 ; border tile @@ -17308,14 +21011,14 @@ Mansion4Object: ; 0x52498 (size=69) db $0 ; signs db $8 ; people - db SPRITE_BLACK_HAIR_BOY_2, $17 + 4, $10 + 4, $ff, $ff, $41, $d3, $9 ; trainer - db SPRITE_OAK_AIDE, $b + 4, $1b + 4, $ff, $d0, $42, $e4, $d ; trainer - db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $83, $28 ; item - db SPRITE_BALL, $16 + 4, $1 + 4, $ff, $ff, $84, $10 ; item - db SPRITE_BALL, $19 + 4, $13 + 4, $ff, $ff, $85, $d6 ; item - db SPRITE_BALL, $4 + 4, $5 + 4, $ff, $ff, $86, $de ; item + db SPRITE_BLACK_HAIR_BOY_2, $17 + 4, $10 + 4, $ff, $ff, $41, BURGLAR + $C8, $9 ; trainer + db SPRITE_OAK_AIDE, $b + 4, $1b + 4, $ff, $d0, $42, SCIENTIST + $C8, $d ; trainer + db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $83, RARE_CANDY ; item + db SPRITE_BALL, $16 + 4, $1 + 4, $ff, $ff, $84, FULL_RESTORE ; item + db SPRITE_BALL, $19 + 4, $13 + 4, $ff, $ff, $85, TM_14 ; item + db SPRITE_BALL, $4 + 4, $5 + 4, $ff, $ff, $86, TM_22 ; item db SPRITE_BOOK_MAP_DEX, $14 + 4, $10 + 4, $ff, $ff, $7 ; person - db SPRITE_BALL, $d + 4, $5 + 4, $ff, $ff, $88, $2b ; item + db SPRITE_BALL, $d + 4, $5 + 4, $ff, $ff, $88, SECRET_KEY ; item ; warp-to EVENT_DISP $f, $16, $17 ; MANSION_1 @@ -17437,19 +21140,19 @@ GetPrizeMenuId: ; 14:678E .putMonName\@ ; 14:67EC ld a,[W_PRIZE1] ld [$D11E],a - call GetMonsterName + call GetMonName FuncCoord 2,4 ld hl,Coord call PlaceString ld a,[W_PRIZE2] ld [$D11E],a - call GetMonsterName + call GetMonName FuncCoord 2,6 ld hl,Coord call PlaceString ld a,[W_PRIZE3] ld [$D11E],a - call GetMonsterName + call GetMonName FuncCoord 2,8 ld hl,Coord call PlaceString @@ -17584,7 +21287,7 @@ HandlePrizeChoice: ; 14:68C6 call GetItemName jr .GivePrize\@ .GetMonName\@ ; 14:68E3 - call GetMonsterName + call GetMonName .GivePrize\@ ; 14:68E6 ld hl,SoYouWantPrizeTextPtr call PrintText @@ -17711,8 +21414,8 @@ Route2Object: ; 0x54022 (size=72) db $b, $b, $4 ; Route2Text4 db $2 ; people - db SPRITE_BALL, $36 + 4, $d + 4, $ff, $ff, $81, $a ; item - db SPRITE_BALL, $2d + 4, $d + 4, $ff, $ff, $82, $23 ; item + db SPRITE_BALL, $36 + 4, $d + 4, $ff, $ff, $81, MOON_STONE ; item + db SPRITE_BALL, $2d + 4, $d + 4, $ff, $ff, $82, HP_UP ; item ; warp-to EVENT_DISP $a, $9, $c ; DIGLETTS_CAVE_EXIT @@ -17761,16 +21464,14 @@ Route3Object: ; 0x54208 (size=77) db $9 ; people db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $39 + 4, $ff, $ff, $1 ; person - db SPRITE_BUG_CATCHER, $6 + 4, $a + 4, $ff, $d3, $42, $ca, $4 ; trainer - db SPRITE_BUG_CATCHER, $4 + 4, $e + 4, $ff, $d0, $43, $c9, $1 ; trainer - db SPRITE_LASS, $9 + 4, $10 + 4, $ff, $d2, $44, $cb, $1 ; trainer - db SPRITE_BUG_CATCHER, $5 + 4, $13 + 4, $ff, $d0, $45, $ca, $5 ; trainer - db SPRITE_LASS, $4 + 4, $17 + 4, $ff, $d2, $46, $cb, $2 ; trainer - db SPRITE_BUG_CATCHER, $9 + 4, $16 + 4, $ff, $d2, $47, $c9, $2 ; trainer - db SPRITE_BUG_CATCHER, $6 + 4, $18 + 4, $ff, $d3, $48, $ca, $6 ; trainer - db SPRITE_LASS, $a + 4, $21 + 4, $ff, $d1, $49, $cb, $3 ; trainer - -INCBIN "baserom.gbc",$54255,$0 + db SPRITE_BUG_CATCHER, $6 + 4, $a + 4, $ff, $d3, $42, BUG_CATCHER + $C8, $4 ; trainer + db SPRITE_BUG_CATCHER, $4 + 4, $e + 4, $ff, $d0, $43, YOUNGSTER + $C8, $1 ; trainer + db SPRITE_LASS, $9 + 4, $10 + 4, $ff, $d2, $44, LASS + $C8, $1 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $13 + 4, $ff, $d0, $45, BUG_CATCHER + $C8, $5 ; trainer + db SPRITE_LASS, $4 + 4, $17 + 4, $ff, $d2, $46, LASS + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $9 + 4, $16 + 4, $ff, $d2, $47, YOUNGSTER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $6 + 4, $18 + 4, $ff, $d3, $48, BUG_CATCHER + $C8, $6 ; trainer + db SPRITE_LASS, $a + 4, $21 + 4, $ff, $d1, $49, LASS + $C8, $3 ; trainer Route3Blocks: ; 315 INCBIN "maps/route3.blk" @@ -17814,16 +21515,14 @@ Route4Object: ; 0x543b2 (size=58) db $3 ; people db SPRITE_LASS, $8 + 4, $9 + 4, $fe, $0, $1 ; person - db SPRITE_LASS, $3 + 4, $3f + 4, $ff, $d3, $42, $cb, $4 ; trainer - db SPRITE_BALL, $3 + 4, $39 + 4, $ff, $ff, $83, $cc ; item + db SPRITE_LASS, $3 + 4, $3f + 4, $ff, $d3, $42, LASS + $C8, $4 ; trainer + db SPRITE_BALL, $3 + 4, $39 + 4, $ff, $ff, $83, TM_04 ; item ; warp-to EVENT_DISP $2d, $5, $b ; MT_MOON_POKECENTER EVENT_DISP $2d, $5, $12 ; MT_MOON_1 EVENT_DISP $2d, $5, $18 ; MT_MOON_2 -INCBIN "baserom.gbc",$543ec,$0 - Route4Blocks: ; 405 INCBIN "maps/route4.blk" @@ -17873,8 +21572,6 @@ Route5Object: ; 0x545a3 (size=47) EVENT_DISP $a, $1b, $11 ; PATH_ENTRANCE_ROUTE_5 EVENT_DISP $a, $15, $a ; DAYCAREM -INCBIN "baserom.gbc",$545d2,$0 - Route5Blocks: ; 180 INCBIN "maps/route5.blk" @@ -17911,18 +21608,16 @@ Route9Object: ; 0x546a8 (size=86) db $7, $19, $b ; Route9Text11 db $a ; people - db SPRITE_LASS, $a + 4, $d + 4, $ff, $d2, $41, $ce, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $18 + 4, $ff, $d2, $42, $cd, $7 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $1f + 4, $ff, $d3, $43, $cd, $8 ; trainer - db SPRITE_LASS, $8 + 4, $30 + 4, $ff, $d3, $44, $ce, $6 ; trainer - db SPRITE_HIKER, $f + 4, $10 + 4, $ff, $d2, $45, $d1, $b ; trainer - db SPRITE_HIKER, $3 + 4, $2b + 4, $ff, $d2, $46, $d1, $6 ; trainer - db SPRITE_BUG_CATCHER, $2 + 4, $16 + 4, $ff, $d0, $47, $ca, $d ; trainer - db SPRITE_HIKER, $f + 4, $2d + 4, $ff, $d3, $48, $d1, $5 ; trainer - db SPRITE_BUG_CATCHER, $8 + 4, $28 + 4, $ff, $d3, $49, $ca, $e ; trainer - db SPRITE_BALL, $f + 4, $a + 4, $ff, $ff, $8a, $e6 ; item - -INCBIN "baserom.gbc",$546fe,$0 + db SPRITE_LASS, $a + 4, $d + 4, $ff, $d2, $41, JR__TRAINER_F + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $18 + 4, $ff, $d2, $42, JR__TRAINER_M + $C8, $7 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $1f + 4, $ff, $d3, $43, JR__TRAINER_M + $C8, $8 ; trainer + db SPRITE_LASS, $8 + 4, $30 + 4, $ff, $d3, $44, JR__TRAINER_F + $C8, $6 ; trainer + db SPRITE_HIKER, $f + 4, $10 + 4, $ff, $d2, $45, HIKER + $C8, $b ; trainer + db SPRITE_HIKER, $3 + 4, $2b + 4, $ff, $d2, $46, HIKER + $C8, $6 ; trainer + db SPRITE_BUG_CATCHER, $2 + 4, $16 + 4, $ff, $d0, $47, BUG_CATCHER + $C8, $d ; trainer + db SPRITE_HIKER, $f + 4, $2d + 4, $ff, $d3, $48, HIKER + $C8, $5 ; trainer + db SPRITE_BUG_CATCHER, $8 + 4, $28 + 4, $ff, $d3, $49, BUG_CATCHER + $C8, $e ; trainer + db SPRITE_BALL, $f + 4, $a + 4, $ff, $ff, $8a, TM_30 ; item Route9Blocks: ; 270 INCBIN "maps/route9.blk" @@ -17962,18 +21657,16 @@ Route13Object: ; 0x5482e (size=93) db $b, $1f, $d ; Route13Text13 db $a ; people - db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $31 + 4, $ff, $d3, $41, $df, $1 ; trainer - db SPRITE_LASS, $a + 4, $30 + 4, $ff, $d0, $42, $ce, $c ; trainer - db SPRITE_LASS, $9 + 4, $1b + 4, $ff, $d0, $43, $ce, $d ; trainer - db SPRITE_LASS, $a + 4, $17 + 4, $ff, $d2, $44, $ce, $e ; trainer - db SPRITE_LASS, $5 + 4, $32 + 4, $ff, $d0, $45, $ce, $f ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $c + 4, $ff, $d3, $46, $df, $2 ; trainer - db SPRITE_FOULARD_WOMAN, $6 + 4, $21 + 4, $ff, $d0, $47, $da, $4 ; trainer - db SPRITE_FOULARD_WOMAN, $6 + 4, $20 + 4, $ff, $d0, $48, $da, $5 ; trainer - db SPRITE_BIKER, $7 + 4, $a + 4, $ff, $d1, $49, $d2, $1 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $7 + 4, $ff, $d1, $4a, $df, $3 ; trainer - -INCBIN "baserom.gbc",$5488b,$0 + db SPRITE_BLACK_HAIR_BOY_1, $a + 4, $31 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $1 ; trainer + db SPRITE_LASS, $a + 4, $30 + 4, $ff, $d0, $42, JR__TRAINER_F + $C8, $c ; trainer + db SPRITE_LASS, $9 + 4, $1b + 4, $ff, $d0, $43, JR__TRAINER_F + $C8, $d ; trainer + db SPRITE_LASS, $a + 4, $17 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $e ; trainer + db SPRITE_LASS, $5 + 4, $32 + 4, $ff, $d0, $45, JR__TRAINER_F + $C8, $f ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $c + 4, $ff, $d3, $46, BIRD_KEEPER + $C8, $2 ; trainer + db SPRITE_FOULARD_WOMAN, $6 + 4, $21 + 4, $ff, $d0, $47, BEAUTY + $C8, $4 ; trainer + db SPRITE_FOULARD_WOMAN, $6 + 4, $20 + 4, $ff, $d0, $48, BEAUTY + $C8, $5 ; trainer + db SPRITE_BIKER, $7 + 4, $a + 4, $ff, $d1, $49, BIKER + $C8, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $7 + 4, $ff, $d1, $4a, BIRD_KEEPER + $C8, $3 ; trainer Route13Blocks: ; 270 INCBIN "maps/route13.blk" @@ -18011,18 +21704,16 @@ Route14Object: ; 0x549bb (size=87) db $d, $11, $b ; Route14Text11 db $a ; people - db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $4 + 4, $ff, $d0, $41, $df, $e ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $f + 4, $ff, $d0, $42, $df, $f ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $c + 4, $ff, $d0, $43, $df, $10 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $e + 4, $ff, $d1, $44, $df, $11 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $f + 4, $ff, $d2, $45, $df, $4 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $31 + 4, $6 + 4, $ff, $d1, $46, $df, $5 ; trainer - db SPRITE_BIKER, $27 + 4, $5 + 4, $ff, $d0, $47, $d2, $d ; trainer - db SPRITE_BIKER, $1e + 4, $4 + 4, $ff, $d3, $48, $d2, $e ; trainer - db SPRITE_BIKER, $1e + 4, $f + 4, $ff, $d2, $49, $d2, $f ; trainer - db SPRITE_BIKER, $1f + 4, $4 + 4, $ff, $d3, $4a, $d2, $2 ; trainer - -INCBIN "baserom.gbc",$54a12,$0 + db SPRITE_BLACK_HAIR_BOY_1, $4 + 4, $4 + 4, $ff, $d0, $41, BIRD_KEEPER + $C8, $e ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $f + 4, $ff, $d0, $42, BIRD_KEEPER + $C8, $f ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $c + 4, $ff, $d0, $43, BIRD_KEEPER + $C8, $10 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $e + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $11 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $f + 4, $ff, $d2, $45, BIRD_KEEPER + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $31 + 4, $6 + 4, $ff, $d1, $46, BIRD_KEEPER + $C8, $5 ; trainer + db SPRITE_BIKER, $27 + 4, $5 + 4, $ff, $d0, $47, BIKER + $C8, $d ; trainer + db SPRITE_BIKER, $1e + 4, $4 + 4, $ff, $d3, $48, BIKER + $C8, $e ; trainer + db SPRITE_BIKER, $1e + 4, $f + 4, $ff, $d2, $49, BIKER + $C8, $f ; trainer + db SPRITE_BIKER, $1f + 4, $4 + 4, $ff, $d3, $4a, BIKER + $C8, $2 ; trainer Route14Blocks: ; 270 INCBIN "maps/route14.blk" @@ -18065,18 +21756,16 @@ Route17Object: ; 0x54b42 (size=102) db $8d, $9, $10 ; Route17Text16 db $a ; people - db SPRITE_BIKER, $13 + 4, $c + 4, $ff, $d2, $41, $d8, $4 ; trainer - db SPRITE_BIKER, $10 + 4, $b + 4, $ff, $d3, $42, $d8, $5 ; trainer - db SPRITE_BIKER, $12 + 4, $4 + 4, $ff, $d1, $43, $d2, $8 ; trainer - db SPRITE_BIKER, $20 + 4, $7 + 4, $ff, $d2, $44, $d2, $9 ; trainer - db SPRITE_BIKER, $22 + 4, $e + 4, $ff, $d3, $45, $d2, $a ; trainer - db SPRITE_BIKER, $3a + 4, $11 + 4, $ff, $d2, $46, $d8, $6 ; trainer - db SPRITE_BIKER, $44 + 4, $2 + 4, $ff, $d3, $47, $d8, $7 ; trainer - db SPRITE_BIKER, $62 + 4, $e + 4, $ff, $d3, $48, $d8, $8 ; trainer - db SPRITE_BIKER, $62 + 4, $5 + 4, $ff, $d2, $49, $d2, $b ; trainer - db SPRITE_BIKER, $76 + 4, $a + 4, $ff, $d0, $4a, $d2, $c ; trainer - -INCBIN "baserom.gbc",$54ba8,$0 + db SPRITE_BIKER, $13 + 4, $c + 4, $ff, $d2, $41, CUE_BALL + $C8, $4 ; trainer + db SPRITE_BIKER, $10 + 4, $b + 4, $ff, $d3, $42, CUE_BALL + $C8, $5 ; trainer + db SPRITE_BIKER, $12 + 4, $4 + 4, $ff, $d1, $43, BIKER + $C8, $8 ; trainer + db SPRITE_BIKER, $20 + 4, $7 + 4, $ff, $d2, $44, BIKER + $C8, $9 ; trainer + db SPRITE_BIKER, $22 + 4, $e + 4, $ff, $d3, $45, BIKER + $C8, $a ; trainer + db SPRITE_BIKER, $3a + 4, $11 + 4, $ff, $d2, $46, CUE_BALL + $C8, $6 ; trainer + db SPRITE_BIKER, $44 + 4, $2 + 4, $ff, $d3, $47, CUE_BALL + $C8, $7 ; trainer + db SPRITE_BIKER, $62 + 4, $e + 4, $ff, $d3, $48, CUE_BALL + $C8, $8 ; trainer + db SPRITE_BIKER, $62 + 4, $5 + 4, $ff, $d2, $49, BIKER + $C8, $b ; trainer + db SPRITE_BIKER, $76 + 4, $a + 4, $ff, $d0, $4a, BIKER + $C8, $c ; trainer Route17Blocks: ; 720 INCBIN "maps/route17.blk" @@ -18114,18 +21803,16 @@ Route19Object: ; 0x54e9a (size=87) db $9, $b, $b ; Route19Text11 db $a ; people - db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $8 + 4, $ff, $d2, $41, $d7, $2 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $d + 4, $ff, $d2, $42, $d7, $3 ; trainer - db SPRITE_SWIMMER, $19 + 4, $d + 4, $ff, $d2, $43, $d7, $4 ; trainer - db SPRITE_SWIMMER, $1b + 4, $4 + 4, $ff, $d3, $44, $d7, $5 ; trainer - db SPRITE_SWIMMER, $1f + 4, $10 + 4, $ff, $d1, $45, $d7, $6 ; trainer - db SPRITE_SWIMMER, $b + 4, $9 + 4, $ff, $d0, $46, $d7, $7 ; trainer - db SPRITE_SWIMMER, $2b + 4, $8 + 4, $ff, $d2, $47, $da, $c ; trainer - db SPRITE_SWIMMER, $2b + 4, $b + 4, $ff, $d3, $48, $da, $d ; trainer - db SPRITE_SWIMMER, $2a + 4, $9 + 4, $ff, $d1, $49, $d7, $8 ; trainer - db SPRITE_SWIMMER, $2c + 4, $a + 4, $ff, $d0, $4a, $da, $e ; trainer - -INCBIN "baserom.gbc",$54ef1,$0 + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $8 + 4, $ff, $d2, $41, SWIMMER + $C8, $2 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $d + 4, $ff, $d2, $42, SWIMMER + $C8, $3 ; trainer + db SPRITE_SWIMMER, $19 + 4, $d + 4, $ff, $d2, $43, SWIMMER + $C8, $4 ; trainer + db SPRITE_SWIMMER, $1b + 4, $4 + 4, $ff, $d3, $44, SWIMMER + $C8, $5 ; trainer + db SPRITE_SWIMMER, $1f + 4, $10 + 4, $ff, $d1, $45, SWIMMER + $C8, $6 ; trainer + db SPRITE_SWIMMER, $b + 4, $9 + 4, $ff, $d0, $46, SWIMMER + $C8, $7 ; trainer + db SPRITE_SWIMMER, $2b + 4, $8 + 4, $ff, $d2, $47, BEAUTY + $C8, $c ; trainer + db SPRITE_SWIMMER, $2b + 4, $b + 4, $ff, $d3, $48, BEAUTY + $C8, $d ; trainer + db SPRITE_SWIMMER, $2a + 4, $9 + 4, $ff, $d1, $49, SWIMMER + $C8, $8 ; trainer + db SPRITE_SWIMMER, $2c + 4, $a + 4, $ff, $d0, $4a, BEAUTY + $C8, $e ; trainer Route19Blocks: ; 270 INCBIN "maps/route19.blk" @@ -18162,17 +21849,15 @@ Route21Object: ; 0x55021 (size=76) db $0 ; signs db $9 ; people - db SPRITE_FISHER2, $18 + 4, $4 + 4, $ff, $d2, $41, $d6, $7 ; trainer - db SPRITE_FISHER2, $19 + 4, $6 + 4, $ff, $d0, $42, $d6, $9 ; trainer - db SPRITE_SWIMMER, $1f + 4, $a + 4, $ff, $d1, $43, $d7, $c ; trainer - db SPRITE_SWIMMER, $1e + 4, $c + 4, $ff, $d3, $44, $d8, $9 ; trainer - db SPRITE_SWIMMER, $3f + 4, $10 + 4, $ff, $d0, $45, $d7, $d ; trainer - db SPRITE_SWIMMER, $47 + 4, $5 + 4, $ff, $d3, $46, $d7, $e ; trainer - db SPRITE_SWIMMER, $47 + 4, $f + 4, $ff, $d2, $47, $d7, $f ; trainer - db SPRITE_FISHER2, $38 + 4, $e + 4, $ff, $d2, $48, $d6, $8 ; trainer - db SPRITE_FISHER2, $39 + 4, $11 + 4, $ff, $d3, $49, $d6, $a ; trainer - -INCBIN "baserom.gbc",$5506d,$0 + db SPRITE_FISHER2, $18 + 4, $4 + 4, $ff, $d2, $41, FISHER + $C8, $7 ; trainer + db SPRITE_FISHER2, $19 + 4, $6 + 4, $ff, $d0, $42, FISHER + $C8, $9 ; trainer + db SPRITE_SWIMMER, $1f + 4, $a + 4, $ff, $d1, $43, SWIMMER + $C8, $c ; trainer + db SPRITE_SWIMMER, $1e + 4, $c + 4, $ff, $d3, $44, CUE_BALL + $C8, $9 ; trainer + db SPRITE_SWIMMER, $3f + 4, $10 + 4, $ff, $d0, $45, SWIMMER + $C8, $d ; trainer + db SPRITE_SWIMMER, $47 + 4, $5 + 4, $ff, $d3, $46, SWIMMER + $C8, $e ; trainer + db SPRITE_SWIMMER, $47 + 4, $f + 4, $ff, $d2, $47, SWIMMER + $C8, $f ; trainer + db SPRITE_FISHER2, $38 + 4, $e + 4, $ff, $d2, $48, FISHER + $C8, $8 ; trainer + db SPRITE_FISHER2, $39 + 4, $11 + 4, $ff, $d3, $49, FISHER + $C8, $a ; trainer Route21Blocks: ; 450 INCBIN "maps/route21.blk" @@ -18183,7 +21868,530 @@ DayCareMBlocks: ; 16 FuchsiaHouse3Blocks: ; 16 INCBIN "maps/fuchsiahouse3.blk" -INCBIN "baserom.gbc",$5524f,$e15 +INCBIN "baserom.gbc",$5524f,$554ee - $5524f + +Route2Text3: ; 0x554ee + TX_FAR _Route2Text3 + db $50 + +Route2Text4: ; 0x554f3 + TX_FAR _Route2Text4 + db $50 + +INCBIN "baserom.gbc",$554f8,$55586 - $554f8 + +Route3Text1: ; 0x55586 + TX_FAR _Route3Text1 + db $50 + +Route3Text2: ; 0x5558b + db $08 ; asm + ld hl, $5525 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55595,$555a4 - $55595 +Route3Text3: ; 0x555a4 + db $08 ; asm + ld hl, $5531 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555ae,$555bd - $555ae +Route3Text4: ; 0x555bd + db $08 ; asm + ld hl, $553d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555c7,$555d6 - $555c7 +Route3Text5: ; 0x555d6 + db $08 ; asm + ld hl, $5549 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555e0,$555ef - $555e0 +Route3Text6: ; 0x555ef + db $08 ; asm + ld hl, $5555 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$555f9,$55608 - $555f9 +Route3Text7: ; 0x55608 + db $08 ; asm + ld hl, $5561 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55612,$55621 - $55612 +Route3Text8: ; 0x55621 + db $08 ; asm + ld hl, $556d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5562b,$5563a - $5562b +Route3Text9: ; 0x5563a + db $08 ; asm + ld hl, $5579 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55644,$f + +Route3Text10: ; 0x55653 + TX_FAR _Route3Text10 + db $50 + +INCBIN "baserom.gbc",$55658,$5568a - $55658 + +Route4Text1: ; 0x5568a + TX_FAR _Route4Text1 + db $50 + +Route4Text2: ; 0x5568f + db $08 ; asm + ld hl, $567d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55699,$f + +Route4Text5: ; 0x556a8 + TX_FAR _Route4Text5 + db $50 + +Route4Text6: ; 0x556ad + TX_FAR _Route4Text6 + db $50 + +INCBIN "baserom.gbc",$556b2,$556b5 - $556b2 +Route5Texts: ; 0x556b5 + dw Route5Text1 + +Route5Text1: ; 0x556b7 + TX_FAR _Route5Text1 + db $50 + +INCBIN "baserom.gbc",$556bc,$55758 - $556bc +Route9Text1: ; 0x55758 + db $08 ; asm + ld hl, $56eb + jr .asm_4fe87 ; 0x5575c + ld [$f721], sp + ld d, [hl] + jr .asm_4fe87 ; 0x55762 + ld [$0321], sp + ld d, a + jr .asm_4fe87 ; 0x55768 + ld [$0f21], sp + ld d, a + jr .asm_4fe87 ; 0x5576e + ld [$1b21], sp + ld d, a + jr .asm_4fe87 ; 0x55774 + ld [$2721], sp + ld d, a + jr .asm_4fe87 ; 0x5577a + ld [$3321], sp + ld d, a + jr .asm_4fe87 ; 0x55780 + ld [$3f21], sp + ld d, a + jr .asm_4fe87 ; 0x55786 + ld [$4b21], sp + ld d, a +.asm_4fe87 ; 0x5578c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55792,$87 + +Route9Text11: ; 0x55819 + TX_FAR _Route9Text11 + db $50 + +INCBIN "baserom.gbc",$5581e,$558ca - $5581e +Route13Text1: ; 0x558ca + db $08 ; asm + ld hl, $5851 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$558d4,$558e3 - $558d4 +Route13Text2: ; 0x558e3 + db $08 ; asm + ld hl, $585d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$558ed,$558fc - $558ed +Route13Text3: ; 0x558fc + db $08 ; asm + ld hl, $5869 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55906,$55915 - $55906 +Route13Text4: ; 0x55915 + db $08 ; asm + ld hl, $5875 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5591f,$5592e - $5591f +Route13Text5: ; 0x5592e + db $08 ; asm + ld hl, $5881 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55938,$55947 - $55938 +Route13Text6: ; 0x55947 + db $08 ; asm + ld hl, $588d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55951,$55960 - $55951 +Route13Text7: ; 0x55960 + db $08 ; asm + ld hl, $5899 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5596a,$55979 - $5596a +Route13Text8: ; 0x55979 + db $08 ; asm + ld hl, $58a5 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55983,$55992 - $55983 +Route13Text9: ; 0x55992 + db $08 ; asm + ld hl, $58b1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5599c,$559ab - $5599c +Route13Text10: ; 0x559ab + db $08 ; asm + ld hl, $58bd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$559b5,$f + +Route13Text11: ; 0x559c4 + TX_FAR _Route13Text11 + db $50 + +Route13Text12: ; 0x559c9 + TX_FAR _Route13Text12 + db $50 + +Route13Text13: ; 0x559ce + TX_FAR _Route13Text13 + db $50 + +INCBIN "baserom.gbc",$559d3,$55a7b - $559d3 +Route14Text1: ; 0x55a7b + db $08 ; asm + ld hl, $5a02 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55a85,$55a94 - $55a85 +Route14Text2: ; 0x55a94 + db $08 ; asm + ld hl, $5a0e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55a9e,$55aad - $55a9e +Route14Text3: ; 0x55aad + db $08 ; asm + ld hl, $5a1a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ab7,$55ac6 - $55ab7 +Route14Text4: ; 0x55ac6 + db $08 ; asm + ld hl, $5a26 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ad0,$55adf - $55ad0 +Route14Text5: ; 0x55adf + db $08 ; asm + ld hl, $5a32 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ae9,$55af8 - $55ae9 +Route14Text6: ; 0x55af8 + db $08 ; asm + ld hl, $5a3e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b02,$55b11 - $55b02 +Route14Text7: ; 0x55b11 + db $08 ; asm + ld hl, $5a4a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b1b,$55b2a - $55b1b +Route14Text8: ; 0x55b2a + db $08 ; asm + ld hl, $5a56 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b34,$55b43 - $55b34 +Route14Text9: ; 0x55b43 + db $08 ; asm + ld hl, $5a62 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b4d,$55b5c - $55b4d +Route14Text10: ; 0x55b5c + db $08 ; asm + ld hl, $5a6e + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55b66,$f + +Route14Text11: ; 0x55b75 + TX_FAR _Route14Text11 + db $50 + +INCBIN "baserom.gbc",$55b7a,$55c2c - $55b7a +Route17Text1: ; 0x55c2c + db $08 ; asm + ld hl, $5bb3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c36,$55c45 - $55c36 +Route17Text2: ; 0x55c45 + db $08 ; asm + ld hl, $5bbf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c4f,$55c5e - $55c4f +Route17Text3: ; 0x55c5e + db $08 ; asm + ld hl, $5bcb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c68,$55c77 - $55c68 +Route17Text4: ; 0x55c77 + db $08 ; asm + ld hl, $5bd7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c81,$55c90 - $55c81 +Route17Text5: ; 0x55c90 + db $08 ; asm + ld hl, $5be3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55c9a,$55ca9 - $55c9a +Route17Text6: ; 0x55ca9 + db $08 ; asm + ld hl, $5bef + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55cb3,$55cc2 - $55cb3 +Route17Text7: ; 0x55cc2 + db $08 ; asm + ld hl, $5bfb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ccc,$55cdb - $55ccc +Route17Text8: ; 0x55cdb + db $08 ; asm + ld hl, $5c07 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55ce5,$55cf4 - $55ce5 +Route17Text9: ; 0x55cf4 + db $08 ; asm + ld hl, $5c13 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55cfe,$55d0d - $55cfe +Route17Text10: ; 0x55d0d + db $08 ; asm + ld hl, $5c1f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55d17,$f + +Route17Text11: ; 0x55d26 + TX_FAR _Route17Text11 + db $50 + +Route17Text12: ; 0x55d2b + TX_FAR _Route17Text12 + db $50 + +Route17Text13: ; 0x55d30 + TX_FAR _Route17Text13 + db $50 + +Route17Text14: ; 0x55d35 + TX_FAR _Route17Text14 + db $50 + +Route17Text15: ; 0x55d3a + TX_FAR _Route17Text15 + db $50 + +Route17Text16: ; 0x55d3f + TX_FAR _Route17Text16 + db $50 + +INCBIN "baserom.gbc",$55d44,$55dec - $55d44 +Route19Text1: ; 0x55dec + db $08 ; asm + ld hl, $5d73 + call LoadTrainerHeader + jp $24d7 + +Route19Text2: ; 0x55df6 + db $08 ; asm + ld hl, $5d7f + call LoadTrainerHeader + jp $24d7 + +Route19Text3: ; 0x55e00 + db $08 ; asm + ld hl, $5d8b + call LoadTrainerHeader + jp $24d7 + +Route19Text4: ; 0x55e0a + db $08 ; asm + ld hl, $5d97 + call LoadTrainerHeader + jp $24d7 + +Route19Text5: ; 0x55e14 + db $08 ; asm + ld hl, $5da3 + call LoadTrainerHeader + jp $24d7 + +Route19Text6: ; 0x55e1e + db $08 ; asm + ld hl, $5daf + call LoadTrainerHeader + jp $24d7 + +Route19Text7: ; 0x55e28 + db $08 ; asm + ld hl, $5dbb + call LoadTrainerHeader + jp $24d7 + +Route19Text8: ; 0x55e32 + db $08 ; asm + ld hl, $5dc7 + call LoadTrainerHeader + jp $24d7 + +Route19Text9: ; 0x55e3c + db $08 ; asm + ld hl, $5dd3 + call LoadTrainerHeader + jp $24d7 + +Route19Text10: ; 0x55e46 + db $08 ; asm + ld hl, $5ddf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55e50,$96 + +Route19Text11: ; 0x55ee6 + TX_FAR _Route19Text11 + db $50 + +INCBIN "baserom.gbc",$55eeb,$55f83 - $55eeb +Route21Text1: ; 0x55f83 + db $08 ; asm + ld hl, $5f16 + call LoadTrainerHeader + jp $24d7 + +Route21Text2: ; 0x55f8d + db $08 ; asm + ld hl, $5f22 + call LoadTrainerHeader + jp $24d7 + +Route21Text3: ; 0x55f97 + db $08 ; asm + ld hl, $5f2e + call LoadTrainerHeader + jp $24d7 + +Route21Text4: ; 0x55fa1 + db $08 ; asm + ld hl, $5f3a + call LoadTrainerHeader + jp $24d7 + +Route21Text5: ; 0x55fab + db $08 ; asm + ld hl, $5f46 + call LoadTrainerHeader + jp $24d7 + +Route21Text6: ; 0x55fb5 + db $08 ; asm + ld hl, $5f52 + call LoadTrainerHeader + jp $24d7 + +Route21Text7: ; 0x55fbf + db $08 ; asm + ld hl, $5f5e + call LoadTrainerHeader + jp $24d7 + +Route21Text8: ; 0x55fc9 + db $08 ; asm + ld hl, $5f6a + call LoadTrainerHeader + jp $24d7 + +Route21Text9: ; 0x55fd3 + db $08 ; asm + ld hl, $5f76 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$55fdd,$87 VermilionHouse2_h: ; 0x56064 to 0x56070 (12 bytes) (id=163) db $08 ; tileset @@ -18193,7 +22401,38 @@ VermilionHouse2_h: ; 0x56064 to 0x56070 (12 bytes) (id=163) dw $60cf ; objects -INCBIN "baserom.gbc",$56070,$560cf - $56070 +INCBIN "baserom.gbc",$56070,$56075 - $56070 +VermilionHouse2Text1: ; 0x56075 + db $08 ; asm + ld a, [$d728] + bit 3, a + jr nz, .asm_03ef5 ; 0x5607b + ld hl, $60b1 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_eb1b7 ; 0x5608a + ld bc,(OLD_ROD << 8) | 1 + call $3e2e + jr nc, .asm_fd67b ; 0x56092 + ld hl, $d728 + set 3, [hl] + ld hl, $60b6 + jr .asm_5dd95 ; 0x5609c +.asm_fd67b ; 0x5609e + ld hl, $60ca + jr .asm_5dd95 ; 0x560a1 +.asm_eb1b7 ; 0x560a3 + ld hl, $60c0 + jr .asm_5dd95 ; 0x560a6 +.asm_03ef5 ; 0x560a8 + ld hl, $60c5 +.asm_5dd95 ; 0x560ab + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$560b1,$1e VermilionHouse2Object: ; 0x560cf (size=26) db $a ; border tile @@ -18210,7 +22449,6 @@ VermilionHouse2Object: ; 0x560cf (size=26) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - CeladonMart2_h: ; 0x560e9 to 0x560f5 (12 bytes) (id=123) db $12 ; tileset db $04, $0a ; dimensions (y, x) @@ -18219,14 +22457,27 @@ CeladonMart2_h: ; 0x560e9 to 0x560f5 (12 bytes) (id=123) dw $6111 ; objects -INCBIN "baserom.gbc",$560f5,$56111 - $560f5 +INCBIN "baserom.gbc",$560f5,$56102 - $560f5 + +CeladonMart2Text3: ; 0x56102 + TX_FAR _CeladonMart2Text3 + db $50 + +CeladonMart2Text4: ; 0x56107 + TX_FAR _CeladonMart2Text4 + db $50 + +CeladonMart2Text5: ; 0x5610c + TX_FAR _CeladonMart2Text5 + db $50 + CeladonMart2Object: ; 0x56111 (size=55) db $f ; border tile db $3 ; warps db $1, $c, $4, CELADON_MART_1 db $1, $10, $1, CELADON_MART_3 - db $1, $1, $0, CELADON_MART_6 + db $1, $1, $0, CELADON_MART_ELEVATOR db $1 ; signs db $1, $e, $5 ; CeladonMart2Text5 @@ -18240,8 +22491,7 @@ CeladonMart2Object: ; 0x56111 (size=55) ; warp-to EVENT_DISP $a, $1, $c ; CELADON_MART_1 EVENT_DISP $a, $1, $10 ; CELADON_MART_3 - EVENT_DISP $a, $1, $1 ; CELADON_MART_6 - + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart2Blocks: ; 40 INCBIN "maps/celadonmart2.blk" @@ -18254,7 +22504,38 @@ FuchsiaHouse3_h: ; 0x56170 to 0x5617c (12 bytes) (id=164) dw $6221 ; objects -INCBIN "baserom.gbc",$5617c,$56221 - $5617c +INCBIN "baserom.gbc",$5617c,$56181 - $5617c +FuchsiaHouse3Text1: ; 0x56181 + db $08 ; asm + ld a, [$d728] + bit 4, a + jr nz, .asm_6084e ; 0x56187 + ld hl, $61bd + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_3ace4 ; 0x56196 + ld bc,(GOOD_ROD << 8) | 1 + call $3e2e + jr nc, .asm_628ee ; 0x5619e + ld hl, $d728 + set 4, [hl] + ld hl, $61c2 + jr .asm_1b09c ; 0x561a8 +.asm_628ee ; 0x561aa + ld hl, $621c + jr .asm_1b09c ; 0x561ad +.asm_3ace4 ; 0x561af + ld hl, $6212 + jr .asm_1b09c ; 0x561b2 +.asm_6084e ; 0x561b4 + ld hl, $6217 +.asm_1b09c ; 0x561b7 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$561bd,$64 FuchsiaHouse3Object: ; 0x56221 (size=34) db $c ; border tile @@ -18273,7 +22554,6 @@ FuchsiaHouse3Object: ; 0x56221 (size=34) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - DayCareM_h: ; 0x56243 to 0x5624f (12 bytes) (id=72) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -18299,7 +22579,6 @@ DayCareMObject: ; 0x56459 (size=26) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - Route12House_h: ; 0x56473 to 0x5647f (12 bytes) (id=189) db $08 ; tileset db $04, $04 ; dimensions (y, x) @@ -18308,7 +22587,38 @@ Route12House_h: ; 0x56473 to 0x5647f (12 bytes) (id=189) dw $64de ; objects -INCBIN "baserom.gbc",$5647f,$564de - $5647f +INCBIN "baserom.gbc",$5647f,$56484 - $5647f +Route12HouseText1: ; 0x56484 + db $08 ; asm + ld a, [$d728] + bit 5, a + jr nz, .asm_b4cad ; 0x5648a + ld hl, $64c0 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_a2d76 ; 0x56499 + ld bc,(SUPER_ROD << 8) | 1 + call $3e2e + jr nc, .asm_e3b89 ; 0x564a1 + ld hl, $d728 + set 5, [hl] + ld hl, $64c5 + jr .asm_df984 ; 0x564ab +.asm_e3b89 ; 0x564ad + ld hl, $64d9 + jr .asm_df984 ; 0x564b0 +.asm_a2d76 ; 0x564b2 + ld hl, $64cf + jr .asm_df984 ; 0x564b5 +.asm_b4cad ; 0x564b7 + ld hl, $64d4 +.asm_df984 ; 0x564ba + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$564c0,$1e Route12HouseObject: ; 0x564de (size=26) db $a ; border tile @@ -18325,7 +22635,6 @@ Route12HouseObject: ; 0x564de (size=26) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - SilphCo8_h: ; 0x564f8 to 0x56504 (12 bytes) (id=213) db $16 ; tileset db $09, $0d ; dimensions (y, x) @@ -18334,7 +22643,38 @@ SilphCo8_h: ; 0x564f8 to 0x56504 (12 bytes) (id=213) dw $6613 ; objects -INCBIN "baserom.gbc",$56504,$56613 - $56504 +INCBIN "baserom.gbc",$56504,$565aa - $56504 +SilphCo8Text1: ; 0x565aa + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, $65c3 + jr nz, .asm_a468f ; 0x565b3 + ld hl, $65be +.asm_a468f ; 0x565b8 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$565be,$565c8 - $565be +SilphCo8Text2: ; 0x565c8 + db $08 ; asm + ld hl, $6585 + call LoadTrainerHeader + jp $24d7 + +SilphCo8Text3: ; 0x565d2 + db $08 ; asm + ld hl, $6591 + call LoadTrainerHeader + jp $24d7 + +SilphCo8Text4: ; 0x565dc + db $08 ; asm + ld hl, $659d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$565e6,$2d SilphCo8Object: ; 0x56613 (size=90) db $2e ; border tile @@ -18351,9 +22691,9 @@ SilphCo8Object: ; 0x56613 (size=90) db $4 ; people db SPRITE_LAPRAS_GIVER, $2 + 4, $4 + 4, $ff, $ff, $1 ; person - db SPRITE_ROCKET, $2 + 4, $13 + 4, $ff, $d2, $42, $e6, $23 ; trainer - db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d0, $43, $e4, $9 ; trainer - db SPRITE_ROCKET, $f + 4, $c + 4, $ff, $d3, $44, $e6, $24 ; trainer + db SPRITE_ROCKET, $2 + 4, $13 + 4, $ff, $d2, $42, ROCKET + $C8, $23 ; trainer + db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d0, $43, SCIENTIST + $C8, $9 ; trainer + db SPRITE_ROCKET, $f + 4, $c + 4, $ff, $d3, $44, ROCKET + $C8, $24 ; trainer ; warp-to EVENT_DISP $d, $0, $10 ; SILPH_CO_9F @@ -18364,7 +22704,6 @@ SilphCo8Object: ; 0x56613 (size=90) EVENT_DISP $d, $5, $b ; SILPH_CO_2F EVENT_DISP $d, $9, $b ; SILPH_CO_8F - SilphCo8Blocks: ; 117 INCBIN "maps/silphco8.blk" @@ -18408,12 +22747,12 @@ Route6Object: ; 0x58022 (size=87) db $f, $13, $7 ; Route6Text7 db $6 ; people - db SPRITE_BLACK_HAIR_BOY_1, $15 + 4, $a + 4, $ff, $d3, $41, $cd, $4 ; trainer - db SPRITE_LASS, $15 + 4, $b + 4, $ff, $d2, $42, $ce, $2 ; trainer - db SPRITE_BUG_CATCHER, $f + 4, $0 + 4, $ff, $d3, $43, $ca, $a ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $b + 4, $ff, $d2, $44, $cd, $5 ; trainer - db SPRITE_LASS, $1e + 4, $b + 4, $ff, $d2, $45, $ce, $3 ; trainer - db SPRITE_BUG_CATCHER, $1a + 4, $13 + 4, $ff, $d2, $46, $ca, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $15 + 4, $a + 4, $ff, $d3, $41, JR__TRAINER_M + $C8, $4 ; trainer + db SPRITE_LASS, $15 + 4, $b + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $f + 4, $0 + 4, $ff, $d3, $43, BUG_CATCHER + $C8, $a ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $1f + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $5 ; trainer + db SPRITE_LASS, $1e + 4, $b + 4, $ff, $d2, $45, JR__TRAINER_F + $C8, $3 ; trainer + db SPRITE_BUG_CATCHER, $1a + 4, $13 + 4, $ff, $d2, $46, BUG_CATCHER + $C8, $b ; trainer ; warp-to EVENT_DISP $a, $1, $9 ; ROUTE_6_GATE @@ -18421,8 +22760,6 @@ Route6Object: ; 0x58022 (size=87) EVENT_DISP $a, $7, $a ; ROUTE_6_GATE EVENT_DISP $a, $d, $11 ; PATH_ENTRANCE_ROUTE_6 -INCBIN "baserom.gbc",$58079,$0 - Route6Blocks: ; 180 INCBIN "maps/route6.blk" @@ -18464,15 +22801,15 @@ Route8Object: ; 0x5814f (size=119) db $3, $11, $a ; Route8Text10 db $9 ; people - db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $8 + 4, $ff, $d3, $41, $d0, $3 ; trainer - db SPRITE_GAMBLER, $9 + 4, $d + 4, $ff, $d1, $42, $d9, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $6 + 4, $2a + 4, $ff, $d1, $43, $d0, $4 ; trainer - db SPRITE_LASS, $3 + 4, $1a + 4, $ff, $d2, $44, $cb, $d ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $1a + 4, $ff, $d3, $45, $d0, $5 ; trainer - db SPRITE_LASS, $5 + 4, $1a + 4, $ff, $d2, $46, $cb, $e ; trainer - db SPRITE_LASS, $6 + 4, $1a + 4, $ff, $d3, $47, $cb, $f ; trainer - db SPRITE_GAMBLER, $d + 4, $2e + 4, $ff, $d0, $48, $d9, $7 ; trainer - db SPRITE_LASS, $c + 4, $33 + 4, $ff, $d2, $49, $cb, $10 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $5 + 4, $8 + 4, $ff, $d3, $41, SUPER_NERD + $C8, $3 ; trainer + db SPRITE_GAMBLER, $9 + 4, $d + 4, $ff, $d1, $42, GAMBLER + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $6 + 4, $2a + 4, $ff, $d1, $43, SUPER_NERD + $C8, $4 ; trainer + db SPRITE_LASS, $3 + 4, $1a + 4, $ff, $d2, $44, LASS + $C8, $d ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $1a + 4, $ff, $d3, $45, SUPER_NERD + $C8, $5 ; trainer + db SPRITE_LASS, $5 + 4, $1a + 4, $ff, $d2, $46, LASS + $C8, $e ; trainer + db SPRITE_LASS, $6 + 4, $1a + 4, $ff, $d3, $47, LASS + $C8, $f ; trainer + db SPRITE_GAMBLER, $d + 4, $2e + 4, $ff, $d0, $48, GAMBLER + $C8, $7 ; trainer + db SPRITE_LASS, $c + 4, $33 + 4, $ff, $d2, $49, LASS + $C8, $10 ; trainer ; warp-to EVENT_DISP $1e, $9, $1 ; ROUTE_8_GATE @@ -18481,8 +22818,6 @@ Route8Object: ; 0x5814f (size=119) EVENT_DISP $1e, $a, $8 ; ROUTE_8_GATE EVENT_DISP $1e, $3, $d ; PATH_ENTRANCE_ROUTE_8 -INCBIN "baserom.gbc",$581c6,$0 - Route8Blocks: ; 270 INCBIN "maps/route8.blk" @@ -18526,12 +22861,12 @@ Route10Object: ; 0x582f6 (size=96) db $29, $5, $a ; Route10Text10 db $6 ; people - db SPRITE_BLACK_HAIR_BOY_2, $2c + 4, $a + 4, $ff, $d2, $41, $cf, $1 ; trainer - db SPRITE_HIKER, $39 + 4, $3 + 4, $ff, $d1, $42, $d1, $7 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $40 + 4, $e + 4, $ff, $d2, $43, $cf, $2 ; trainer - db SPRITE_LASS, $19 + 4, $7 + 4, $ff, $d2, $44, $ce, $7 ; trainer - db SPRITE_HIKER, $3d + 4, $3 + 4, $ff, $d0, $45, $d1, $8 ; trainer - db SPRITE_LASS, $36 + 4, $7 + 4, $ff, $d0, $46, $ce, $8 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $2c + 4, $a + 4, $ff, $d2, $41, POKEMANIAC + $C8, $1 ; trainer + db SPRITE_HIKER, $39 + 4, $3 + 4, $ff, $d1, $42, HIKER + $C8, $7 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $40 + 4, $e + 4, $ff, $d2, $43, POKEMANIAC + $C8, $2 ; trainer + db SPRITE_LASS, $19 + 4, $7 + 4, $ff, $d2, $44, JR__TRAINER_F + $C8, $7 ; trainer + db SPRITE_HIKER, $3d + 4, $3 + 4, $ff, $d0, $45, HIKER + $C8, $8 ; trainer + db SPRITE_LASS, $36 + 4, $7 + 4, $ff, $d0, $46, JR__TRAINER_F + $C8, $8 ; trainer ; warp-to EVENT_DISP $a, $13, $b ; ROCK_TUNNEL_POKECENTER @@ -18539,8 +22874,6 @@ Route10Object: ; 0x582f6 (size=96) EVENT_DISP $a, $35, $8 ; ROCK_TUNNEL_1 EVENT_DISP $a, $27, $6 ; POWER_PLANT -INCBIN "baserom.gbc",$58356,$0 - Route10Blocks: ; 360 INCBIN "maps/route10.blk" @@ -18582,16 +22915,16 @@ Route11Object: ; 0x584e0 (size=127) db $5, $1, $b ; Route11Text11 db $a ; people - db SPRITE_GAMBLER, $e + 4, $a + 4, $ff, $d0, $41, $d9, $1 ; trainer - db SPRITE_GAMBLER, $9 + 4, $1a + 4, $ff, $d0, $42, $d9, $2 ; trainer - db SPRITE_BUG_CATCHER, $5 + 4, $d + 4, $ff, $d2, $43, $c9, $9 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $24 + 4, $ff, $d0, $44, $d4, $2 ; trainer - db SPRITE_BUG_CATCHER, $4 + 4, $16 + 4, $ff, $d1, $45, $c9, $a ; trainer - db SPRITE_GAMBLER, $7 + 4, $2d + 4, $ff, $d0, $46, $d9, $3 ; trainer - db SPRITE_GAMBLER, $3 + 4, $21 + 4, $ff, $d1, $47, $d9, $4 ; trainer - db SPRITE_BUG_CATCHER, $5 + 4, $2b + 4, $ff, $d3, $48, $c9, $b ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $10 + 4, $2d + 4, $ff, $d2, $49, $d4, $3 ; trainer - db SPRITE_BUG_CATCHER, $c + 4, $16 + 4, $ff, $d1, $4a, $c9, $c ; trainer + db SPRITE_GAMBLER, $e + 4, $a + 4, $ff, $d0, $41, GAMBLER + $C8, $1 ; trainer + db SPRITE_GAMBLER, $9 + 4, $1a + 4, $ff, $d0, $42, GAMBLER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $d + 4, $ff, $d2, $43, YOUNGSTER + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $b + 4, $24 + 4, $ff, $d0, $44, ENGINEER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $4 + 4, $16 + 4, $ff, $d1, $45, YOUNGSTER + $C8, $a ; trainer + db SPRITE_GAMBLER, $7 + 4, $2d + 4, $ff, $d0, $46, GAMBLER + $C8, $3 ; trainer + db SPRITE_GAMBLER, $3 + 4, $21 + 4, $ff, $d1, $47, GAMBLER + $C8, $4 ; trainer + db SPRITE_BUG_CATCHER, $5 + 4, $2b + 4, $ff, $d3, $48, YOUNGSTER + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $10 + 4, $2d + 4, $ff, $d2, $49, ENGINEER + $C8, $3 ; trainer + db SPRITE_BUG_CATCHER, $c + 4, $16 + 4, $ff, $d1, $4a, YOUNGSTER + $C8, $c ; trainer ; warp-to EVENT_DISP $1e, $8, $31 ; ROUTE_11_GATE_1F @@ -18600,8 +22933,6 @@ Route11Object: ; 0x584e0 (size=127) EVENT_DISP $1e, $9, $3a ; ROUTE_11_GATE_1F EVENT_DISP $1e, $5, $4 ; DIGLETTS_CAVE_ENTRANCE -INCBIN "baserom.gbc",$5855f,$0 - Route11Blocks: ; 270 INCBIN "maps/route11.blk" @@ -18650,15 +22981,15 @@ Route12Object: ; 0x5869a (size=118) db $a ; people db SPRITE_SNORLAX, $3e + 4, $a + 4, $ff, $d0, $1 ; person - db SPRITE_FISHER2, $1f + 4, $e + 4, $ff, $d2, $42, $d6, $3 ; trainer - db SPRITE_FISHER2, $27 + 4, $5 + 4, $ff, $d1, $43, $d6, $4 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $5c + 4, $b + 4, $ff, $d2, $44, $cd, $9 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $4c + 4, $e + 4, $ff, $d1, $45, $dc, $2 ; trainer - db SPRITE_FISHER2, $28 + 4, $c + 4, $ff, $d2, $46, $d6, $5 ; trainer - db SPRITE_FISHER2, $34 + 4, $9 + 4, $ff, $d3, $47, $d6, $6 ; trainer - db SPRITE_FISHER2, $57 + 4, $6 + 4, $ff, $d0, $48, $d6, $b ; trainer - db SPRITE_BALL, $23 + 4, $e + 4, $ff, $ff, $89, $d8 ; item - db SPRITE_BALL, $59 + 4, $5 + 4, $ff, $ff, $8a, $25 ; item + db SPRITE_FISHER2, $1f + 4, $e + 4, $ff, $d2, $42, FISHER + $C8, $3 ; trainer + db SPRITE_FISHER2, $27 + 4, $5 + 4, $ff, $d1, $43, FISHER + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $5c + 4, $b + 4, $ff, $d2, $44, JR__TRAINER_M + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $4c + 4, $e + 4, $ff, $d1, $45, ROCKER + $C8, $2 ; trainer + db SPRITE_FISHER2, $28 + 4, $c + 4, $ff, $d2, $46, FISHER + $C8, $5 ; trainer + db SPRITE_FISHER2, $34 + 4, $9 + 4, $ff, $d3, $47, FISHER + $C8, $6 ; trainer + db SPRITE_FISHER2, $57 + 4, $6 + 4, $ff, $d0, $48, FISHER + $C8, $b ; trainer + db SPRITE_BALL, $23 + 4, $e + 4, $ff, $ff, $89, TM_16 ; item + db SPRITE_BALL, $59 + 4, $5 + 4, $ff, $ff, $8a, IRON ; item ; warp-to EVENT_DISP $a, $f, $a ; ROUTE_12_GATE @@ -18666,8 +22997,6 @@ Route12Object: ; 0x5869a (size=118) EVENT_DISP $a, $15, $a ; ROUTE_12_GATE EVENT_DISP $a, $4d, $b ; ROUTE_12_HOUSE -INCBIN "baserom.gbc",$58710,$0 - Route12Blocks: ; 540 INCBIN "maps/route12.blk" @@ -18708,17 +23037,17 @@ Route15Object: ; 0x5894e (size=126) db $9, $27, $c ; Route15Text12 db $b ; people - db SPRITE_LASS, $b + 4, $29 + 4, $ff, $d0, $41, $ce, $14 ; trainer - db SPRITE_LASS, $a + 4, $35 + 4, $ff, $d2, $42, $ce, $15 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $1f + 4, $ff, $d1, $43, $df, $6 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $23 + 4, $ff, $d1, $44, $df, $7 ; trainer - db SPRITE_FOULARD_WOMAN, $b + 4, $35 + 4, $ff, $d0, $45, $da, $9 ; trainer - db SPRITE_FOULARD_WOMAN, $a + 4, $29 + 4, $ff, $d3, $46, $da, $a ; trainer - db SPRITE_BIKER, $a + 4, $30 + 4, $ff, $d0, $47, $d2, $3 ; trainer - db SPRITE_BIKER, $a + 4, $2e + 4, $ff, $d0, $48, $d2, $4 ; trainer - db SPRITE_LASS, $5 + 4, $25 + 4, $ff, $d3, $49, $ce, $16 ; trainer - db SPRITE_LASS, $d + 4, $12 + 4, $ff, $d1, $4a, $ce, $17 ; trainer - db SPRITE_BALL, $5 + 4, $12 + 4, $ff, $ff, $8b, $dc ; item + db SPRITE_LASS, $b + 4, $29 + 4, $ff, $d0, $41, JR__TRAINER_F + $C8, $14 ; trainer + db SPRITE_LASS, $a + 4, $35 + 4, $ff, $d2, $42, JR__TRAINER_F + $C8, $15 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $1f + 4, $ff, $d1, $43, BIRD_KEEPER + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $23 + 4, $ff, $d1, $44, BIRD_KEEPER + $C8, $7 ; trainer + db SPRITE_FOULARD_WOMAN, $b + 4, $35 + 4, $ff, $d0, $45, BEAUTY + $C8, $9 ; trainer + db SPRITE_FOULARD_WOMAN, $a + 4, $29 + 4, $ff, $d3, $46, BEAUTY + $C8, $a ; trainer + db SPRITE_BIKER, $a + 4, $30 + 4, $ff, $d0, $47, BIKER + $C8, $3 ; trainer + db SPRITE_BIKER, $a + 4, $2e + 4, $ff, $d0, $48, BIKER + $C8, $4 ; trainer + db SPRITE_LASS, $5 + 4, $25 + 4, $ff, $d3, $49, JR__TRAINER_F + $C8, $16 ; trainer + db SPRITE_LASS, $d + 4, $12 + 4, $ff, $d1, $4a, JR__TRAINER_F + $C8, $17 ; trainer + db SPRITE_BALL, $5 + 4, $12 + 4, $ff, $ff, $8b, TM_20 ; item ; warp-to EVENT_DISP $1e, $8, $7 ; ROUTE_15_GATE @@ -18726,8 +23055,6 @@ Route15Object: ; 0x5894e (size=126) EVENT_DISP $1e, $8, $e ; ROUTE_15_GATE EVENT_DISP $1e, $9, $e ; ROUTE_15_GATE -INCBIN "baserom.gbc",$589cc,$0 - Route15Blocks: ; 270 INCBIN "maps/route15.blk" @@ -18774,12 +23101,12 @@ Route16Object: ; 0x58afc (size=136) db $11, $5, $9 ; Route16Text9 db $7 ; people - db SPRITE_BIKER, $c + 4, $11 + 4, $ff, $d2, $41, $d2, $5 ; trainer - db SPRITE_BIKER, $d + 4, $e + 4, $ff, $d3, $42, $d8, $1 ; trainer - db SPRITE_BIKER, $c + 4, $b + 4, $ff, $d1, $43, $d8, $2 ; trainer - db SPRITE_BIKER, $b + 4, $9 + 4, $ff, $d2, $44, $d2, $6 ; trainer - db SPRITE_BIKER, $a + 4, $6 + 4, $ff, $d3, $45, $d8, $3 ; trainer - db SPRITE_BIKER, $c + 4, $3 + 4, $ff, $d3, $46, $d2, $7 ; trainer + db SPRITE_BIKER, $c + 4, $11 + 4, $ff, $d2, $41, BIKER + $C8, $5 ; trainer + db SPRITE_BIKER, $d + 4, $e + 4, $ff, $d3, $42, CUE_BALL + $C8, $1 ; trainer + db SPRITE_BIKER, $c + 4, $b + 4, $ff, $d1, $43, CUE_BALL + $C8, $2 ; trainer + db SPRITE_BIKER, $b + 4, $9 + 4, $ff, $d2, $44, BIKER + $C8, $6 ; trainer + db SPRITE_BIKER, $a + 4, $6 + 4, $ff, $d3, $45, CUE_BALL + $C8, $3 ; trainer + db SPRITE_BIKER, $c + 4, $3 + 4, $ff, $d3, $46, BIKER + $C8, $7 ; trainer db SPRITE_SNORLAX, $a + 4, $1a + 4, $ff, $d0, $7 ; person ; warp-to @@ -18793,8 +23120,6 @@ Route16Object: ; 0x58afc (size=136) EVENT_DISP $14, $5, $18 ; ROUTE_16_GATE_1F EVENT_DISP $14, $5, $7 ; ROUTE_16_HOUSE -INCBIN "baserom.gbc",$58b84,$0 - Route16Blocks: ; 180 INCBIN "maps/route16.blk" @@ -18836,9 +23161,9 @@ Route18Object: ; 0x58c5a (size=66) db $5, $21, $5 ; Route18Text5 db $3 ; people - db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $24 + 4, $ff, $d3, $41, $df, $8 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $28 + 4, $ff, $d2, $42, $df, $9 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $2a + 4, $ff, $d2, $43, $df, $a ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $24 + 4, $ff, $d3, $41, BIRD_KEEPER + $C8, $8 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $f + 4, $28 + 4, $ff, $d2, $42, BIRD_KEEPER + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $d + 4, $2a + 4, $ff, $d2, $43, BIRD_KEEPER + $C8, $a ; trainer ; warp-to EVENT_DISP $19, $8, $21 ; ROUTE_18_GATE_1F @@ -18846,12 +23171,428 @@ Route18Object: ; 0x58c5a (size=66) EVENT_DISP $19, $8, $28 ; ROUTE_18_GATE_1F EVENT_DISP $19, $9, $28 ; ROUTE_18_GATE_1F -INCBIN "baserom.gbc",$58c9c,$0 - Route18Blocks: ; 225 INCBIN "maps/route18.blk" -INCBIN "baserom.gbc",$58d7d,$de7 +INCBIN "baserom.gbc",$58d7d,$59139 - $58d7d +Route6Text2: ; 0x59139 + db $08 ; asm + ld hl, $50e3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59143,$5914d - $59143 +Route6Text3: ; 0x5914d + db $08 ; asm + ld hl, $50ef + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59157,$59166 - $59157 +Route6Text4: ; 0x59166 + db $08 ; asm + ld hl, $50fb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59170,$5917f - $59170 +Route6Text5: ; 0x5917f + db $08 ; asm + ld hl, $5107 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59189,$59198 - $59189 +Route6Text6: ; 0x59198 + db $08 ; asm + ld hl, $5113 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$591a2,$f + +Route6Text7: ; 0x591b1 + TX_FAR _Route6Text7 + db $50 + +INCBIN "baserom.gbc",$591b6,$59269 - $591b6 +Route8Text2: ; 0x59269 + db $08 ; asm + ld hl, $51ef + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59273,$59282 - $59273 +Route8Text3: ; 0x59282 + db $08 ; asm + ld hl, $51fb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5928c,$5929b - $5928c +Route8Text4: ; 0x5929b + db $08 ; asm + ld hl, $5207 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592a5,$592b4 - $592a5 +Route8Text5: ; 0x592b4 + db $08 ; asm + ld hl, $5213 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592be,$592cd - $592be +Route8Text6: ; 0x592cd + db $08 ; asm + ld hl, $521f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592d7,$592e6 - $592d7 +Route8Text7: ; 0x592e6 + db $08 ; asm + ld hl, $522b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$592f0,$592ff - $592f0 +Route8Text8: ; 0x592ff + db $08 ; asm + ld hl, $5237 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59309,$59318 - $59309 +Route8Text9: ; 0x59318 + db $08 ; asm + ld hl, $5243 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59322,$f + +Route8Text10: ; 0x59331 + TX_FAR _Route8Text10 + db $50 + +INCBIN "baserom.gbc",$59336,$593ac - $59336 +Route10Text1: ; 0x593ac + db $08 ; asm + ld hl, $5363 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$593b6,$593c5 - $593b6 +Route10Text2: ; 0x593c5 + db $08 ; asm + ld hl, $536f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$593cf,$593de - $593cf +Route10Text3: ; 0x593de + db $08 ; asm + ld hl, $537b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$593e8,$593f7 - $593e8 +Route10Text4: ; 0x593f7 + db $08 ; asm + ld hl, $5387 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59401,$59410 - $59401 +Route10Text5: ; 0x59410 + db $08 ; asm + ld hl, $5393 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5941a,$59429 - $5941a +Route10Text6: ; 0x59429 + db $08 ; asm + ld hl, $539f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59433,$f + +Route10Text9: ; 0x59442 +Route10Text7: ; 0x59442 + TX_FAR _Route10Text7 ; _Route10Text9 + db $50 + +Route10Text10: ; 0x59447 + TX_FAR _Route10Text10 + db $50 + +INCBIN "baserom.gbc",$5944c,$5950d - $5944c +Route11Text2: ; 0x5950d + db $08 ; asm + ld hl, $5487 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59517,$59526 - $59517 +Route11Text3: ; 0x59526 + db $08 ; asm + ld hl, $5493 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59530,$5953f - $59530 +Route11Text4: ; 0x5953f + db $08 ; asm + ld hl, $549f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59549,$59558 - $59549 +Route11Text5: ; 0x59558 + db $08 ; asm + ld hl, $54ab + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59562,$59571 - $59562 +Route11Text6: ; 0x59571 + db $08 ; asm + ld hl, $54b7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5957b,$5958a - $5957b +Route11Text7: ; 0x5958a + db $08 ; asm + ld hl, $54c3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59594,$595a3 - $59594 +Route11Text8: ; 0x595a3 + db $08 ; asm + ld hl, $54cf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$595ad,$595bc - $595ad +Route11Text9: ; 0x595bc + db $08 ; asm + ld hl, $54db + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$595c6,$595d5 - $595c6 +Route11Text10: ; 0x595d5 + db $08 ; asm + ld hl, $54e7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$595df,$f + +Route11Text11: ; 0x595ee + TX_FAR _Route11Text11 + db $50 + +INCBIN "baserom.gbc",$595f3,$596e6 - $595f3 + +Route12Text1: ; 0x596e6 + TX_FAR _Route12Text1 + db $50 + +INCBIN "baserom.gbc",$596eb,$596f5 - $596eb +Route12Text2: ; 0x596f5 + db $08 ; asm + ld hl, $5691 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$596ff,$5970e - $596ff +Route12Text3: ; 0x5970e + db $08 ; asm + ld hl, $569d + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59718,$59727 - $59718 +Route12Text4: ; 0x59727 + db $08 ; asm + ld hl, $56a9 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59731,$59740 - $59731 +Route12Text5: ; 0x59740 + db $08 ; asm + ld hl, $56b5 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5974a,$59759 - $5974a +Route12Text6: ; 0x59759 + db $08 ; asm + ld hl, $56c1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59763,$59772 - $59763 +Route12Text7: ; 0x59772 + db $08 ; asm + ld hl, $56cd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5977c,$5978b - $5977c +Route12Text8: ; 0x5978b + db $08 ; asm + ld hl, $56d9 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59795,$f + +Route12Text11: ; 0x597a4 + TX_FAR _Route12Text11 + db $50 + +Route12Text12: ; 0x597a9 + TX_FAR _Route12Text12 + db $50 + +INCBIN "baserom.gbc",$597ae,$59858 - $597ae +Route15Text1: ; 0x59858 + db $08 ; asm + ld hl, $57df + jr .asm_31ef8 ; 0x5985c + ld [$eb21], sp + ld d, a + jr .asm_31ef8 ; 0x59862 + ld [$f721], sp + ld d, a + jr .asm_31ef8 ; 0x59868 + ld [$0321], sp + ld e, b + jr .asm_31ef8 ; 0x5986e + ld [$0f21], sp + ld e, b + jr .asm_31ef8 ; 0x59874 + ld [$1b21], sp + ld e, b + jr .asm_31ef8 ; 0x5987a + ld [$2721], sp + ld e, b + jr .asm_31ef8 ; 0x59880 + ld [$3321], sp + ld e, b + jr .asm_31ef8 ; 0x59886 + ld [$3f21], sp + ld e, b + jr .asm_31ef8 ; 0x5988c + ld [$4b21], sp + ld e, b +.asm_31ef8 ; 0x59892 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59898,$96 + +Route15Text12: ; 0x5992e + TX_FAR _Route15Text12 + db $50 + +INCBIN "baserom.gbc",$59933,$59a18 - $59933 +Route16Text1: ; 0x59a18 + db $08 ; asm + ld hl, $59cf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a22,$59a31 - $59a22 +Route16Text2: ; 0x59a31 + db $08 ; asm + ld hl, $59db + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a3b,$59a4a - $59a3b +Route16Text3: ; 0x59a4a + db $08 ; asm + ld hl, $59e7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a54,$59a63 - $59a54 +Route16Text4: ; 0x59a63 + db $08 ; asm + ld hl, $59f3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a6d,$59a7c - $59a6d +Route16Text5: ; 0x59a7c + db $08 ; asm + ld hl, $59ff + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a86,$59a95 - $59a86 +Route16Text6: ; 0x59a95 + db $08 ; asm + ld hl, $5a0b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59a9f,$f + +Route16Text7: ; 0x59aae + TX_FAR _Route16Text7 + db $50 + +INCBIN "baserom.gbc",$59ab3,$59abd - $59ab3 + +Route16Text8: ; 0x59abd + TX_FAR _Route16Text8 + db $50 + +Route16Text9: ; 0x59ac2 + TX_FAR _Route16Text9 + db $50 + +INCBIN "baserom.gbc",$59ac7,$59b0f - $59ac7 +Route18Text1: ; 0x59b0f + db $08 ; asm + ld hl, $5aea + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59b19,$59b28 - $59b19 +Route18Text2: ; 0x59b28 + db $08 ; asm + ld hl, $5af6 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59b32,$59b41 - $59b32 +Route18Text3: ; 0x59b41 + db $08 ; asm + ld hl, $5b02 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59b4b,$f + +Route18Text4: ; 0x59b5a + TX_FAR _Route18Text4 + db $50 + +Route18Text5: ; 0x59b5f + TX_FAR _Route18Text5 + db $50 FanClub_h: ; 0x59b64 to 0x59b70 (12 bytes) (id=90) db $10 ; tileset @@ -18861,7 +23602,90 @@ FanClub_h: ; 0x59b64 to 0x59b70 (12 bytes) (id=90) dw $5c97 ; objects -INCBIN "baserom.gbc",$59b70,$59c97 - $59b70 +INCBIN "baserom.gbc",$59b70,$59b94 - $59b70 +FanClubText1: ; 0x59b94 + db $08 ; asm + ld a, [$d771] + bit 7, a + jr nz, .asm_67b22 ; 0x59b9a + ld hl, $5bb7 + call PrintText + ld hl, $d771 + set 6, [hl] + jr .asm_64f01 ; 0x59ba7 +.asm_67b22 ; 0x59ba9 + ld hl, $5bbc + call PrintText + ld hl, $d771 + res 7, [hl] +.asm_64f01 ; 0x59bb4 + jp $24d7 + +INCBIN "baserom.gbc",$59bb7,$59bc1 - $59bb7 +FanClubText2: ; 0x59bc1 + db $08 ; asm + ld a, [$d771] + bit 6, a + jr nz, .asm_5cd59 ; 0x59bc7 + ld hl, $5be4 + call PrintText + ld hl, $d771 + set 7, [hl] + jr .asm_59625 ; 0x59bd4 +.asm_5cd59 ; 0x59bd6 + ld hl, $5be9 + call PrintText + ld hl, $d771 + res 6, [hl] +.asm_59625 ; 0x59be1 + jp $24d7 + +INCBIN "baserom.gbc",$59be4,$59c05 - $59be4 +FanClubText4: ; 0x59c05 + db $08 ; asm + ld hl, $5c17 + call PrintText + ld a,SEEL + call $13d0 + call $3748 + jp $24d7 + +INCBIN "baserom.gbc",$59c17,$59c1c - $59c17 +FanClubText5: ; 0x59c1c + db $08 ; asm + call $5b73 + jr nz, .asm_38bb3 ; 0x59c20 + ld hl, $5c65 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_2c8d7 ; 0x59c2f + ld hl, $5c6a + call PrintText + ld bc,(BIKE_VOUCHER << 8) | 1 + call $3e2e + jr nc, .asm_867d4 ; 0x59c3d + ld hl, $5c6f + call PrintText + ld hl, $d771 + set 1, [hl] + jr .asm_d3c26 ; 0x59c4a +.asm_867d4 ; 0x59c4c + ld hl, $5c83 + call PrintText + jr .asm_d3c26 ; 0x59c52 +.asm_2c8d7 ; 0x59c54 + ld hl, $5c79 + call PrintText + jr .asm_d3c26 ; 0x59c5a +.asm_38bb3 ; 0x59c5c + ld hl, $5c7e + call PrintText +.asm_d3c26 ; 0x59c62 + jp $24d7 + +INCBIN "baserom.gbc",$59c65,$32 FanClubObject: ; 0x59c97 (size=62) db $d ; border tile @@ -18885,7 +23709,6 @@ FanClubObject: ; 0x59c97 (size=62) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - FanClubBlocks: ; 16 INCBIN "maps/fanclub.blk" @@ -18897,7 +23720,54 @@ SilphCo2_h: ; 0x59ce5 to 0x59cf1 (12 bytes) (id=207) dw $5e66 ; objects -INCBIN "baserom.gbc",$59cf1,$59e66 - $59cf1 +INCBIN "baserom.gbc",$59cf1,$59dc1 - $59cf1 +SilphCo2Text1: ; 0x59dc1 + db $08 ; asm + ld a, [$d826] + bit 7, a + jr nz, .asm_b8a0d ; 0x59dc7 + ld hl, $5ded + call PrintText + ld bc,(TM_36 << 8) | 1 + call $3e2e + ld hl, $5dfd + jr nc, .asm_2c1e0 ; 0x59dd8 + ld hl, $d826 + set 7, [hl] + ld hl, $5df2 + jr .asm_2c1e0 ; 0x59de2 +.asm_b8a0d ; 0x59de4 + ld hl, $5df8 +.asm_2c1e0 ; 0x59de7 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$59ded,$59e02 - $59ded +SilphCo2Text2: ; 0x59e02 + db $08 ; asm + ld hl, $5d90 + call LoadTrainerHeader + jp $24d7 + +SilphCo2Text3: ; 0x59e0c + db $08 ; asm + ld hl, $5d9c + call LoadTrainerHeader + jp $24d7 + +SilphCo2Text4: ; 0x59e16 + db $08 ; asm + ld hl, $5da8 + call LoadTrainerHeader + jp $24d7 + +SilphCo2Text5: ; 0x59e20 + db $08 ; asm + ld hl, $5db4 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$59e2a,$3c SilphCo2Object: ; 0x59e66 (size=98) db $2e ; border tile @@ -18914,10 +23784,10 @@ SilphCo2Object: ; 0x59e66 (size=98) db $5 ; people db SPRITE_ERIKA, $1 + 4, $a + 4, $ff, $d1, $1 ; person - db SPRITE_OAK_AIDE, $c + 4, $5 + 4, $ff, $d0, $42, $e4, $2 ; trainer - db SPRITE_OAK_AIDE, $d + 4, $18 + 4, $ff, $d2, $43, $e4, $3 ; trainer - db SPRITE_ROCKET, $b + 4, $10 + 4, $ff, $d1, $44, $e6, $17 ; trainer - db SPRITE_ROCKET, $7 + 4, $18 + 4, $ff, $d1, $45, $e6, $18 ; trainer + db SPRITE_OAK_AIDE, $c + 4, $5 + 4, $ff, $d0, $42, SCIENTIST + $C8, $2 ; trainer + db SPRITE_OAK_AIDE, $d + 4, $18 + 4, $ff, $d2, $43, SCIENTIST + $C8, $3 ; trainer + db SPRITE_ROCKET, $b + 4, $10 + 4, $ff, $d1, $44, ROCKET + $C8, $17 ; trainer + db SPRITE_ROCKET, $7 + 4, $18 + 4, $ff, $d1, $45, ROCKET + $C8, $18 ; trainer ; warp-to EVENT_DISP $f, $0, $18 ; SILPH_CO_1F @@ -18928,7 +23798,6 @@ SilphCo2Object: ; 0x59e66 (size=98) EVENT_DISP $f, $f, $1b ; SILPH_CO_8F EVENT_DISP $f, $f, $9 ; SILPH_CO_6F - SilphCo2Blocks: ; 135 INCBIN "maps/silphco2.blk" @@ -18940,7 +23809,33 @@ SilphCo3_h: ; 0x59f4f to 0x59f5b (12 bytes) (id=208) dw $6035 ; objects -INCBIN "baserom.gbc",$59f5b,$5a035 - $59f5b +INCBIN "baserom.gbc",$59f5b,$59fe5 - $59f5b +SilphCo3Text1: ; 0x59fe5 + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, $5ffe + jr nz, .asm_8c56f ; 0x59fee + ld hl, $5ff9 +.asm_8c56f ; 0x59ff3 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$59ff9,$5a003 - $59ff9 +SilphCo3Text2: ; 0x5a003 + db $08 ; asm + ld hl, $5fcc + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5a00d,$5a01c - $5a00d +SilphCo3Text3: ; 0x5a01c + db $08 ; asm + ld hl, $5fd8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5a026,$f SilphCo3Object: ; 0x5a035 (size=113) db $2e ; border tile @@ -18960,9 +23855,9 @@ SilphCo3Object: ; 0x5a035 (size=113) db $4 ; people db SPRITE_LAPRAS_GIVER, $8 + 4, $18 + 4, $ff, $ff, $1 ; person - db SPRITE_ROCKET, $7 + 4, $14 + 4, $ff, $d2, $42, $e6, $19 ; trainer - db SPRITE_OAK_AIDE, $9 + 4, $7 + 4, $ff, $d0, $43, $e4, $4 ; trainer - db SPRITE_BALL, $5 + 4, $8 + 4, $ff, $ff, $84, $12 ; item + db SPRITE_ROCKET, $7 + 4, $14 + 4, $ff, $d2, $42, ROCKET + $C8, $19 ; trainer + db SPRITE_OAK_AIDE, $9 + 4, $7 + 4, $ff, $d0, $43, SCIENTIST + $C8, $4 ; trainer + db SPRITE_BALL, $5 + 4, $8 + 4, $ff, $ff, $84, HYPER_POTION ; item ; warp-to EVENT_DISP $f, $0, $1a ; SILPH_CO_2F @@ -18976,7 +23871,6 @@ SilphCo3Object: ; 0x5a035 (size=113) EVENT_DISP $f, $b, $b ; SILPH_CO_7F EVENT_DISP $f, $f, $1b ; SILPH_CO_3F - SilphCo3Blocks: ; 135 INCBIN "maps/silphco3.blk" @@ -18988,7 +23882,31 @@ SilphCo10_h: ; 0x5a12d to 0x5a139 (12 bytes) (id=234) dw $61fb ; objects -INCBIN "baserom.gbc",$5a139,$5a1fb - $5a139 +INCBIN "baserom.gbc",$5a139,$5a1ab - $5a139 +SilphCo10Text1: ; 0x5a1ab + db $08 ; asm + ld hl, $6192 + call LoadTrainerHeader + jp $24d7 + +SilphCo10Text2: ; 0x5a1b5 + db $08 ; asm + ld hl, $619e + call LoadTrainerHeader + jp $24d7 + +SilphCo10Text3: ; 0x5a1bf + db $08 ; asm + ld a, [$d838] + bit 7, a + ld hl, $61d8 + jr nz, .asm_cf85f ; 0x5a1c8 + ld hl, $61d3 +.asm_cf85f ; 0x5a1cd + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5a1d3,$28 SilphCo10Object: ; 0x5a1fb (size=95) db $2e ; border tile @@ -19003,12 +23921,12 @@ SilphCo10Object: ; 0x5a1fb (size=95) db $0 ; signs db $6 ; people - db SPRITE_ROCKET, $9 + 4, $1 + 4, $ff, $d3, $41, $e6, $27 ; trainer - db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d2, $42, $e4, $b ; trainer + db SPRITE_ROCKET, $9 + 4, $1 + 4, $ff, $d3, $41, ROCKET + $C8, $27 ; trainer + db SPRITE_OAK_AIDE, $2 + 4, $a + 4, $ff, $d2, $42, SCIENTIST + $C8, $b ; trainer db SPRITE_ERIKA, $f + 4, $9 + 4, $fe, $0, $3 ; person - db SPRITE_BALL, $c + 4, $2 + 4, $ff, $ff, $84, $e2 ; item - db SPRITE_BALL, $e + 4, $4 + 4, $ff, $ff, $85, $28 ; item - db SPRITE_BALL, $b + 4, $5 + 4, $ff, $ff, $86, $26 ; item + db SPRITE_BALL, $c + 4, $2 + 4, $ff, $ff, $84, TM_26 ; item + db SPRITE_BALL, $e + 4, $4 + 4, $ff, $ff, $85, RARE_CANDY ; item + db SPRITE_BALL, $b + 4, $5 + 4, $ff, $ff, $86, CARBOS ; item ; warp-to EVENT_DISP $8, $0, $8 ; SILPH_CO_9F @@ -19018,7 +23936,6 @@ SilphCo10Object: ; 0x5a1fb (size=95) EVENT_DISP $8, $f, $d ; SILPH_CO_4F EVENT_DISP $8, $7, $d ; SILPH_CO_4F - SilphCo10Blocks: ; 72 INCBIN "maps/silphco10.blk" @@ -19030,7 +23947,14 @@ Lance_h: ; 0x5a2a2 to 0x5a2ae (12 bytes) (id=113) dw $63c5 ; objects -INCBIN "baserom.gbc",$5a2ae,$5a3c5 - $5a2ae +INCBIN "baserom.gbc",$5a2ae,$5a3a4 - $5a2ae +LanceText1: ; 0x5a3a4 + db $08 ; asm + ld hl, $6397 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5a3ae,$17 LanceObject: ; 0x5a3c5 (size=36) db $3 ; border tile @@ -19042,14 +23966,13 @@ LanceObject: ; 0x5a3c5 (size=36) db $0 ; signs db $1 ; people - db SPRITE_LANCE, $1 + 4, $6 + 4, $ff, $d0, $41, $f7, $1 ; trainer + db SPRITE_LANCE, $1 + 4, $6 + 4, $ff, $d0, $41, LANCE + $C8, $1 ; trainer ; warp-to EVENT_DISP $d, $10, $18 ; AGATHAS_ROOM EVENT_DISP $d, $0, $5 ; CHAMPIONS_ROOM EVENT_DISP $d, $0, $6 ; CHAMPIONS_ROOM - LanceBlocks: ; 169 INCBIN "maps/lance.blk" @@ -19061,7 +23984,14 @@ HallofFameRoom_h: ; 0x5a492 to 0x5a49e (12 bytes) (id=118) dw $6571 ; objects -INCBIN "baserom.gbc",$5a49e,$5a571 - $5a49e +INCBIN "baserom.gbc",$5a49e,$5a56a - $5a49e +HallofFameRoomTexts: ; 0x5a56a + dw HallofFameRoomText1 + +HallofFameRoomText1: ; 0x5a56c + TX_FAR _HallofFameRoomText1 + db $50 + HallofFameRoomObject: ; 0x5a571 (size=26) db $3 ; border tile @@ -19078,7 +24008,6 @@ HallofFameRoomObject: ; 0x5a571 (size=26) EVENT_DISP $5, $7, $4 ; CHAMPIONS_ROOM EVENT_DISP $5, $7, $5 ; CHAMPIONS_ROOM - HallofFameRoomBlocks: ; 20 INCBIN "maps/halloffameroom.blk" @@ -19104,8 +24033,6 @@ PewterPokecenterBlocks: ; 28 UndergroundTunnelEntranceRoute5Blocks: ; 16 INCBIN "maps/undergroundtunnelentranceroute5.blk" -INCBIN "baserom.gbc",$5c090,$0 - ViridianForestexitBlocks: ; 20 INCBIN "maps/viridianforestexit.blk" @@ -19163,7 +24090,56 @@ MuseumF1_h: ; 0x5c0eb to 0x5c0f7 (12 bytes) (id=52) dw $42c1 ; objects -INCBIN "baserom.gbc",$5c0f7,$5c2c1 - $5c0f7 +INCBIN "baserom.gbc",$5c0f7,$5c247 - $5c0f7 +MuseumF1Text2: ; 0x5c247 + db $08 ; asm + ld hl, $4251 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c251,$5c256 - $5c251 +MuseumF1Text3: ; 0x5c256 + db $08 ; asm + ld a, [$d754] + bit 1, a + jr nz, .asm_16599 ; 0x5c25c + ld hl, $428e + call PrintText + ld bc,(OLD_AMBER << 8) | 1 + call $3e2e + jr nc, .asm_91ebf ; 0x5c26a + ld hl, $d754 + set 1, [hl] + ld a, $34 + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $4293 + jr .asm_52e0f ; 0x5c27e +.asm_91ebf ; 0x5c280 + ld hl, $429e + jr .asm_52e0f ; 0x5c283 +.asm_16599 ; 0x5c285 + ld hl, $4299 +.asm_52e0f ; 0x5c288 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c28e,$5c2a3 - $5c28e +MuseumF1Text4: ; 0x5c2a3 + db $08 ; asm + ld hl, $42ad + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c2ad,$5c2b2 - $5c2ad +MuseumF1Text5: ; 0x5c2b2 + db $08 ; asm + ld hl, $42bc + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5c2bc,$5 MuseumF1Object: ; 0x5c2c1 (size=74) db $a ; border tile @@ -19190,7 +24166,6 @@ MuseumF1Object: ; 0x5c2c1 (size=74) EVENT_DISP $a, $7, $11 EVENT_DISP $a, $7, $7 ; MUSEUM_2F - MuseumF2_h: ; 0x5c30b to 0x5c317 (12 bytes) (id=53) db $0a ; tileset db $04, $07 ; dimensions (y, x) @@ -19199,7 +24174,38 @@ MuseumF2_h: ; 0x5c30b to 0x5c317 (12 bytes) (id=53) dw $434b ; objects -INCBIN "baserom.gbc",$5c317,$5c34b - $5c317 +INCBIN "baserom.gbc",$5c317,$5c31a - $5c317 +MuseumF2Texts: ; 0x5c31a + dw MuseumF2Text1, MuseumF2Text2, MuseumF2Text3, MuseumF2Text4, MuseumF2Text5, MuseumF2Text6, MuseumF2Text7 + +MuseumF2Text1: ; 0x5c328 + TX_FAR _MuseumF2Text1 + db $50 + +MuseumF2Text2: ; 0x5c32d + TX_FAR _MuseumF2Text2 + db $50 + +MuseumF2Text3: ; 0x5c332 + TX_FAR _MuseumF2Text3 + db $50 + +MuseumF2Text4: ; 0x5c337 + TX_FAR _MuseumF2Text4 + db $50 + +MuseumF2Text5: ; 0x5c33c + TX_FAR _MuseumF2Text5 + db $50 + +MuseumF2Text6: ; 0x5c341 + TX_FAR _MuseumF2Text6 + db $50 + +MuseumF2Text7: ; 0x5c346 + TX_FAR _MuseumF2Text7 + db $50 + MuseumF2Object: ; 0x5c34b (size=48) db $a ; border tile @@ -19220,7 +24226,6 @@ MuseumF2Object: ; 0x5c34b (size=48) ; warp-to EVENT_DISP $7, $7, $7 ; MUSEUM_1F - PewterGym_h: ; 0x5c37b to 0x5c387 (12 bytes) (id=54) db $07 ; tileset db $07, $05 ; dimensions (y, x) @@ -19229,7 +24234,80 @@ PewterGym_h: ; 0x5c37b to 0x5c387 (12 bytes) (id=54) dw $452e ; objects -INCBIN "baserom.gbc",$5c387,$5c52e - $5c387 +INCBIN "baserom.gbc",$5c387,$5c44e - $5c387 +PewterGymText1: ; 0x5c44e + db $08 ; asm + ld a, [$d755] + bit 7, a + jr z, .asm_4a735 ; 0x5c454 + bit 6, a + jr nz, .asm_ff7d0 ; 0x5c458 + call z, $43df + call $30b6 + jr .asm_e0ffb ; 0x5c460 +.asm_ff7d0 ; 0x5c462 + ld hl, $44a3 + call PrintText + jr .asm_e0ffb ; 0x5c468 +.asm_4a735 ; 0x5c46a + ld hl, $449e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $44bc + ld de, $44bc + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $1 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d5fc], a + ld [$da39], a +.asm_e0ffb ; 0x5c49b + jp $24d7 + +INCBIN "baserom.gbc",$5c49e,$5c4c6 - $5c49e +PewterGymText2: ; 0x5c4c6 + db $08 ; asm + ld hl, $4441 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5c4d0,$5c4df - $5c4d0 +PewterGymText3: ; 0x5c4df + db $08 ; asm + ld a, [$d72a] + bit 0, a + jr nz, .asm_71369 ; 0x5c4e5 + ld hl, $4515 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_6123a ; 0x5c4f4 + ld hl, $451a + call PrintText + jr .asm_d1578 ; 0x5c4fc +.asm_6123a ; 0x5c4fe + ld hl, $4524 + call PrintText +.asm_d1578 ; 0x5c504 + ld hl, $451f + call PrintText + jr .asm_07013 ; 0x5c50a +.asm_71369 ; 0x5c50c + ld hl, $4529 + call PrintText +.asm_07013 ; 0x5c512 + jp $24d7 + +INCBIN "baserom.gbc",$5c515,$19 PewterGymObject: ; 0x5c52e (size=42) db $3 ; border tile @@ -19240,15 +24318,14 @@ PewterGymObject: ; 0x5c52e (size=42) db $0 ; signs db $3 ; people - db SPRITE_BLACK_HAIR_BOY_2, $1 + 4, $4 + 4, $ff, $d0, $41, $ea, $1 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $3 + 4, $ff, $d3, $42, $cd, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $1 + 4, $4 + 4, $ff, $d0, $41, BROCK + $C8, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $6 + 4, $3 + 4, $ff, $d3, $42, JR__TRAINER_M + $C8, $1 ; trainer db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $3 ; person ; warp-to EVENT_DISP $5, $d, $4 EVENT_DISP $5, $d, $5 - PewterGymBlocks: ; 35 INCBIN "maps/pewtergym.blk" @@ -19260,7 +24337,21 @@ PewterPokecenter_h: ; 0x5c57b to 0x5c587 (12 bytes) (id=58) dw $460d ; objects -INCBIN "baserom.gbc",$5c587,$5c60d - $5c587 +INCBIN "baserom.gbc",$5c587,$5c595 - $5c587 + +;XXX wtf? maybe a part of the text script? +db $ff +PewterPokecenterText1: ; 0x5c595 + TX_FAR _PewterPokecenterText1 + +INCBIN "baserom.gbc",$5c59a,$5c603 - $5c59a + +PewterPokecenterText4: ; broken TX_FAR to _PewterPokecenterText4 + db $17, $44, $47, $26 + db $50 + +;XXX wtf? +db $30, $38, $34, $3c, $f6 PewterPokecenterObject: ; 0x5c60d (size=44) db $0 ; border tile @@ -19280,7 +24371,6 @@ PewterPokecenterObject: ; 0x5c60d (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - CeruleanPokecenter_h: ; 0x5c639 to 0x5c645 (12 bytes) (id=64) db $06 ; tileset db $04, $07 ; dimensions (y, x) @@ -19289,7 +24379,14 @@ CeruleanPokecenter_h: ; 0x5c639 to 0x5c645 (12 bytes) (id=64) dw $465f ; objects -INCBIN "baserom.gbc",$5c645,$5c65f - $5c645 +INCBIN "baserom.gbc",$5c645,$5c655 - $5c645 + +CeruleanPokecenterText1: ; 0x5c654 + TX_FAR _CeruleanPokecenterText1 + db $50 + +INCBIN "baserom.gbc",$5c65a,$5 + CeruleanPokecenterObject: ; 0x5c65f (size=44) db $0 ; border tile @@ -19309,7 +24406,6 @@ CeruleanPokecenterObject: ; 0x5c65f (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - CeruleanPokecenterBlocks: ; 28 INCBIN "maps/ceruleanpokecenter.blk" @@ -19321,7 +24417,73 @@ CeruleanGym_h: ; 0x5c6a7 to 0x5c6b3 (12 bytes) (id=65) dw $4834 ; objects -INCBIN "baserom.gbc",$5c6b3,$5c834 - $5c6b3 +INCBIN "baserom.gbc",$5c6b3,$5c771 - $5c6b3 +CeruleanGymText1: ; 0x5c771 + db $08 ; asm + ld a, [$d75e] + bit 7, a + jr z, .asm_10854 ; 0x5c777 + bit 6, a + jr nz, .asm_37a1b ; 0x5c77b + call z, $470d + call $30b6 + jr .asm_95b04 ; 0x5c783 +.asm_37a1b ; 0x5c785 + ld hl, $47c3 + call PrintText + jr .asm_95b04 ; 0x5c78b +.asm_10854 ; 0x5c78d + ld hl, $47be + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $47d8 + ld de, $47d8 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $2 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d5fd], a +.asm_95b04 ; 0x5c7bb + jp $24d7 + +INCBIN "baserom.gbc",$5c7be,$5c7df - $5c7be +CeruleanGymText2: ; 0x5c7df + db $08 ; asm + ld hl, $4758 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5c7e9,$5c7f8 - $5c7e9 +CeruleanGymText3: ; 0x5c7f8 + db $08 ; asm + ld hl, $4764 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5c802,$5c811 - $5c802 +CeruleanGymText4: ; 0x5c811 + db $08 ; asm + ld a, [$d75e] + bit 7, a + jr nz, .asm_f80ce ; 0x5c817 + ld hl, $482a + call PrintText + jr .asm_18a31 ; 0x5c81f +.asm_f80ce ; 0x5c821 + ld hl, $482f + call PrintText +.asm_18a31 ; 0x5c827 + jp $24d7 + +INCBIN "baserom.gbc",$5c82a,$a CeruleanGymObject: ; 0x5c834 (size=50) db $3 ; border tile @@ -19332,16 +24494,15 @@ CeruleanGymObject: ; 0x5c834 (size=50) db $0 ; signs db $4 ; people - db SPRITE_BRUNETTE_GIRL, $2 + 4, $4 + 4, $ff, $d0, $41, $eb, $1 ; trainer - db SPRITE_LASS, $3 + 4, $2 + 4, $ff, $d3, $42, $ce, $1 ; trainer - db SPRITE_SWIMMER, $7 + 4, $8 + 4, $ff, $d2, $43, $d7, $1 ; trainer + db SPRITE_BRUNETTE_GIRL, $2 + 4, $4 + 4, $ff, $d0, $41, MISTY + $C8, $1 ; trainer + db SPRITE_LASS, $3 + 4, $2 + 4, $ff, $d3, $42, JR__TRAINER_F + $C8, $1 ; trainer + db SPRITE_SWIMMER, $7 + 4, $8 + 4, $ff, $d2, $43, SWIMMER + $C8, $1 ; trainer db SPRITE_GYM_HELPER, $a + 4, $7 + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $5, $d, $4 EVENT_DISP $5, $d, $5 - CeruleanGymBlocks: ; 35 INCBIN "maps/ceruleangym.blk" @@ -19353,7 +24514,16 @@ CeruleanMart_h: ; 0x5c889 to 0x5c895 (12 bytes) (id=67) dw $48a8 ; objects -INCBIN "baserom.gbc",$5c895,$5c8a8 - $5c895 +INCBIN "baserom.gbc",$5c895,$5c89e - $5c895 + +CeruleanMartText2: ; 0x5c89e + TX_FAR _CeruleanMartText2 + db $50 + +CeruleanMartText3: ; 0x5c8a3 + TX_FAR _CeruleanMartText3 + db $50 + CeruleanMartObject: ; 0x5c8a8 (size=38) db $0 ; border tile @@ -19372,7 +24542,6 @@ CeruleanMartObject: ; 0x5c8a8 (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - LavenderPokecenter_h: ; 0x5c8ce to 0x5c8da (12 bytes) (id=141) db $06 ; tileset db $04, $07 ; dimensions (y, x) @@ -19381,7 +24550,13 @@ LavenderPokecenter_h: ; 0x5c8ce to 0x5c8da (12 bytes) (id=141) dw $48f4 ; objects -INCBIN "baserom.gbc",$5c8da,$5c8f4 - $5c8da +INCBIN "baserom.gbc",$5c8da,$5c8ea - $5c8da + +LavenderPokecenterText1: ; 0x5c8e9 + TX_FAR _LavenderPokecenterText1 + +INCBIN "baserom.gbc",$5c8ea+4,$5c8f4 - ($5c8ea+4) + LavenderPokecenterObject: ; 0x5c8f4 (size=44) db $0 ; border tile @@ -19401,7 +24576,6 @@ LavenderPokecenterObject: ; 0x5c8f4 (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - LavenderMart_h: ; 0x5c920 to 0x5c92c (12 bytes) (id=150) db $02 ; tileset db $04, $04 ; dimensions (y, x) @@ -19410,7 +24584,27 @@ LavenderMart_h: ; 0x5c920 to 0x5c92c (12 bytes) (id=150) dw $495d ; objects -INCBIN "baserom.gbc",$5c92c,$5c95d - $5c92c +INCBIN "baserom.gbc",$5c92c,$5c935 - $5c92c + +LavenderMartText2: ; 0x5c935 + TX_FAR _LavenderMartText2 + db $50 + +LavenderMartText3: ; 0x5c93a + db $08 ; asm + ld a, [$d7e0] + bit 7, a + jr nz, .asm_c88d4 ; 0x5c940 + ld hl, $4953 + call PrintText + jr .asm_6d225 ; 0x5c948 +.asm_c88d4 ; 0x5c94a + ld hl, $4958 + call PrintText +.asm_6d225 ; 0x5c950 + jp $24d7 + +INCBIN "baserom.gbc",$5c953,$a LavenderMartObject: ; 0x5c95d (size=38) db $0 ; border tile @@ -19429,7 +24623,6 @@ LavenderMartObject: ; 0x5c95d (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - VermilionPokecenter_h: ; 0x5c983 to 0x5c98f (12 bytes) (id=89) db $06 ; tileset db $04, $07 ; dimensions (y, x) @@ -19438,7 +24631,12 @@ VermilionPokecenter_h: ; 0x5c983 to 0x5c98f (12 bytes) (id=89) dw $49a9 ; objects -INCBIN "baserom.gbc",$5c98f,$5c9a9 - $5c98f +INCBIN "baserom.gbc",$5c98f,$5c99e - $5c98f + +VermilionPokecenterText1: ; 0x5c99d + TX_FAR _VermilionPokecenterText1 + +INCBIN "baserom.gbc",$5c9a2,$7 VermilionPokecenterObject: ; 0x5c9a9 (size=44) db $0 ; border tile @@ -19458,7 +24656,6 @@ VermilionPokecenterObject: ; 0x5c9a9 (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - VermilionMart_h: ; 0x5c9d5 to 0x5c9e1 (12 bytes) (id=91) db $02 ; tileset db $04, $04 ; dimensions (y, x) @@ -19486,7 +24683,6 @@ VermilionMartObject: ; 0x5c9f4 (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - VermilionGym_h: ; 0x5ca1a to 0x5ca26 (12 bytes) (id=92) db $07 ; tileset db $09, $05 ; dimensions (y, x) @@ -19495,7 +24691,81 @@ VermilionGym_h: ; 0x5ca1a to 0x5ca26 (12 bytes) (id=92) dw $4bfe ; objects -INCBIN "baserom.gbc",$5ca26,$5cbfe - $5ca26 +INCBIN "baserom.gbc",$5ca26,$5cb1d - $5ca26 +VermilionGymText1: ; 0x5cb1d + db $08 ; asm + ld a, [$d773] + bit 7, a + jr z, .asm_7cc29 ; 0x5cb23 + bit 6, a + jr nz, .asm_41203 ; 0x5cb27 + call z, $4aaa + call $30b6 + jr .asm_23621 ; 0x5cb2f +.asm_41203 ; 0x5cb31 + ld hl, $4b72 + call PrintText + jr .asm_23621 ; 0x5cb37 +.asm_7cc29 ; 0x5cb39 + ld hl, $4b6d + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4b8b + ld de, $4b8b + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $3 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d5fe], a + ld [$da39], a +.asm_23621 ; 0x5cb6a + jp $24d7 + +INCBIN "baserom.gbc",$5cb6d,$5cb90 - $5cb6d +VermilionGymText2: ; 0x5cb90 + db $08 ; asm + ld hl, $4af8 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cb9a,$5cba9 - $5cb9a +VermilionGymText3: ; 0x5cba9 + db $08 ; asm + ld hl, $4b04 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cbb3,$5cbc2 - $5cbb3 +VermilionGymText4: ; 0x5cbc2 + db $08 ; asm + ld hl, $4b10 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cbcc,$5cbdb - $5cbcc +VermilionGymText5: ; 0x5cbdb + db $08 ; asm + ld a, [$d72a] + bit 2, a + jr nz, .asm_13b67 ; 0x5cbe1 + ld hl, $4bf4 + call PrintText + jr .asm_c2b38 ; 0x5cbe9 +.asm_13b67 ; 0x5cbeb + ld hl, $4bf9 + call PrintText +.asm_c2b38 ; 0x5cbf1 + jp $24d7 + +INCBIN "baserom.gbc",$5cbf4,$a VermilionGymObject: ; 0x5cbfe (size=58) db $3 ; border tile @@ -19506,17 +24776,16 @@ VermilionGymObject: ; 0x5cbfe (size=58) db $0 ; signs db $5 ; people - db SPRITE_ROCKER, $1 + 4, $5 + 4, $ff, $d0, $41, $ec, $1 ; trainer - db SPRITE_GENTLEMAN, $6 + 4, $9 + 4, $ff, $d2, $42, $f1, $3 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d2, $43, $dc, $1 ; trainer - db SPRITE_SAILOR, $a + 4, $0 + 4, $ff, $d3, $44, $cc, $8 ; trainer + db SPRITE_ROCKER, $1 + 4, $5 + 4, $ff, $d0, $41, LT__SURGE + $C8, $1 ; trainer + db SPRITE_GENTLEMAN, $6 + 4, $9 + 4, $ff, $d2, $42, GENTLEMAN + $C8, $3 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d2, $43, ROCKER + $C8, $1 ; trainer + db SPRITE_SAILOR, $a + 4, $0 + 4, $ff, $d3, $44, SAILOR + $C8, $8 ; trainer db SPRITE_GYM_HELPER, $e + 4, $4 + 4, $ff, $d0, $5 ; person ; warp-to EVENT_DISP $5, $11, $4 EVENT_DISP $5, $11, $5 - VermilionGymBlocks: ; 45 INCBIN "maps/vermiliongym.blk" @@ -19528,7 +24797,70 @@ CopycatsHouseF2_h: ; 0x5cc65 to 0x5cc71 (12 bytes) (id=176) dw $4d21 ; objects -INCBIN "baserom.gbc",$5cc71,$5cd21 - $5cc71 +INCBIN "baserom.gbc",$5cc71,$5cc82 - $5cc71 +CopycatsHouseF2Text1: ; 0x5cc82 + db $08 ; asm + ld a, [$d7af] + bit 0, a + jr nz, .asm_7ccf3 ; 0x5cc88 + ld a, $1 + ld [$cc3c], a + ld hl, $4cd4 + call PrintText + ld b,POKE_DOLL + call $3493 + jr z, .asm_62ecd ; 0x5cc9a + ld hl, $4cd9 + call PrintText + ld bc,(TM_31 << 8) | 1 + call $3e2e + jr nc, .asm_16690 ; 0x5cca8 + ld hl, $4cde + call PrintText + ld a, $33 + ldh [$db], a + ld b, $5 ; BANK(MyFunction) + ld hl, $7f37 ; MyFunction + call Bankswitch + ld hl, $d7af + set 0, [hl] + jr .asm_62ecd ; 0x5ccc1 +.asm_16690 ; 0x5ccc3 + ld hl, $4cee + call PrintText + jr .asm_62ecd ; 0x5ccc9 +.asm_7ccf3 ; 0x5cccb + ld hl, $4ce9 + call PrintText +.asm_62ecd ; 0x5ccd1 + jp $24d7 + +INCBIN "baserom.gbc",$5ccd4,$20 + +CopycatsHouseF2Text2: ; 0x5ccf4 + TX_FAR _CopycatsHouseF2Text2 + db $50 + +CopycatsHouseF2Text3: ; 0x5ccf9 + TX_FAR _CopycatsHouseF2Text3 + db $50 + +CopycatsHouseF2Text6: ; 0x5ccfe + TX_FAR _CopycatsHouseF2Text6 + db $50 + +CopycatsHouseF2Text7: ; 0x5cd03 + db $08 ; asm + ld a, [$c109] + cp $4 + ld hl, $4d1c + jr nz, .asm_399a4 ; 0x5cd0c + ld hl, $4d17 +.asm_399a4 ; 0x5cd11 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$5cd17,$a CopycatsHouseF2Object: ; 0x5cd21 (size=48) db $a ; border tile @@ -19549,7 +24881,6 @@ CopycatsHouseF2Object: ; 0x5cd21 (size=48) ; warp-to EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_1F - FightingDojo_h: ; 0x5cd51 to 0x5cd5d (12 bytes) (id=177) db $05 ; tileset db $06, $05 ; dimensions (y, x) @@ -19558,7 +24889,133 @@ FightingDojo_h: ; 0x5cd51 to 0x5cd5d (12 bytes) (id=177) dw $4f9b ; objects -INCBIN "baserom.gbc",$5cd5d,$5cf9b - $5cd5d +INCBIN "baserom.gbc",$5cd5d,$5ce44 - $5cd5d +FightingDojoText1: ; 0x5ce44 + db $08 ; asm + ld a, [$d7b1] + bit 0, a + jp nz, $4e7d + bit 1, a + jp nz, $4e85 + ld hl, $4e8e + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4e93 + ld de, $4e93 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $3 + ld [$d642], a + ld [$da39], a + jr .asm_9dba4 ; 0x5ce7b + ld hl, $4e9d + call PrintText + jr .asm_9dba4 ; 0x5ce83 + ld hl, $4e98 + call PrintText +.asm_9dba4 ; 0x5ce8b + jp $24d7 + +INCBIN "baserom.gbc",$5ce8e,$5cea2 - $5ce8e +FightingDojoText2: ; 0x5cea2 + db $08 ; asm + ld hl, $4e13 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5ceac,$5cebb - $5ceac +FightingDojoText3: ; 0x5cebb + db $08 ; asm + ld hl, $4e1f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cec5,$5ced4 - $5cec5 +FightingDojoText4: ; 0x5ced4 + db $08 ; asm + ld hl, $4e2b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cede,$5ceed - $5cede +FightingDojoText5: ; 0x5ceed + db $08 ; asm + ld hl, $4e37 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5cef7,$5cf06 - $5cef7 +FightingDojoText6: ; 0x5cf06 + db $08 ; asm + ld a, [$d7b1] + and $c0 + jr z, .asm_f8e28 ; 0x5cf0c + ld hl, $4f96 + call PrintText + jr .asm_3a2c8 ; 0x5cf14 +.asm_f8e28 ; 0x5cf16 + ld a, $2b + call $349b + ld hl, $4f49 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_3a2c8 ; 0x5cf28 + ld a, [$cf91] + ld b, a + ld c,30 + call GivePokemon + jr nc, .asm_3a2c8 ; 0x5cf33 + ld a, $4a + ld [$cc4d], a + ld a, $11 + call Predef + ld hl, $d7b1 + set 6, [hl] + set 0, [hl] +.asm_3a2c8 ; 0x5cf46 + jp $24d7 + +INCBIN "baserom.gbc",$5cf49,$5cf4e - $5cf49 +FightingDojoText7: ; 0x5cf4e + db $08 ; asm + ld a, [$d7b1] + and $c0 + jr z, .asm_170a9 ; 0x5cf54 + ld hl, $4f96 + call PrintText + jr .asm_f1f47 ; 0x5cf5c +.asm_170a9 ; 0x5cf5e + ld a, $2c + call $349b + ld hl, $4f91 + call PrintText + call $35ec + ld a, [$cc26] + and a + jr nz, .asm_f1f47 ; 0x5cf70 + ld a, [$cf91] + ld b, a + ld c,30 + call GivePokemon + jr nc, .asm_f1f47 ; 0x5cf7b + ld hl, $d7b1 + set 7, [hl] + set 0, [hl] + ld a, $4b + ld [$cc4d], a + ld a, $11 + call Predef +.asm_f1f47 ; 0x5cf8e + jp $24d7 + +INCBIN "baserom.gbc",$5cf91,$a FightingDojoObject: ; 0x5cf9b (size=72) db $3 ; border tile @@ -19569,11 +25026,11 @@ FightingDojoObject: ; 0x5cf9b (size=72) db $0 ; signs db $7 ; people - db SPRITE_HIKER, $3 + 4, $5 + 4, $ff, $d0, $41, $e0, $1 ; trainer - db SPRITE_HIKER, $4 + 4, $3 + 4, $ff, $d3, $42, $e0, $2 ; trainer - db SPRITE_HIKER, $6 + 4, $3 + 4, $ff, $d3, $43, $e0, $3 ; trainer - db SPRITE_HIKER, $5 + 4, $5 + 4, $ff, $d2, $44, $e0, $4 ; trainer - db SPRITE_HIKER, $7 + 4, $5 + 4, $ff, $d2, $45, $e0, $5 ; trainer + db SPRITE_HIKER, $3 + 4, $5 + 4, $ff, $d0, $41, BLACKBELT + $C8, $1 ; trainer + db SPRITE_HIKER, $4 + 4, $3 + 4, $ff, $d3, $42, BLACKBELT + $C8, $2 ; trainer + db SPRITE_HIKER, $6 + 4, $3 + 4, $ff, $d3, $43, BLACKBELT + $C8, $3 ; trainer + db SPRITE_HIKER, $5 + 4, $5 + 4, $ff, $d2, $44, BLACKBELT + $C8, $4 ; trainer + db SPRITE_HIKER, $7 + 4, $5 + 4, $ff, $d2, $45, BLACKBELT + $C8, $5 ; trainer db SPRITE_BALL, $1 + 4, $4 + 4, $ff, $ff, $6 ; person db SPRITE_BALL, $1 + 4, $5 + 4, $ff, $ff, $7 ; person @@ -19581,7 +25038,6 @@ FightingDojoObject: ; 0x5cf9b (size=72) EVENT_DISP $5, $b, $4 EVENT_DISP $5, $b, $5 - FightingDojoBlocks: ; 30 INCBIN "maps/fightingdojo.blk" @@ -19593,7 +25049,99 @@ SaffronGym_h: ; 0x5d001 to 0x5d00d (12 bytes) (id=178) dw $5259 ; objects -INCBIN "baserom.gbc",$5d00d,$5d259 - $5d00d +INCBIN "baserom.gbc",$5d00d,$5d118 - $5d00d +SaffronGymText1: ; 0x5d118 + db $08 ; asm + ld a, [$d7b3] + bit 1, a + jr z, .asm_e3544 ; 0x5d11e + bit 0, a + jr nz, .asm_8d2f6 ; 0x5d122 + call z, $5068 + call $30b6 + jr .asm_34c2c ; 0x5d12a +.asm_8d2f6 ; 0x5d12c + ld hl, $516e + call PrintText + jr .asm_34c2c ; 0x5d132 +.asm_e3544 ; 0x5d134 + ld hl, $5162 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5167 + ld de, $5167 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $6 + ld [$d05c], a + ld a, $3 + ld [$d65c], a +.asm_34c2c ; 0x5d15f + jp $24d7 + +INCBIN "baserom.gbc",$5d162,$5d187 - $5d162 +SaffronGymText2: ; 0x5d187 + db $08 ; asm + ld hl, $50c3 + call LoadTrainerHeader + jp $24d7 + +SaffronGymText3: ; 0x5d191 + db $08 ; asm + ld hl, $50cf + call LoadTrainerHeader + jp $24d7 + +SaffronGymText4: ; 0x5d19b + db $08 ; asm + ld hl, $50db + call LoadTrainerHeader + jp $24d7 + +SaffronGymText5: ; 0x5d1a5 + db $08 ; asm + ld hl, $50e7 + call LoadTrainerHeader + jp $24d7 + +SaffronGymText6: ; 0x5d1af + db $08 ; asm + ld hl, $50f3 + call LoadTrainerHeader + jp $24d7 + +SaffronGymText7: ; 0x5d1b9 + db $08 ; asm + ld hl, $50ff + call LoadTrainerHeader + jp $24d7 + +SaffronGymText8: ; 0x5d1c3 + db $08 ; asm + ld hl, $510b + call LoadTrainerHeader + jp $24d7 + +SaffronGymText9: ; 0x5d1cd + db $08 ; asm + ld a, [$d7b3] + bit 1, a + jr nz, .asm_13f3c ; 0x5d1d3 + ld hl, $51e6 + call PrintText + jr .asm_e9907 ; 0x5d1db +.asm_13f3c ; 0x5d1dd + ld hl, $51eb + call PrintText +.asm_e9907 ; 0x5d1e3 + jp $24d7 + +INCBIN "baserom.gbc",$5d1e6,$73 SaffronGymObject: ; 0x5d259 (size=330) db $2e ; border tile @@ -19634,14 +25182,14 @@ SaffronGymObject: ; 0x5d259 (size=330) db $0 ; signs db $9 ; people - db SPRITE_GIRL, $8 + 4, $9 + 4, $ff, $d0, $41, $f0, $1 ; trainer - db SPRITE_MEDIUM, $1 + 4, $a + 4, $ff, $d0, $42, $f5, $16 ; trainer - db SPRITE_BUG_CATCHER, $1 + 4, $11 + 4, $ff, $d0, $43, $db, $1 ; trainer - db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d0, $44, $f5, $17 ; trainer - db SPRITE_BUG_CATCHER, $7 + 4, $11 + 4, $ff, $d0, $45, $db, $2 ; trainer - db SPRITE_MEDIUM, $d + 4, $3 + 4, $ff, $d0, $46, $f5, $18 ; trainer - db SPRITE_BUG_CATCHER, $d + 4, $11 + 4, $ff, $d0, $47, $db, $3 ; trainer - db SPRITE_BUG_CATCHER, $1 + 4, $3 + 4, $ff, $d0, $48, $db, $4 ; trainer + db SPRITE_GIRL, $8 + 4, $9 + 4, $ff, $d0, $41, SABRINA + $C8, $1 ; trainer + db SPRITE_MEDIUM, $1 + 4, $a + 4, $ff, $d0, $42, CHANNELER + $C8, $16 ; trainer + db SPRITE_BUG_CATCHER, $1 + 4, $11 + 4, $ff, $d0, $43, PSYCHIC_TR + $C8, $1 ; trainer + db SPRITE_MEDIUM, $7 + 4, $3 + 4, $ff, $d0, $44, CHANNELER + $C8, $17 ; trainer + db SPRITE_BUG_CATCHER, $7 + 4, $11 + 4, $ff, $d0, $45, PSYCHIC_TR + $C8, $2 ; trainer + db SPRITE_MEDIUM, $d + 4, $3 + 4, $ff, $d0, $46, CHANNELER + $C8, $18 ; trainer + db SPRITE_BUG_CATCHER, $d + 4, $11 + 4, $ff, $d0, $47, PSYCHIC_TR + $C8, $3 ; trainer + db SPRITE_BUG_CATCHER, $1 + 4, $3 + 4, $ff, $d0, $48, PSYCHIC_TR + $C8, $4 ; trainer db SPRITE_GYM_HELPER, $f + 4, $a + 4, $ff, $d0, $9 ; person ; warp-to @@ -19678,7 +25226,6 @@ SaffronGymObject: ; 0x5d259 (size=330) EVENT_DISP $a, $11, $f ; SAFFRON_GYM EVENT_DISP $a, $11, $13 ; SAFFRON_GYM - SaffronGymBlocks: ; 90 INCBIN "maps/saffrongym.blk" @@ -19690,7 +25237,16 @@ SaffronMart_h: ; 0x5d3fd to 0x5d409 (12 bytes) (id=180) dw $541c ; objects -INCBIN "baserom.gbc",$5d409,$5d41c - $5d409 +INCBIN "baserom.gbc",$5d409,$5d412 - $5d409 + +SaffronMartText2: ; 0x5d412 + TX_FAR _SaffronMartText2 + db $50 + +SaffronMartText3: ; 0x5d417 + TX_FAR _SaffronMartText3 + db $50 + SaffronMartObject: ; 0x5d41c (size=38) db $0 ; border tile @@ -19709,7 +25265,6 @@ SaffronMartObject: ; 0x5d41c (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - SilphCo1_h: ; 0x5d442 to 0x5d44e (12 bytes) (id=181) db $16 ; tileset db $09, $0f ; dimensions (y, x) @@ -19718,7 +25273,14 @@ SilphCo1_h: ; 0x5d442 to 0x5d44e (12 bytes) (id=181) dw $5470 ; objects -INCBIN "baserom.gbc",$5d44e,$5d470 - $5d44e +INCBIN "baserom.gbc",$5d44e,$5d469 - $5d44e +SilphCo1Texts: ; 0x5d469 + dw SilphCo1Text1 + +SilphCo1Text1: ; 0x5d46b + TX_FAR _SilphCo1Text1 + db $50 + SilphCo1Object: ; 0x5d470 (size=50) db $2e ; border tile @@ -19741,7 +25303,6 @@ SilphCo1Object: ; 0x5d470 (size=50) EVENT_DISP $f, $0, $14 ; SILPH_CO_ELEVATOR EVENT_DISP $f, $a, $10 ; SILPH_CO_3F - SilphCo1Blocks: ; 135 INCBIN "maps/silphco1.blk" @@ -19753,7 +25314,14 @@ SaffronPokecenter_h: ; 0x5d529 to 0x5d535 (12 bytes) (id=182) dw $554f ; objects -INCBIN "baserom.gbc",$5d535,$5d54f - $5d535 +INCBIN "baserom.gbc",$5d535,$5d544 - $5d535 + +SaffronPokecenterText2: ; maybe +SaffronPokecenterText1: ; 0x5d543 + TX_FAR _SaffronPokecenterText1 + +INCBIN "baserom.gbc",$5d544+4,$5d54f - ($5d544+4) + SaffronPokecenterObject: ; 0x5d54f (size=44) db $0 ; border tile @@ -19773,7 +25341,6 @@ SaffronPokecenterObject: ; 0x5d54f (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - ViridianForestexit_h: ; 0x5d57b to 0x5d587 (12 bytes) (id=47) db $09 ; tileset db $04, $05 ; dimensions (y, x) @@ -19782,7 +25349,18 @@ ViridianForestexit_h: ; 0x5d57b to 0x5d587 (12 bytes) (id=47) dw $5598 ; objects -INCBIN "baserom.gbc",$5d587,$5d598 - $5d587 +INCBIN "baserom.gbc",$5d587,$5d58a - $5d587 +ViridianForestexitTexts: ; 0x5d58a + dw ViridianForestexitText1, ViridianForestexitText2 + +ViridianForestexitText1: ; 0x5d58e + TX_FAR _ViridianForestexitText1 + db $50 + +ViridianForestexitText2: ; 0x5d593 + TX_FAR _ViridianForestexitText2 + db $50 + ViridianForestexitObject: ; 0x5d598 (size=48) db $a ; border tile @@ -19804,7 +25382,6 @@ ViridianForestexitObject: ; 0x5d598 (size=48) EVENT_DISP $5, $7, $4 ; VIRIDIAN_FOREST EVENT_DISP $5, $7, $5 ; VIRIDIAN_FOREST - Route2Gate_h: ; 0x5d5c8 to 0x5d5d4 (12 bytes) (id=49) db $0c ; tileset db $04, $05 ; dimensions (y, x) @@ -19813,7 +25390,41 @@ Route2Gate_h: ; 0x5d5c8 to 0x5d5d4 (12 bytes) (id=49) dw $5620 ; objects -INCBIN "baserom.gbc",$5d5d4,$5d620 - $5d5d4 +INCBIN "baserom.gbc",$5d5d4,$5d5db - $5d5d4 +Route2GateText1: ; 0x5d5db + db $08 ; asm + ld a, [$d7c2] + bit 0, a + jr nz, .asm_6592c ; 0x5d5e1 + ld a, $a + ldh [$db], a + ld a, $c8 + ldh [$dc], a + ld [$d11e], a + call $2fcf + ld hl, $cd6d + ld de, $cc5b + ld bc, $000d + call CopyData + ld a, $62 + call Predef + ldh a, [$db] + cp $1 + jr nz, .asm_ad646 ; 0x5d606 + ld hl, $d7c2 + set 0, [hl] +.asm_6592c ; 0x5d60d + ld hl, $5616 + call PrintText +.asm_ad646 ; 0x5d613 + jp $24d7 + +INCBIN "baserom.gbc",$5d616,$5 + +Route2GateText2: ; 0x5d61b + TX_FAR _Route2GateText2 + db $50 + Route2GateObject: ; 0x5d620 (size=48) db $a ; border tile @@ -19835,7 +25446,6 @@ Route2GateObject: ; 0x5d620 (size=48) EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 - ViridianForestEntrance_h: ; 0x5d650 to 0x5d65c (12 bytes) (id=50) db $09 ; tileset db $04, $05 ; dimensions (y, x) @@ -19844,7 +25454,18 @@ ViridianForestEntrance_h: ; 0x5d650 to 0x5d65c (12 bytes) (id=50) dw $566d ; objects -INCBIN "baserom.gbc",$5d65c,$5d66d - $5d65c +INCBIN "baserom.gbc",$5d65c,$5d65f - $5d65c +ViridianForestEntranceTexts: ; 0x5d65f + dw ViridianForestEntranceText1, ViridianForestEntranceText2 + +ViridianForestEntranceText1: ; 0x5d663 + TX_FAR _ViridianForestEntranceText1 + db $50 + +ViridianForestEntranceText2: ; 0x5d668 + TX_FAR _ViridianForestEntranceText2 + db $50 + ViridianForestEntranceObject: ; 0x5d66d (size=48) db $a ; border tile @@ -19866,7 +25487,6 @@ ViridianForestEntranceObject: ; 0x5d66d (size=48) EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 - UndergroundTunnelEntranceRoute5_h: ; 0x5d69d to 0x5d6a9 (12 bytes) (id=71) db $0c ; tileset db $04, $04 ; dimensions (y, x) @@ -19875,7 +25495,16 @@ UndergroundTunnelEntranceRoute5_h: ; 0x5d69d to 0x5d6a9 (12 bytes) (id=71) dw $56c1 ; objects -INCBIN "baserom.gbc",$5d6a9,$5d6c1 - $5d6a9 +INCBIN "baserom.gbc",$5d6a9,$5d6b2 - $5d6a9 +UndergroundTunnelEntranceRoute5Text1: ; 0x5d6b2 + db $08 ; asm + ld a, $9 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + ld hl, $56af + ret + UndergroundTunnelEntranceRoute5Object: ; 0x5d6c1 (size=34) db $a ; border tile @@ -19894,7 +25523,6 @@ UndergroundTunnelEntranceRoute5Object: ; 0x5d6c1 (size=34) EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_NS - UndergroundTunnelEntranceRoute6_h: ; 0x5d6e3 to 0x5d6ef (12 bytes) (id=74) db $0c ; tileset db $04, $04 ; dimensions (y, x) @@ -19903,7 +25531,16 @@ UndergroundTunnelEntranceRoute6_h: ; 0x5d6e3 to 0x5d6ef (12 bytes) (id=74) dw $56fe ; objects -INCBIN "baserom.gbc",$5d6ef,$5d6fe - $5d6ef +INCBIN "baserom.gbc",$5d6ef,$5d6f7 - $5d6ef +UndergroundTunnelEntranceRoute6Texts: ; 0x5d6f7 + dw UndergroundTunnelEntranceRoute6Text1 + +;XXX wtf? syntax error on TX_FAR? +UndergroundTunnelEntranceRoute6Text1: ; 0x5d6f9 + db $17, $cb, $40, $23 + ;TX_FAR _UndergroundTunnelEntranceRoute6Text1 ; $cb, $40, $23 + db $50 + UndergroundTunnelEntranceRoute6Object: ; 0x5d6fe (size=34) db $a ; border tile @@ -19922,7 +25559,6 @@ UndergroundTunnelEntranceRoute6Object: ; 0x5d6fe (size=34) EVENT_DISP $4, $7, $4 EVENT_DISP $4, $4, $4 ; UNDERGROUND_PATH_NS - UndergroundPathEntranceRoute7_h: ; 0x5d720 to 0x5d72c (12 bytes) (id=77) db $0c ; tileset db $04, $04 ; dimensions (y, x) @@ -19931,7 +25567,15 @@ UndergroundPathEntranceRoute7_h: ; 0x5d720 to 0x5d72c (12 bytes) (id=77) dw $573b ; objects -INCBIN "baserom.gbc",$5d72c,$5d73b - $5d72c +INCBIN "baserom.gbc",$5d72c,$5d734 - $5d72c +UndergroundPathEntranceRoute7Texts: ; 0x5d734 + dw UndergroundPathEntranceRoute7Text1 + +UndergroundPathEntranceRoute7Text1: ; 0x5d736 + db $17, $ff, $40, $23 + ;TX_FAR _UndergroundPathEntranceRoute7Text1 + db $50 + UndergroundPathEntranceRoute7Object: ; 0x5d73b (size=34) db $a ; border tile @@ -19960,7 +25604,48 @@ SilphCo9_h: ; 0x5d7af to 0x5d7bb (12 bytes) (id=233) dw $593f ; objects -INCBIN "baserom.gbc",$5d7bb,$5d93f - $5d7bb +INCBIN "baserom.gbc",$5d7bb,$5d8b8 - $5d7bb +SilphCo9Text1: ; 0x5d8b8 + db $08 ; asm + ld a, [$d838] + bit 7, a + jr nz, .asm_a14c3 ; 0x5d8be + ld hl, $58e5 + call PrintText + ld a, $7 + call Predef + call $20d8 + call Delay3 + call $20f6 + ld hl, $58ea + call PrintText + jr .asm_b6e28 ; 0x5d8da +.asm_a14c3 ; 0x5d8dc + ld hl, $58ef + call PrintText +.asm_b6e28 ; 0x5d8e2 + jp $24d7 + +INCBIN "baserom.gbc",$5d8e5,$5d8f4 - $5d8e5 +SilphCo9Text2: ; 0x5d8f4 + db $08 ; asm + ld hl, $5893 + call LoadTrainerHeader + jp $24d7 + +SilphCo9Text3: ; 0x5d8fe + db $08 ; asm + ld hl, $589f + call LoadTrainerHeader + jp $24d7 + +SilphCo9Text4: ; 0x5d908 + db $08 ; asm + ld hl, $58ab + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5d912,$2d SilphCo9Object: ; 0x5d93f (size=74) db $2e ; border tile @@ -19975,9 +25660,9 @@ SilphCo9Object: ; 0x5d93f (size=74) db $4 ; people db SPRITE_NURSE, $e + 4, $3 + 4, $ff, $d0, $1 ; person - db SPRITE_ROCKET, $4 + 4, $2 + 4, $ff, $d1, $42, $e6, $25 ; trainer - db SPRITE_OAK_AIDE, $d + 4, $15 + 4, $ff, $d0, $43, $e4, $a ; trainer - db SPRITE_ROCKET, $10 + 4, $d + 4, $ff, $d1, $44, $e6, $26 ; trainer + db SPRITE_ROCKET, $4 + 4, $2 + 4, $ff, $d1, $42, ROCKET + $C8, $25 ; trainer + db SPRITE_OAK_AIDE, $d + 4, $15 + 4, $ff, $d0, $43, SCIENTIST + $C8, $a ; trainer + db SPRITE_ROCKET, $10 + 4, $d + 4, $ff, $d1, $44, ROCKET + $C8, $26 ; trainer ; warp-to EVENT_DISP $d, $0, $e ; SILPH_CO_10F @@ -19986,7 +25671,6 @@ SilphCo9Object: ; 0x5d93f (size=74) EVENT_DISP $d, $3, $9 ; SILPH_CO_3F EVENT_DISP $d, $f, $11 ; SILPH_CO_5F - SilphCo9Blocks: ; 117 INCBIN "maps/silphco9.blk" @@ -19998,7 +25682,20 @@ VictoryRoad1_h: ; 0x5d9fe to 0x5da0a (12 bytes) (id=108) dw $5ab8 ; objects -INCBIN "baserom.gbc",$5da0a,$5dab8 - $5da0a +INCBIN "baserom.gbc",$5da0a,$5da86 - $5da0a +VictoryRoad1Text1: ; 0x5da86 + db $08 ; asm + ld hl, $5a6d + call LoadTrainerHeader + jp $24d7 + +VictoryRoad1Text2: ; 0x5da90 + db $08 ; asm + ld hl, $5a79 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$5da9a,$1e VictoryRoad1Object: ; 0x5dab8 (size=76) db $7d ; border tile @@ -20010,10 +25707,10 @@ VictoryRoad1Object: ; 0x5dab8 (size=76) db $0 ; signs db $7 ; people - db SPRITE_LASS, $5 + 4, $7 + 4, $ff, $d3, $41, $e8, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $3 + 4, $ff, $d0, $42, $e7, $5 ; trainer - db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $83, $f3 ; item - db SPRITE_BALL, $2 + 4, $9 + 4, $ff, $ff, $84, $28 ; item + db SPRITE_LASS, $5 + 4, $7 + 4, $ff, $d3, $41, COOLTRAINER_F + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $2 + 4, $3 + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $5 ; trainer + db SPRITE_BALL, $0 + 4, $b + 4, $ff, $ff, $83, TM_43 ; item + db SPRITE_BALL, $2 + 4, $9 + 4, $ff, $ff, $84, RARE_CANDY ; item db SPRITE_BOULDER, $f + 4, $5 + 4, $ff, $10, $5 ; person db SPRITE_BOULDER, $2 + 4, $e + 4, $ff, $10, $6 ; person db SPRITE_BOULDER, $a + 4, $2 + 4, $ff, $10, $7 ; person @@ -20023,7 +25720,6 @@ VictoryRoad1Object: ; 0x5dab8 (size=76) EVENT_DISP $a, $11, $9 EVENT_DISP $a, $1, $1 ; VICTORY_ROAD_2 - VictoryRoad1Blocks: ; 90 INCBIN "maps/victoryroad1.blk" @@ -20049,7 +25745,30 @@ PokemonTower1_h: ; 0x60420 to 0x6042c (12 bytes) (id=142) dw $4452 ; objects -INCBIN "baserom.gbc",$6042c,$60452 - $6042c +INCBIN "baserom.gbc",$6042c,$6042f - $6042c +PokemonTower1Texts: ; 0x6042f + dw PokemonTower1Text1, PokemonTower1Text2, PokemonTower1Text3, PokemonTower1Text4, PokemonTower1Text5 + +PokemonTower1Text1: ; 0x60439 + TX_FAR _PokemonTower1Text1 + db $50 + +PokemonTower1Text2: ; 0x6043e + TX_FAR _PokemonTower1Text2 + db $50 + +PokemonTower1Text3: ; 0x60443 + TX_FAR _PokemonTower1Text3 + db $50 + +PokemonTower1Text4: ; 0x60448 + TX_FAR _PokemonTower1Text4 + db $50 + +PokemonTower1Text5: ; 0x6044d + TX_FAR _PokemonTower1Text5 + db $50 + PokemonTower1Object: ; 0x60452 (size=58) db $1 ; border tile @@ -20072,7 +25791,6 @@ PokemonTower1Object: ; 0x60452 (size=58) EVENT_DISP $a, $11, $b EVENT_DISP $a, $9, $12 ; POKEMONTOWER_2 - PokemonTower1Blocks: ; 90 INCBIN "maps/pokemontower1.blk" @@ -20084,7 +25802,52 @@ PokemonTower2_h: ; 0x604e6 to 0x604f2 (12 bytes) (id=143) dw $4646 ; objects -INCBIN "baserom.gbc",$604f2,$60646 - $604f2 +INCBIN "baserom.gbc",$604f2,$605df - $604f2 +PokemonTower2Text1: ; 0x605df + db $08 ; asm + ld a, [$d764] + bit 7, a + jr z, .asm_16f24 ; 0x605e5 + ld hl, $463c + call PrintText + jr .asm_41852 ; 0x605ed +.asm_16f24 ; 0x605ef + ld hl, $462d + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4632 + ld de, $4637 + call $3354 + ld a, $f2 + ld [$d059], a + ld a, [$d715] + cp $b1 + jr nz, .asm_0860c ; 0x6060f + ld a, $4 + jr .asm_99cea ; 0x60613 +.asm_0860c ; 0x60615 + cp $99 + jr nz, .asm_b3e6e ; 0x60617 + ld a, $5 + jr .asm_99cea ; 0x6061b +.asm_b3e6e ; 0x6061d + ld a, $6 +.asm_99cea ; 0x6061f + ld [$d05d], a + ld a, $1 + ld [$d62b], a + ld [$da39], a +.asm_41852 ; 0x6062a + jp $24d7 + +INCBIN "baserom.gbc",$6062d,$14 + +PokemonTower2Text2: ; 0x60641 + TX_FAR _PokemonTower2Text2 + db $50 + PokemonTower2Object: ; 0x60646 (size=32) db $1 ; border tile @@ -20102,7 +25865,6 @@ PokemonTower2Object: ; 0x60646 (size=32) EVENT_DISP $a, $9, $3 ; POKEMONTOWER_3 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_1 - PokemonTower2Blocks: ; 90 INCBIN "maps/pokemontower2.blk" @@ -20114,7 +25876,26 @@ PokemonTower3_h: ; 0x606c0 to 0x606cc (12 bytes) (id=144) dw $475d ; objects -INCBIN "baserom.gbc",$606cc,$6075d - $606cc +INCBIN "baserom.gbc",$606cc,$60712 - $606cc +PokemonTower3Text1: ; 0x60712 + db $08 ; asm + ld hl, $46ed + call LoadTrainerHeader + jp $24d7 + +PokemonTower3Text2: ; 0x6071c + db $08 ; asm + ld hl, $46f9 + call LoadTrainerHeader + jp $24d7 + +PokemonTower3Text3: ; 0x60726 + db $08 ; asm + ld hl, $4705 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60730,$2d PokemonTower3Object: ; 0x6075d (size=51) db $1 ; border tile @@ -20125,16 +25906,15 @@ PokemonTower3Object: ; 0x6075d (size=51) db $0 ; signs db $4 ; people - db SPRITE_MEDIUM, $3 + 4, $c + 4, $ff, $d2, $41, $f5, $5 ; trainer - db SPRITE_MEDIUM, $8 + 4, $9 + 4, $ff, $d0, $42, $f5, $6 ; trainer - db SPRITE_MEDIUM, $d + 4, $a + 4, $ff, $d0, $43, $f5, $8 ; trainer - db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $84, $1d ; item + db SPRITE_MEDIUM, $3 + 4, $c + 4, $ff, $d2, $41, CHANNELER + $C8, $5 ; trainer + db SPRITE_MEDIUM, $8 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $6 ; trainer + db SPRITE_MEDIUM, $d + 4, $a + 4, $ff, $d0, $43, CHANNELER + $C8, $8 ; trainer + db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $84, ESCAPE_ROPE ; item ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_2 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_4 - PokemonTower3Blocks: ; 90 INCBIN "maps/pokemontower3.blk" @@ -20146,7 +25926,26 @@ PokemonTower4_h: ; 0x607ea to 0x607f6 (12 bytes) (id=145) dw $488b ; objects -INCBIN "baserom.gbc",$607f6,$6088b - $607f6 +INCBIN "baserom.gbc",$607f6,$60840 - $607f6 +PokemonTower4Text1: ; 0x60840 + db $08 ; asm + ld hl, $481b + call LoadTrainerHeader + jp $24d7 + +PokemonTower4Text2: ; 0x6084a + db $08 ; asm + ld hl, $4827 + call LoadTrainerHeader + jp $24d7 + +PokemonTower4Text3: ; 0x60854 + db $08 ; asm + ld hl, $4833 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6085e,$2d PokemonTower4Object: ; 0x6088b (size=65) db $1 ; border tile @@ -20157,18 +25956,17 @@ PokemonTower4Object: ; 0x6088b (size=65) db $0 ; signs db $6 ; people - db SPRITE_MEDIUM, $a + 4, $5 + 4, $ff, $d3, $41, $f5, $9 ; trainer - db SPRITE_MEDIUM, $7 + 4, $f + 4, $ff, $d0, $42, $f5, $a ; trainer - db SPRITE_MEDIUM, $c + 4, $e + 4, $ff, $d2, $43, $f5, $c ; trainer - db SPRITE_BALL, $a + 4, $c + 4, $ff, $ff, $84, $52 ; item - db SPRITE_BALL, $a + 4, $9 + 4, $ff, $ff, $85, $e ; item - db SPRITE_BALL, $10 + 4, $c + 4, $ff, $ff, $86, $23 ; item + db SPRITE_MEDIUM, $a + 4, $5 + 4, $ff, $d3, $41, CHANNELER + $C8, $9 ; trainer + db SPRITE_MEDIUM, $7 + 4, $f + 4, $ff, $d0, $42, CHANNELER + $C8, $a ; trainer + db SPRITE_MEDIUM, $c + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $c ; trainer + db SPRITE_BALL, $a + 4, $c + 4, $ff, $ff, $84, ELIXER ; item + db SPRITE_BALL, $a + 4, $9 + 4, $ff, $ff, $85, AWAKENING ; item + db SPRITE_BALL, $10 + 4, $c + 4, $ff, $ff, $86, HP_UP ; item ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_5 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_3 - PokemonTower4Blocks: ; 90 INCBIN "maps/pokemontower4.blk" @@ -20180,7 +25978,40 @@ PokemonTower5_h: ; 0x60926 to 0x60932 (12 bytes) (id=146) dw $4a48 ; objects -INCBIN "baserom.gbc",$60932,$60a48 - $60932 +INCBIN "baserom.gbc",$60932,$609da - $60932 + +PokemonTower5Text1: ; 0x609da + TX_FAR _PokemonTower5Text1 + db $50 + +PokemonTower5Text2: ; 0x609df + db $08 ; asm + ld hl, $49a9 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$609e9,$609f8 - $609e9 +PokemonTower5Text3: ; 0x609f8 + db $08 ; asm + ld hl, $49b5 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60a02,$60a11 - $60a02 +PokemonTower5Text4: ; 0x60a11 + db $08 ; asm + ld hl, $49c1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60a1b,$60a2a - $60a1b +PokemonTower5Text5: ; 0x60a2a + db $08 ; asm + ld hl, $49cd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60a34,$14 PokemonTower5Object: ; 0x60a48 (size=65) db $1 ; border tile @@ -20192,17 +26023,16 @@ PokemonTower5Object: ; 0x60a48 (size=65) db $6 ; people db SPRITE_MEDIUM, $8 + 4, $c + 4, $ff, $ff, $1 ; person - db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $42, $f5, $e ; trainer - db SPRITE_MEDIUM, $3 + 4, $e + 4, $ff, $d2, $43, $f5, $10 ; trainer - db SPRITE_MEDIUM, $a + 4, $6 + 4, $ff, $d3, $44, $f5, $11 ; trainer - db SPRITE_MEDIUM, $10 + 4, $9 + 4, $ff, $d3, $45, $f5, $12 ; trainer - db SPRITE_BALL, $e + 4, $6 + 4, $ff, $ff, $86, $31 ; item + db SPRITE_MEDIUM, $7 + 4, $11 + 4, $ff, $d2, $42, CHANNELER + $C8, $e ; trainer + db SPRITE_MEDIUM, $3 + 4, $e + 4, $ff, $d2, $43, CHANNELER + $C8, $10 ; trainer + db SPRITE_MEDIUM, $a + 4, $6 + 4, $ff, $d3, $44, CHANNELER + $C8, $11 ; trainer + db SPRITE_MEDIUM, $10 + 4, $9 + 4, $ff, $d3, $45, CHANNELER + $C8, $12 ; trainer + db SPRITE_BALL, $e + 4, $6 + 4, $ff, $ff, $86, NUGGET ; item ; warp-to EVENT_DISP $a, $9, $3 ; POKEMONTOWER_4 EVENT_DISP $a, $9, $12 ; POKEMONTOWER_6 - PokemonTower5Blocks: ; 90 INCBIN "maps/pokemontower5.blk" @@ -20214,7 +26044,26 @@ PokemonTower6_h: ; 0x60ae3 to 0x60aef (12 bytes) (id=147) dw $4c5b ; objects -INCBIN "baserom.gbc",$60aef,$60c5b - $60aef +INCBIN "baserom.gbc",$60aef,$60be4 - $60aef +PokemonTower6Text1: ; 0x60be4 + db $08 ; asm + ld hl, $4bbf + call LoadTrainerHeader + jp $24d7 + +PokemonTower6Text2: ; 0x60bee + db $08 ; asm + ld hl, $4bcb + call LoadTrainerHeader + jp $24d7 + +PokemonTower6Text3: ; 0x60bf8 + db $08 ; asm + ld hl, $4bd7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$60c02,$59 PokemonTower6Object: ; 0x60c5b (size=58) db $1 ; border tile @@ -20225,17 +26074,16 @@ PokemonTower6Object: ; 0x60c5b (size=58) db $0 ; signs db $5 ; people - db SPRITE_MEDIUM, $a + 4, $c + 4, $ff, $d3, $41, $f5, $13 ; trainer - db SPRITE_MEDIUM, $5 + 4, $9 + 4, $ff, $d0, $42, $f5, $14 ; trainer - db SPRITE_MEDIUM, $5 + 4, $10 + 4, $ff, $d2, $43, $f5, $15 ; trainer - db SPRITE_BALL, $8 + 4, $6 + 4, $ff, $ff, $84, $28 ; item - db SPRITE_BALL, $e + 4, $e + 4, $ff, $ff, $85, $2e ; item + db SPRITE_MEDIUM, $a + 4, $c + 4, $ff, $d3, $41, CHANNELER + $C8, $13 ; trainer + db SPRITE_MEDIUM, $5 + 4, $9 + 4, $ff, $d0, $42, CHANNELER + $C8, $14 ; trainer + db SPRITE_MEDIUM, $5 + 4, $10 + 4, $ff, $d2, $43, CHANNELER + $C8, $15 ; trainer + db SPRITE_BALL, $8 + 4, $6 + 4, $ff, $ff, $84, RARE_CANDY ; item + db SPRITE_BALL, $e + 4, $e + 4, $ff, $ff, $85, X_ACCURACY ; item ; warp-to EVENT_DISP $a, $9, $12 ; POKEMONTOWER_5 EVENT_DISP $a, $10, $9 ; POKEMONTOWER_7 - PokemonTower6Blocks: ; 90 INCBIN "maps/pokemontower6.blk" @@ -20249,7 +26097,51 @@ PokemonTower7_h: ; 0x60cf9 to 0x60d05 (12 bytes) (id=148) dw $4ef6 ; objects -INCBIN "baserom.gbc",$60d05,$60ef6 - $60d05 +INCBIN "baserom.gbc",$60d05,$60e6c - $60d05 +PokemonTower7Text1: ; 0x60e6c + db $08 ; asm + ld hl, $4e47 + call LoadTrainerHeader + jp $24d7 + +PokemonTower7Text2: ; 0x60e76 + db $08 ; asm + ld hl, $4e53 + call LoadTrainerHeader + jp $24d7 + +PokemonTower7Text3: ; 0x60e80 + db $08 ; asm + ld hl, $4e5f + call LoadTrainerHeader + jp $24d7 + +PokemonTower7Text4: ; 0x60e8a + db $08 ; asm + ld hl, $4ec4 + call PrintText + ld hl, $d7e0 + set 7, [hl] + ld hl, $d769 + set 7, [hl] + ld a, $44 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $17 + ld [$cc4d], a + ld a, $11 + call Predef + ld a, $18 + ld [$cc4d], a + ld a, $15 + call Predef + ld a, $4 + ld [$d630], a + ld [$da39], a + jp $24d7 + +INCBIN "baserom.gbc",$60ec4,$32 PokemonTower7Object: ; 0x60ef6 (size=42) db $1 ; border tile @@ -20259,15 +26151,14 @@ PokemonTower7Object: ; 0x60ef6 (size=42) db $0 ; signs db $4 ; people - db SPRITE_ROCKET, $b + 4, $9 + 4, $ff, $d3, $41, $e6, $13 ; trainer - db SPRITE_ROCKET, $9 + 4, $c + 4, $ff, $d2, $42, $e6, $14 ; trainer - db SPRITE_ROCKET, $7 + 4, $9 + 4, $ff, $d3, $43, $e6, $15 ; trainer + db SPRITE_ROCKET, $b + 4, $9 + 4, $ff, $d3, $41, ROCKET + $C8, $13 ; trainer + db SPRITE_ROCKET, $9 + 4, $c + 4, $ff, $d2, $42, ROCKET + $C8, $14 ; trainer + db SPRITE_ROCKET, $7 + 4, $9 + 4, $ff, $d3, $43, ROCKET + $C8, $15 ; trainer db SPRITE_MR_FUJI, $3 + 4, $a + 4, $ff, $d0, $4 ; person ; warp-to EVENT_DISP $a, $10, $9 ; POKEMONTOWER_6 - PokemonTower7Blocks: ; 90 INCBIN "maps/pokemontower7.blk" @@ -20279,7 +26170,22 @@ CeladonMart1_h: ; 0x60f7a to 0x60f86 (12 bytes) (id=122) dw $4f9e ; objects -INCBIN "baserom.gbc",$60f86,$60f9e - $60f86 +INCBIN "baserom.gbc",$60f86,$60f89 - $60f86 +CeladonMart1Texts: ; 0x60f89 + dw CeladonMart1Text1, CeladonMart1Text2, CeladonMart1Text3 + +CeladonMart1Text1: ; 0x60f8f + TX_FAR _CeladonMart1Text1 + db $50 + +CeladonMart1Text2: ; 0x60f94 + TX_FAR _CeladonMart1Text2 + db $50 + +CeladonMart1Text3: ; 0x60f99 + TX_FAR _CeladonMart1Text3 + db $50 + CeladonMart1Object: ; 0x60f9e (size=64) db $f ; border tile @@ -20289,7 +26195,7 @@ CeladonMart1Object: ; 0x60f9e (size=64) db $7, $10, $1, $ff db $7, $11, $1, $ff db $1, $c, $0, CELADON_MART_2 - db $1, $1, $0, CELADON_MART_6 + db $1, $1, $0, CELADON_MART_ELEVATOR db $2 ; signs db $4, $b, $2 ; CeladonMart1Text2 @@ -20304,8 +26210,7 @@ CeladonMart1Object: ; 0x60f9e (size=64) EVENT_DISP $a, $7, $10 EVENT_DISP $a, $7, $11 EVENT_DISP $a, $1, $c ; CELADON_MART_2 - EVENT_DISP $a, $1, $1 ; CELADON_MART_6 - + EVENT_DISP $a, $1, $1 ; CELADON_MART_ELEVATOR CeladonMart1Blocks: ; 40 INCBIN "maps/celadonmart1.blk" @@ -20320,7 +26225,60 @@ ViridianForest_h: ; 0x61101 to 0x6110d (12 bytes) (id=51) dw $51da ; objects -INCBIN "baserom.gbc",$6110d,$611da - $6110d +INCBIN "baserom.gbc",$6110d,$61167 - $6110d + +ViridianForestText1: ; 0x61167 + TX_FAR _ViridianForestText1 + db $50 + +ViridianForestText2: ; 0x6116c + db $08 ; asm + ld hl, $5142 + call LoadTrainerHeader + jp $24d7 + +ViridianForestText3: ; 0x61176 + db $08 ; asm + ld hl, $514e + call LoadTrainerHeader + jp $24d7 + +ViridianForestText4: ; 0x61180 + db $08 ; asm + ld hl, $515a + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6118a,$2d + +ViridianForestText8: ; 0x611b7 + TX_FAR _ViridianForestText8 + db $50 + +ViridianForestText9: ; 0x611bc + TX_FAR _ViridianForestText9 + db $50 + +ViridianForestText10: ; 0x611c1 + TX_FAR _ViridianForestText10 + db $50 + +ViridianForestText11: ; 0x611c6 + TX_FAR _ViridianForestText11 + db $50 + +ViridianForestText12: ; 0x611cb + TX_FAR _ViridianForestText12 + db $50 + +ViridianForestText13: ; 0x611d0 + TX_FAR _ViridianForestText13 + db $50 + +ViridianForestText14: ; 0x611d5 + TX_FAR _ViridianForestText14 + db $50 + ViridianForestObject: ; 0x611da (size=127) db $3 ; border tile @@ -20342,12 +26300,12 @@ ViridianForestObject: ; 0x611da (size=127) db $8 ; people db SPRITE_BUG_CATCHER, $2b + 4, $10 + 4, $ff, $ff, $1 ; person - db SPRITE_BUG_CATCHER, $21 + 4, $1e + 4, $ff, $d2, $42, $ca, $1 ; trainer - db SPRITE_BUG_CATCHER, $13 + 4, $1e + 4, $ff, $d2, $43, $ca, $2 ; trainer - db SPRITE_BUG_CATCHER, $12 + 4, $2 + 4, $ff, $d2, $44, $ca, $3 ; trainer - db SPRITE_BALL, $b + 4, $19 + 4, $ff, $ff, $85, $b ; item - db SPRITE_BALL, $1d + 4, $c + 4, $ff, $ff, $86, $14 ; item - db SPRITE_BALL, $1f + 4, $1 + 4, $ff, $ff, $87, $4 ; item + db SPRITE_BUG_CATCHER, $21 + 4, $1e + 4, $ff, $d2, $42, BUG_CATCHER + $C8, $1 ; trainer + db SPRITE_BUG_CATCHER, $13 + 4, $1e + 4, $ff, $d2, $43, BUG_CATCHER + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $12 + 4, $2 + 4, $ff, $d2, $44, BUG_CATCHER + $C8, $3 ; trainer + db SPRITE_BALL, $b + 4, $19 + 4, $ff, $ff, $85, ANTIDOTE ; item + db SPRITE_BALL, $1d + 4, $c + 4, $ff, $ff, $86, POTION ; item + db SPRITE_BALL, $1f + 4, $1 + 4, $ff, $ff, $87, POKE_BALL ; item db SPRITE_BUG_CATCHER, $28 + 4, $1b + 4, $ff, $ff, $8 ; person ; warp-to @@ -20358,7 +26316,6 @@ ViridianForestObject: ; 0x611da (size=127) EVENT_DISP $11, $2f, $11 ; VIRIDIAN_FOREST_ENTRANCE EVENT_DISP $11, $2f, $12 ; VIRIDIAN_FOREST_ENTRANCE - SSAnne1_h: ; 0x61259 to 0x61265 (12 bytes) (id=95) db $0d ; tileset db $09, $14 ; dimensions (y, x) @@ -20403,7 +26360,6 @@ SSAnne1Object: ; 0x61277 (size=104) EVENT_DISP $14, $f, $25 ; SS_ANNE_4 EVENT_DISP $14, $10, $3 ; SS_ANNE_6 - SSAnne1Blocks: ; 180 INCBIN "maps/ssanne1.blk" @@ -20434,7 +26390,7 @@ SSAnne2Object: ; 0x61514 (size=90) db $2 ; people db SPRITE_WAITER, $7 + 4, $3 + 4, $fe, $1, $1 ; person - db SPRITE_BLUE, $4 + 4, $24 + 4, $ff, $d0, $42, $e1, $1 ; trainer + db SPRITE_BLUE, $4 + 4, $24 + 4, $ff, $d0, $42, SONY1 + $C8, $1 ; trainer ; warp-to EVENT_DISP $14, $b, $9 ; SS_ANNE_9 @@ -20447,7 +26403,6 @@ SSAnne2Object: ; 0x61514 (size=90) EVENT_DISP $14, $c, $2 ; SS_ANNE_3 EVENT_DISP $14, $4, $24 ; SS_ANNE_7 - SSAnne2Blocks: ; 180 INCBIN "maps/ssanne2.blk" @@ -20483,7 +26438,6 @@ SSAnne4Object: ; 0x61632 (size=52) EVENT_DISP $f, $3, $7 ; SS_ANNE_10 EVENT_DISP $f, $5, $1b ; SS_ANNE_1 - SSAnne4Blocks: ; 60 INCBIN "maps/ssanne4.blk" @@ -20495,7 +26449,21 @@ SSAnne5_h: ; 0x616a2 to 0x616ae (12 bytes) (id=99) dw $572b ; objects -INCBIN "baserom.gbc",$616ae,$6172b - $616ae +INCBIN "baserom.gbc",$616ae,$616f9 - $616ae +SSAnne5Text4: ; 0x616f9 + db $08 ; asm + ld hl, $56d1 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$61703,$61712 - $61703 +SSAnne5Text5: ; 0x61712 + db $08 ; asm + ld hl, $56dd + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6171c,$f SSAnne5Object: ; 0x6172b (size=54) db $23 ; border tile @@ -20509,14 +26477,13 @@ SSAnne5Object: ; 0x6172b (size=54) db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $5 + 4, $ff, $d1, $1 ; person db SPRITE_SAILOR, $9 + 4, $4 + 4, $ff, $ff, $2 ; person db SPRITE_BLACK_HAIR_BOY_1, $b + 4, $7 + 4, $ff, $ff, $3 ; person - db SPRITE_SAILOR, $4 + 4, $4 + 4, $ff, $d0, $44, $cc, $1 ; trainer - db SPRITE_SAILOR, $8 + 4, $a + 4, $ff, $d1, $45, $cc, $2 ; trainer + db SPRITE_SAILOR, $4 + 4, $4 + 4, $ff, $d0, $44, SAILOR + $C8, $1 ; trainer + db SPRITE_SAILOR, $8 + 4, $a + 4, $ff, $d1, $45, SAILOR + $C8, $2 ; trainer ; warp-to EVENT_DISP $a, $6, $d ; SS_ANNE_3 EVENT_DISP $a, $7, $d ; SS_ANNE_3 - SSAnne5Blocks: ; 70 INCBIN "maps/ssanne5.blk" @@ -20528,7 +26495,28 @@ SSAnne6_h: ; 0x617a7 to 0x617b3 (12 bytes) (id=100) dw $581b ; objects -INCBIN "baserom.gbc",$617b3,$6181b - $617b3 +INCBIN "baserom.gbc",$617b3,$617e3 - $617b3 +SSAnne6Text7: ; 0x617e3 + db $08 ; asm + ld hl, $5807 + call PrintText + ldh a, [$d3] + bit 7, a + jr z, .asm_93eb1 ; 0x617ee + ld hl, $580c + jr .asm_63292 ; 0x617f3 +.asm_93eb1 ; 0x617f5 + bit 4, a + jr z, .asm_7436c ; 0x617f7 + ld hl, $5811 + jr .asm_63292 ; 0x617fc +.asm_7436c ; 0x617fe + ld hl, $5816 +.asm_63292 ; 0x61801 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61807,$14 SSAnne6Object: ; 0x6181b (size=54) db $c ; border tile @@ -20549,7 +26537,6 @@ SSAnne6Object: ; 0x6181b (size=54) ; warp-to EVENT_DISP $7, $0, $6 ; SS_ANNE_1 - SSAnne6Blocks: ; 56 INCBIN "maps/ssanne6.blk" @@ -20561,7 +26548,46 @@ SSAnne7_h: ; 0x61889 to 0x61895 (12 bytes) (id=101) dw $5946 ; objects -INCBIN "baserom.gbc",$61895,$61946 - $61895 +INCBIN "baserom.gbc",$61895,$618ad - $61895 +SSAnne7Text1: ; 0x618ad + db $08 ; asm + ld a, [$d803] + bit 0, a + jr nz, .asm_797c4 ; 0x618b3 + ld hl, $58ec + call PrintText + ld hl, $5927 + call PrintText + ld bc,(HM_01 << 8) | 1 + call $3e2e + jr nc, .asm_ccdcd ; 0x618c7 + ld hl, $592c + call PrintText + ld hl, $d803 + set 0, [hl] + jr .asm_0faf5 ; 0x618d4 +.asm_ccdcd ; 0x618d6 + ld hl, $5937 + call PrintText + ld hl, $d72d + set 5, [hl] + jr .asm_0faf5 ; 0x618e1 +.asm_797c4 ; 0x618e3 + ld hl, $5932 + call PrintText +.asm_0faf5 ; 0x618e9 + jp $24d7 + +INCBIN "baserom.gbc",$618ec,$50 + +SSAnne7Text2: ; 0x6193c + TX_FAR _SSAnne7Text2 + db $50 + +SSAnne7Text3: ; 0x61941 + TX_FAR _SSAnne7Text3 + db $50 + SSAnne7Object: ; 0x61946 (size=24) db $c ; border tile @@ -20578,7 +26604,6 @@ SSAnne7Object: ; 0x61946 (size=24) ; warp-to EVENT_DISP $3, $7, $0 ; SS_ANNE_2 - SSAnne7Blocks: ; 12 INCBIN "maps/ssanne7.blk" @@ -20590,7 +26615,60 @@ SSAnne8_h: ; 0x6196a to 0x61976 (12 bytes) (id=102) dw $5a60 ; objects -INCBIN "baserom.gbc",$61976,$61a60 - $61976 +INCBIN "baserom.gbc",$61976,$619d6 - $61976 +SSAnne8Text1: ; 0x619d6 + db $08 ; asm + ld hl, $59a5 + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text2: ; 0x619e0 + db $08 ; asm + ld hl, $59b1 + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text3: ; 0x619ea + db $08 ; asm + ld hl, $59bd + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text4: ; 0x619f4 + db $08 ; asm + ld hl, $59c9 + call LoadTrainerHeader + jp $24d7 + +SSAnne8Text8: ; 0x619fe + TX_FAR _SSAnne8Text8 + db $08 ; asm + ld a, $65 + call $13d0 + jp $24d7 + +INCBIN "baserom.gbc",$61a0b,60 + +SSAnne8Text5: ; 0x61a47 + TX_FAR _SSAnne8Text5 + db $50 + +SSAnne8Text6: ; 0x61a4c + TX_FAR _SSAnne8Text6 + db $50 + +SSAnne8Text7: ; 0x61a51 + TX_FAR _SSAnne8Text7 + db $50 + +SSAnne8Text9: ; 0x61a56 + TX_FAR _SSAnne8Text9 + db $50 + +SSAnne8Text11: ; 0x61a5b + TX_FAR _SSAnne8Text11 + db $50 + SSAnne8Object: ; 0x61a60 (size=127) db $c ; border tile @@ -20605,16 +26683,16 @@ SSAnne8Object: ; 0x61a60 (size=127) db $0 ; signs db $b ; people - db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d2, $41, $f1, $1 ; trainer - db SPRITE_GENTLEMAN, $4 + 4, $b + 4, $ff, $d1, $42, $f1, $2 ; trainer - db SPRITE_BUG_CATCHER, $e + 4, $b + 4, $ff, $d1, $43, $c9, $8 ; trainer - db SPRITE_LASS, $b + 4, $d + 4, $ff, $d2, $44, $cb, $b ; trainer + db SPRITE_GENTLEMAN, $3 + 4, $2 + 4, $ff, $d2, $41, GENTLEMAN + $C8, $1 ; trainer + db SPRITE_GENTLEMAN, $4 + 4, $b + 4, $ff, $d1, $42, GENTLEMAN + $C8, $2 ; trainer + db SPRITE_BUG_CATCHER, $e + 4, $b + 4, $ff, $d1, $43, YOUNGSTER + $C8, $8 ; trainer + db SPRITE_LASS, $b + 4, $d + 4, $ff, $d2, $44, LASS + $C8, $b ; trainer db SPRITE_GIRL, $3 + 4, $16 + 4, $fe, $1, $5 ; person db SPRITE_FAT_BALD_GUY, $e + 4, $0 + 4, $ff, $ff, $6 ; person db SPRITE_LITTLE_GIRL, $b + 4, $2 + 4, $ff, $d0, $7 ; person db SPRITE_CLEFAIRY, $b + 4, $3 + 4, $ff, $d0, $8 ; person db SPRITE_GIRL, $d + 4, $a + 4, $ff, $d3, $9 ; person - db SPRITE_BALL, $f + 4, $c + 4, $ff, $ff, $8a, $d0 ; item + db SPRITE_BALL, $f + 4, $c + 4, $ff, $ff, $8a, TM_08 ; item db SPRITE_GENTLEMAN, $d + 4, $15 + 4, $fe, $2, $b ; person ; warp-to @@ -20625,7 +26703,6 @@ SSAnne8Object: ; 0x61a60 (size=127) EVENT_DISP $c, $a, $a ; SS_ANNE_1 EVENT_DISP $c, $a, $14 ; SS_ANNE_1 - SSAnne8Blocks: ; 96 INCBIN "maps/ssanne8.blk" @@ -20637,7 +26714,84 @@ SSAnne9_h: ; 0x61b3f to 0x61b4b (12 bytes) (id=103) dw $5c8d ; objects -INCBIN "baserom.gbc",$61b4b,$61c8d - $61b4b +INCBIN "baserom.gbc",$61b4b,$61bb5 - $61b4b +SSAnne9Text1: ; 0x61bb5 + db $08 ; asm + ld hl, $5b84 + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text2: ; 0x61bbf + db $08 ; asm + ld hl, $5b90 + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text3: ; 0x61bc9 + db $08 ; asm + ld hl, $5b9c + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text4: ; 0x61bd3 + db $08 ; asm + ld hl, $5ba8 + call LoadTrainerHeader + jp $24d7 + +SSAnne9Text5: ; 0x61bdd + db $08 ; asm + call $3719 + ld hl, $5bf2 + call PrintText + call $3725 + ld a, $84 + call $349b + jp $24d7 + +INCBIN "baserom.gbc",$61bf2,$61bf7 - $61bf2 +SSAnne9Text7: ; 0x61bf7 + db $08 ; asm + ld hl, $5c01 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c01,$61c06 - $61c01 +SSAnne9Text8: ; 0x61c06 + db $08 ; asm + ld hl, $5c10 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c10,$61c15 - $61c10 +SSAnne9Text10: ; 0x61c15 + db $08 ; asm + ld hl, $5c1f + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c1f,$61c24 - $61c1f +SSAnne9Text11: ; 0x61c24 + db $08 ; asm + ld hl, $5c2e + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c2e,$61c33 - $61c2e +SSAnne9Text12: ; 0x61c33 + db $08 ; asm + ld hl, $5c3d + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c3d,$61c42 - $61c3d +SSAnne9Text13: ; 0x61c42 + db $08 ; asm + ld hl, $5c4c + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$61c4c,$41 SSAnne9Object: ; 0x61c8d (size=188) db $c ; border tile @@ -20658,15 +26812,15 @@ SSAnne9Object: ; 0x61c8d (size=188) db $0 ; signs db $d ; people - db SPRITE_GENTLEMAN, $2 + 4, $a + 4, $ff, $d3, $41, $f1, $3 ; trainer - db SPRITE_FISHER2, $4 + 4, $d + 4, $ff, $d2, $42, $d6, $1 ; trainer - db SPRITE_GENTLEMAN, $e + 4, $0 + 4, $ff, $d3, $43, $f1, $5 ; trainer - db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d0, $44, $cb, $c ; trainer + db SPRITE_GENTLEMAN, $2 + 4, $a + 4, $ff, $d3, $41, GENTLEMAN + $C8, $3 ; trainer + db SPRITE_FISHER2, $4 + 4, $d + 4, $ff, $d2, $42, FISHER + $C8, $1 ; trainer + db SPRITE_GENTLEMAN, $e + 4, $0 + 4, $ff, $d3, $43, GENTLEMAN + $C8, $5 ; trainer + db SPRITE_LASS, $b + 4, $2 + 4, $ff, $d0, $44, LASS + $C8, $c ; trainer db SPRITE_GENTLEMAN, $2 + 4, $1 + 4, $ff, $d0, $5 ; person - db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $86, $51 ; item + db SPRITE_BALL, $1 + 4, $c + 4, $ff, $ff, $86, MAX_ETHER ; item db SPRITE_GENTLEMAN, $2 + 4, $15 + 4, $ff, $d0, $7 ; person db SPRITE_OLD_PERSON, $1 + 4, $16 + 4, $ff, $d0, $8 ; person - db SPRITE_BALL, $c + 4, $0 + 4, $ff, $ff, $89, $28 ; item + db SPRITE_BALL, $c + 4, $0 + 4, $ff, $ff, $89, RARE_CANDY ; item db SPRITE_GENTLEMAN, $c + 4, $c + 4, $ff, $d0, $a ; person db SPRITE_YOUNG_BOY, $e + 4, $b + 4, $ff, $ff, $b ; person db SPRITE_BRUNETTE_GIRL, $c + 4, $16 + 4, $ff, $d2, $c ; person @@ -20686,7 +26840,6 @@ SSAnne9Object: ; 0x61c8d (size=188) EVENT_DISP $c, $f, $16 ; SS_ANNE_2 EVENT_DISP $c, $f, $17 ; SS_ANNE_2 - SSAnne10_h: ; 0x61d49 to 0x61d55 (12 bytes) (id=104) db $0d ; tileset db $08, $0c ; dimensions (y, x) @@ -20695,7 +26848,56 @@ SSAnne10_h: ; 0x61d49 to 0x61d55 (12 bytes) (id=104) dw $5e75 ; objects -INCBIN "baserom.gbc",$61d55,$61e75 - $61d55 +INCBIN "baserom.gbc",$61d55,$61dcd - $61d55 +SSAnne10Text1: ; 0x61dcd + db $08 ; asm + ld hl, $5d84 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text2: ; 0x61dd7 + db $08 ; asm + ld hl, $5d90 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text3: ; 0x61de1 + db $08 ; asm + ld hl, $5d9c + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text4: ; 0x61deb + db $08 ; asm + ld hl, $5da8 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text5: ; 0x61df5 + db $08 ; asm + ld hl, $5db4 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text6: ; 0x61dff + db $08 ; asm + ld hl, $5dc0 + call LoadTrainerHeader + jp $24d7 + +SSAnne10Text8: ; 0x61e09 + TX_FAR _SSAnne10Text8 + db $8 ; 0x61e0d + ld a, $29 + call $13d0 + jp $24d7 + +INCBIN "baserom.gbc",$61e16,$61e70 - $61e16 + +SSAnne10Text7: ; 0x61e70 + TX_FAR _SSAnne10Text7 + db $50 + SSAnne10Object: ; 0x61e75 (size=165) db $c ; border tile @@ -20714,17 +26916,17 @@ SSAnne10Object: ; 0x61e75 (size=165) db $0 ; signs db $b ; people - db SPRITE_SAILOR, $d + 4, $0 + 4, $ff, $d0, $41, $cc, $3 ; trainer - db SPRITE_SAILOR, $b + 4, $2 + 4, $ff, $d0, $42, $cc, $4 ; trainer - db SPRITE_SAILOR, $3 + 4, $c + 4, $ff, $d2, $43, $cc, $5 ; trainer - db SPRITE_SAILOR, $2 + 4, $16 + 4, $ff, $d0, $44, $cc, $6 ; trainer - db SPRITE_SAILOR, $2 + 4, $0 + 4, $ff, $d3, $45, $cc, $7 ; trainer - db SPRITE_FISHER2, $4 + 4, $0 + 4, $ff, $d3, $46, $d6, $2 ; trainer + db SPRITE_SAILOR, $d + 4, $0 + 4, $ff, $d0, $41, SAILOR + $C8, $3 ; trainer + db SPRITE_SAILOR, $b + 4, $2 + 4, $ff, $d0, $42, SAILOR + $C8, $4 ; trainer + db SPRITE_SAILOR, $3 + 4, $c + 4, $ff, $d2, $43, SAILOR + $C8, $5 ; trainer + db SPRITE_SAILOR, $2 + 4, $16 + 4, $ff, $d0, $44, SAILOR + $C8, $6 ; trainer + db SPRITE_SAILOR, $2 + 4, $0 + 4, $ff, $d3, $45, SAILOR + $C8, $7 ; trainer + db SPRITE_FISHER2, $4 + 4, $0 + 4, $ff, $d3, $46, FISHER + $C8, $2 ; trainer db SPRITE_BLACK_HAIR_BOY_2, $d + 4, $a + 4, $ff, $d3, $7 ; person db SPRITE_SLOWBRO, $c + 4, $b + 4, $ff, $ff, $8 ; person - db SPRITE_BALL, $2 + 4, $14 + 4, $ff, $ff, $89, $50 ; item - db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $8a, $f4 ; item - db SPRITE_BALL, $b + 4, $c + 4, $ff, $ff, $8b, $11 ; item + db SPRITE_BALL, $2 + 4, $14 + 4, $ff, $ff, $89, ETHER ; item + db SPRITE_BALL, $2 + 4, $a + 4, $ff, $ff, $8a, TM_44 ; item + db SPRITE_BALL, $b + 4, $c + 4, $ff, $ff, $8b, MAX_POTION ; item ; warp-to EVENT_DISP $c, $5, $2 ; SS_ANNE_4 @@ -20738,7 +26940,6 @@ SSAnne10Object: ; 0x61e75 (size=165) EVENT_DISP $c, $f, $c ; SS_ANNE_4 EVENT_DISP $c, $f, $d ; SS_ANNE_4 - UndergroundPathNS_h: ; 0x61f1a to 0x61f26 (12 bytes) (id=119) db $0b ; tileset db $18, $04 ; dimensions (y, x) @@ -20763,7 +26964,6 @@ UndergroundPathNSObject: ; 0x61f2a (size=20) EVENT_DISP $4, $4, $5 ; PATH_ENTRANCE_ROUTE_5 EVENT_DISP $4, $29, $2 ; PATH_ENTRANCE_ROUTE_6 - UndergroundPathWE_h: ; 0x61f3e to 0x61f4a (12 bytes) (id=121) db $0b ; tileset db $04, $19 ; dimensions (y, x) @@ -20788,7 +26988,6 @@ UndergroundPathWEObject: ; 0x61f4e (size=20) EVENT_DISP $19, $5, $2 ; PATH_ENTRANCE_ROUTE_7 EVENT_DISP $19, $2, $2f ; PATH_ENTRANCE_ROUTE_8 - DiglettsCave_h: ; 0x61f62 to 0x61f6e (12 bytes) (id=197) db $11 ; tileset db $12, $14 ; dimensions (y, x) @@ -20813,7 +27012,6 @@ DiglettsCaveObject: ; 0x61f72 (size=20) EVENT_DISP $14, $5, $5 ; DIGLETTS_CAVE_EXIT EVENT_DISP $14, $1f, $25 ; DIGLETTS_CAVE_ENTRANCE - DiglettsCaveBlocks: ; 360 INCBIN "maps/diglettscave.blk" @@ -20825,7 +27023,56 @@ SilphCo11_h: ; 0x620ee to 0x620fa (12 bytes) (id=235) dw $6380 ; objects -INCBIN "baserom.gbc",$620fa,$62380 - $620fa +INCBIN "baserom.gbc",$620fa,$622dc - $620fa +SilphCo11Text1: ; 0x622dc + db $08 ; asm + ld a, [$d838] + bit 5, a + jp nz, $6308 + ld hl, $6311 + call PrintText + ld bc,(MASTER_BALL << 8) | 1 + call $3e2e + jr nc, .asm_36088 ; 0x622f1 + ld hl, $6316 + call PrintText + ld hl, $d838 + set 5, [hl] + jr .asm_fd405 ; 0x622fe +.asm_36088 ; 0x62300 + ld hl, $6321 + call PrintText + jr .asm_fd405 ; 0x62306 + ld hl, $631c + call PrintText +.asm_fd405 ; 0x6230e + jp $24d7 + +INCBIN "baserom.gbc",$62311,$15 + +SilphCo11Text2: ; 0x62326 + TX_FAR _SilphCo11Text2 + db $50 + +SilphCo11Text3: ; 0x6232b + TX_FAR _SilphCo11Text3 + db $50 + +INCBIN "baserom.gbc",$62330,$6233a - $62330 +SilphCo11Text4: ; 0x6233a + db $08 ; asm + ld hl, $62c3 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$62344,$62353 - $62344 +SilphCo11Text5: ; 0x62353 + db $08 ; asm + ld hl, $62cf + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$6235d,$23 SilphCo11Object: ; 0x62380 (size=72) db $d ; border tile @@ -20840,9 +27087,9 @@ SilphCo11Object: ; 0x62380 (size=72) db $5 ; people db SPRITE_MR_MASTERBALL, $5 + 4, $7 + 4, $ff, $d0, $1 ; person db SPRITE_FOULARD_WOMAN, $5 + 4, $a + 4, $ff, $d0, $2 ; person - db SPRITE_GIOVANNI, $9 + 4, $6 + 4, $ff, $d0, $43, $e5, $2 ; trainer - db SPRITE_ROCKET, $10 + 4, $3 + 4, $ff, $d1, $44, $e6, $29 ; trainer - db SPRITE_ROCKET, $9 + 4, $f + 4, $ff, $d1, $45, $e6, $28 ; trainer + db SPRITE_GIOVANNI, $9 + 4, $6 + 4, $ff, $d0, $43, GIOVANNI + $C8, $2 ; trainer + db SPRITE_ROCKET, $10 + 4, $3 + 4, $ff, $d1, $44, ROCKET + $C8, $29 ; trainer + db SPRITE_ROCKET, $9 + 4, $f + 4, $ff, $d1, $45, ROCKET + $C8, $28 ; trainer ; warp-to EVENT_DISP $9, $0, $9 ; SILPH_CO_10F @@ -20850,7 +27097,6 @@ SilphCo11Object: ; 0x62380 (size=72) EVENT_DISP $9, $5, $5 EVENT_DISP $9, $2, $3 ; SILPH_CO_7F - SilphCo11Blocks: ; 81 INCBIN "maps/silphco11.blk" @@ -21189,12 +27435,97 @@ CeruleanCaveName: PowerPlantName: db "POWER PLANT@" -INCBIN "baserom.gbc",$716BE,$71B7B-$716BE +INCBIN "baserom.gbc",$716BE,$71AD9-$716BE + +Predef54: ; 0x71ad9 +; trigger the trade offer/action specified by W_WHICHTRADE + call $36f4 + ld hl,TradeMons + ld a,[W_WHICHTRADE] + ld b,a + swap a + sub b + sub b + ld c,a + ld b,$0 + add hl,bc + ld a,[hli] + ld [$cd0f],a + ld a,[hli] + ld [$cd34],a + ld a,[hli] + push af + ld de,$cd29 + ld bc,$000b + call CopyData + pop af + ld l,a + ld h,$0 + ld de,$5d64 + add hl,hl + add hl,de + ld a,[hli] + ld [$cd10],a + ld a,[hl] + ld [$cd11],a + ld a,[$cd0f] + ld de,$cd13 + call Function71b6a + ld a,[$cd34] + ld de,$cd1e + call Function71b6a + ld hl,$d737 + ld a,[W_WHICHTRADE] + ld c,a + ld b,$2 + ld a,$10 + call Predef + ld a,c + and a + ld a,$4 + ld [$cd12],a + jr nz,.asm_99bca ; 0x71b36 $20 + xor a + ld [$cd12],a + call .asm_99bca + ld a,$1 + ld [$cd12],a + call $35ec + ld a,[$cc26] + and a + jr nz,.asm_99bca ; 0x71b4b $b + call Function71c07 + jr c,.asm_99bca ; 0x71b50 $6 + ld hl,$5d8d + call PrintText +.asm_99bca ; 0x71b58 + ld hl,$cd12 + ld a,[hld] + ld e,a + ld d,$0 + ld a,[hld] + ld l,[hl] + ld h,a + add hl,de + add hl,de + ld a,[hli] + ld h,[hl] + ld l,a + jp PrintText + +Function71b6a: ; 0x71b6a + push de + ld [$d11e],a + call GetMonName + ld hl,$cd6d + pop de + ld bc,$b + jp CopyData TradeMons: ; 5B7B ; givemonster, getmonster, textstring, nickname (11 bytes), 14 bytes total db NIDORINO, NIDORINA, 0,"TERRY@@@@@@" - db ABRA, MR__MIME, 0,"MARCEL@@@@@" + db ABRA, MR_MIME, 0,"MARCEL@@@@@" db BUTTERFREE,BEEDRILL, 2,"CHIKUCHIKU@" db PONYTA, SEEL, 0,"SAILOR@@@@@" db SPEAROW, FARFETCH_D,2,"DUX@@@@@@@@" @@ -21204,7 +27535,78 @@ TradeMons: ; 5B7B db VENONAT, TANGELA, 2,"CRINKLES@@@" db NIDORAN_M, NIDORAN_F, 2,"SPOT@@@@@@@" -INCBIN "baserom.gbc",$71C07,$725C8-$71C07 +Function71c07: ; 0x71c07 + xor a + ld [$d07d],a + dec a + ld [$cfcb],a + call $13fc + push af + call $5ca2 + pop af + ld a,$1 + jp c,.asm_c4bc2 + ld a,[$cd0f] + ld b,a + ld a,[$cf91] + cp b + ld a,$2 + jr nz,.asm_c4bc2 ; 0x71c26 $75 + ld a,[$cf92] + ld hl,$d18c + ld bc,$002c + call AddNTimes + ld a,[hl] + ld [$d127],a + ld hl,$d737 + ld a,[W_WHICHTRADE] + ld c,a + ld b,$1 + ld a,$10 + call Predef + ld hl,$5d88 + call PrintText + ld a,[$cf92] + push af + ld a,[$d127] + push af + call $36c0 + call $5cc1 + ld a,$38 + call Predef + pop af + ld [$d127],a + pop af + ld [$cf92],a + ld a,[$cd34] + ld [$cf91],a + xor a + ld [$cc49],a + ld [$cf95],a + call $391f + ld a,$80 + ld [$cc49],a + call AddPokemonToParty + call $5d19 + ld hl,$7d7d + ld b,$5 + call Bankswitch + call ClearScreen + call $5ca2 + ld b,$3 + ld hl,$6edc + call Bankswitch + and a + ld a,$3 + jr .asm_ee803 ; 0x71c9b $1 +.asm_c4bc2 ; 0x71c9d + scf +.asm_ee803 ; 0x71c9e + ld [$cd12],a + ret + + +INCBIN "baserom.gbc",$71CA2,$725C8-$71CA2 MonsterPalettes: ; 65C8 db PAL_MEWMON ; MISSINGNO @@ -21329,7 +27731,7 @@ MonsterPalettes: ; 65C8 db PAL_REDMON ; SEAKING db PAL_REDMON ; STARYU db PAL_GREYMON ; STARMIE - db PAL_PINKMON ; MR__MIME + db PAL_PINKMON ; MR_MIME db PAL_GREENMON ; SCYTHER db PAL_MEWMON ; JYNX db PAL_YELLOWMON ; ELECTABUZZ @@ -21812,7 +28214,123 @@ ViridianGym_h: ; 0x74897 to 0x748a3 (12 bytes) (id=45) dw $4bde ; objects -INCBIN "baserom.gbc",$748a3,$74bde - $748a3 +INCBIN "baserom.gbc",$748a3,$74a69 - $748a3 +ViridianGymText1: ; 0x74a69 + db $08 ; asm + ld a, [$d751] + bit 1, a + jr z, .asm_6de66 ; 0x74a6f + bit 0, a + jr nz, .asm_9fc95 ; 0x74a73 + call z, $4995 + call $30b6 + jr .asm_6dff7 ; 0x74a7b +.asm_9fc95 ; 0x74a7d + ld a, $1 + ld [$cc3c], a + ld hl, $4ad9 + call PrintText + call $20ef + ld a, $32 + ld [$cc4d], a + ld a, $11 + call Predef + call $2429 + call Delay3 + call $20d1 + jr .asm_6dff7 ; 0x74a9e +.asm_6de66 ; 0x74aa0 + ld hl, $4ace + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $4ad3 + ld de, $4ad3 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $8 + ld [$d05c], a + ld a, $3 + ld [$d5fb], a +.asm_6dff7 ; 0x74acb + jp $24d7 + +INCBIN "baserom.gbc",$74ace,$74af3 - $74ace +ViridianGymText2: ; 0x74af3 + db $08 ; asm + ld hl, $4a08 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74afd,$74b0c - $74afd +ViridianGymText3: ; 0x74b0c + db $08 ; asm + ld hl, $4a14 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b16,$74b25 - $74b16 +ViridianGymText4: ; 0x74b25 + db $08 ; asm + ld hl, $4a20 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b2f,$74b3e - $74b2f +ViridianGymText5: ; 0x74b3e + db $08 ; asm + ld hl, $4a2c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b48,$74b57 - $74b48 +ViridianGymText6: ; 0x74b57 + db $08 ; asm + ld hl, $4a38 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b61,$74b70 - $74b61 +ViridianGymText7: ; 0x74b70 + db $08 ; asm + ld hl, $4a44 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b7a,$74b89 - $74b7a +ViridianGymText8: ; 0x74b89 + db $08 ; asm + ld hl, $4a50 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74b93,$74ba2 - $74b93 +ViridianGymText9: ; 0x74ba2 + db $08 ; asm + ld hl, $4a5c + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$74bac,$74bbb - $74bac +ViridianGymText10: ; 0x74bbb + db $08 ; asm + ld a, [$d751] + bit 1, a + jr nz, .asm_1abd1 ; 0x74bc1 + ld hl, $4bd4 + call PrintText + jr .asm_6064d ; 0x74bc9 +.asm_1abd1 ; 0x74bcb + ld hl, $4bd9 + call PrintText +.asm_6064d ; 0x74bd1 + jp $24d7 + +INCBIN "baserom.gbc",$74bd4,$a ViridianGymObject: ; 0x74bde (size=105) db $3 ; border tile @@ -21823,23 +28341,22 @@ ViridianGymObject: ; 0x74bde (size=105) db $0 ; signs db $b ; people - db SPRITE_GIOVANNI, $1 + 4, $2 + 4, $ff, $d0, $41, $e5, $3 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $c + 4, $ff, $d0, $42, $e7, $9 ; trainer - db SPRITE_HIKER, $b + 4, $b + 4, $ff, $d1, $43, $e0, $6 ; trainer - db SPRITE_ROCKER, $7 + 4, $a + 4, $ff, $d0, $44, $de, $3 ; trainer - db SPRITE_HIKER, $7 + 4, $3 + 4, $ff, $d2, $45, $e0, $7 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $d + 4, $ff, $d3, $46, $e7, $a ; trainer - db SPRITE_HIKER, $1 + 4, $a + 4, $ff, $d0, $47, $e0, $8 ; trainer - db SPRITE_ROCKER, $10 + 4, $2 + 4, $ff, $d3, $48, $de, $4 ; trainer - db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $6 + 4, $ff, $d0, $49, $e7, $1 ; trainer + db SPRITE_GIOVANNI, $1 + 4, $2 + 4, $ff, $d0, $41, GIOVANNI + $C8, $3 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $7 + 4, $c + 4, $ff, $d0, $42, COOLTRAINER_M + $C8, $9 ; trainer + db SPRITE_HIKER, $b + 4, $b + 4, $ff, $d1, $43, BLACKBELT + $C8, $6 ; trainer + db SPRITE_ROCKER, $7 + 4, $a + 4, $ff, $d0, $44, TAMER + $C8, $3 ; trainer + db SPRITE_HIKER, $7 + 4, $3 + 4, $ff, $d2, $45, BLACKBELT + $C8, $7 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $d + 4, $ff, $d3, $46, COOLTRAINER_M + $C8, $a ; trainer + db SPRITE_HIKER, $1 + 4, $a + 4, $ff, $d0, $47, BLACKBELT + $C8, $8 ; trainer + db SPRITE_ROCKER, $10 + 4, $2 + 4, $ff, $d3, $48, TAMER + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_1, $5 + 4, $6 + 4, $ff, $d0, $49, COOLTRAINER_M + $C8, $1 ; trainer db SPRITE_GYM_HELPER, $f + 4, $10 + 4, $ff, $d0, $a ; person - db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $8b, $35 ; item + db SPRITE_BALL, $9 + 4, $10 + 4, $ff, $ff, $8b, REVIVE ; item ; warp-to EVENT_DISP $a, $11, $10 EVENT_DISP $a, $11, $11 - ViridianGymBlocks: ; 90 INCBIN "maps/viridiangym.blk" @@ -21851,7 +28368,21 @@ PewterMart_h: ; 0x74ca1 to 0x74cad (12 bytes) (id=56) dw $4cda ; objects -INCBIN "baserom.gbc",$74cad,$74cda - $74cad +INCBIN "baserom.gbc",$74cad,$74cbc - $74cad +PewterMartText2: ; 0x74cbc + db $08 ; asm + ld hl, $4cc6 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$74cc6,$74ccb - $74cc6 +PewterMartText3: ; 0x74ccb + db $08 ; asm + ld hl, $4cd5 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$74cd5,$5 PewterMartObject: ; 0x74cda (size=38) db $0 ; border tile @@ -21870,7 +28401,6 @@ PewterMartObject: ; 0x74cda (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - UnknownDungeon1_h: ; 0x74d00 to 0x74d0c (12 bytes) (id=228) db $11 ; tileset db $09, $0f ; dimensions (y, x) @@ -21897,9 +28427,9 @@ UnknownDungeon1Object: ; 0x74d15 (size=97) db $0 ; signs db $3 ; people - db SPRITE_BALL, $d + 4, $7 + 4, $ff, $ff, $81, $10 ; item - db SPRITE_BALL, $3 + 4, $13 + 4, $ff, $ff, $82, $53 ; item - db SPRITE_BALL, $0 + 4, $5 + 4, $ff, $ff, $83, $31 ; item + db SPRITE_BALL, $d + 4, $7 + 4, $ff, $ff, $81, FULL_RESTORE ; item + db SPRITE_BALL, $3 + 4, $13 + 4, $ff, $ff, $82, MAX_ELIXER ; item + db SPRITE_BALL, $0 + 4, $5 + 4, $ff, $ff, $83, NUGGET ; item ; warp-to EVENT_DISP $f, $11, $18 @@ -21912,7 +28442,6 @@ UnknownDungeon1Object: ; 0x74d15 (size=97) EVENT_DISP $f, $b, $3 ; UNKNOWN_DUNGEON_2 EVENT_DISP $f, $6, $0 ; UNKNOWN_DUNGEON_3 - UnknownDungeon1Blocks: ; 135 INCBIN "maps/unknowndungeon1.blk" @@ -21953,7 +28482,22 @@ FuchsiaHouse1_h: ; 0x7500c to 0x75018 (12 bytes) (id=153) dw $5031 ; objects -INCBIN "baserom.gbc",$75018,$75031 - $75018 +INCBIN "baserom.gbc",$75018,$7501c - $75018 +FuchsiaHouse1Texts: ; 0x7501c + dw FuchsiaHouse1Text1, FuchsiaHouse1Text2, FuchsiaHouse1Text3 + +FuchsiaHouse1Text1: ; 0x75022 + TX_FAR _FuchsiaHouse1Text1 + db $50 + +FuchsiaHouse1Text2: ; 0x75027 + TX_FAR _FuchsiaHouse1Text2 + db $50 + +FuchsiaHouse1Text3: ; 0x7502c + TX_FAR _FuchsiaHouse1Text3 + db $50 + FuchsiaHouse1Object: ; 0x75031 (size=38) db $a ; border tile @@ -21972,7 +28516,6 @@ FuchsiaHouse1Object: ; 0x75031 (size=38) EVENT_DISP $4, $7, $2 EVENT_DISP $4, $7, $3 - FuchsiaPokecenter_h: ; 0x75057 to 0x75063 (12 bytes) (id=154) db $06 ; tileset db $04, $07 ; dimensions (y, x) @@ -21981,7 +28524,15 @@ FuchsiaPokecenter_h: ; 0x75057 to 0x75063 (12 bytes) (id=154) dw $507d ; objects -INCBIN "baserom.gbc",$75063,$7507d - $75063 +INCBIN "baserom.gbc",$75063,$75072 - $75063 + +FuchsiaPokecenterText1: ; 0x75071 or 0x75072 + ;TX_FAR _FuchsiaPokecenterText1 + db $17, $87, $63, $27, $50 + +INCBIN "baserom.gbc",$75077,$6 +;db $17, $de, $63, $27, $50, $f6 + FuchsiaPokecenterObject: ; 0x7507d (size=44) db $0 ; border tile @@ -22001,7 +28552,6 @@ FuchsiaPokecenterObject: ; 0x7507d (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - FuchsiaHouse2_h: ; 0x750a9 to 0x750b5 (12 bytes) (id=155) db $14 ; tileset db $04, $05 ; dimensions (y, x) @@ -22010,7 +28560,73 @@ FuchsiaHouse2_h: ; 0x750a9 to 0x750b5 (12 bytes) (id=155) dw $5180 ; objects -INCBIN "baserom.gbc",$750b5,$75180 - $750b5 +INCBIN "baserom.gbc",$750b5,$750c2 - $750b5 +FuchsiaHouse2Text1: ; 0x750c2 + db $08 ; asm + ld a, [$d78e] + bit 0, a + jr nz, .asm_58feb ; 0x750c8 + ld b,GOLD_TEETH + call $3493 + jr nz, .asm_3f30f ; 0x750cf + ld a, [$d78e] + bit 1, a + jr nz, .asm_60cba ; 0x750d6 + ld hl, $5135 + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $513f + jr nz, .asm_61238 ; 0x750e8 + ld hl, $513a +.asm_61238 ; 0x750ed + call PrintText + jr .asm_52039 ; 0x750f0 +.asm_3f30f ; 0x750f2 + ld hl, $5144 + call PrintText + ld a, $40 + ldh [$db], a + ld b, $5 ; BANK(MyFunction) + ld hl, $7f37 ; MyFunction + call Bankswitch + ld hl, $d78e + set 1, [hl] +.asm_60cba ; 0x75109 + ld hl, $514e + call PrintText + ld bc,(HM_04 << 8) | 1 + call $3e2e + jr nc, .asm_53b90 ; 0x75115 + ld hl, $5153 + call PrintText + ld hl, $d78e + set 0, [hl] + jr .asm_52039 ; 0x75122 +.asm_58feb ; 0x75124 + ld hl, $5159 + call PrintText + jr .asm_52039 ; 0x7512a +.asm_53b90 ; 0x7512c + ld hl, $515e + call PrintText +.asm_52039 ; 0x75132 + jp $24d7 + +INCBIN "baserom.gbc",$75135,$75163 - $75135 +FuchsiaHouse2Text4: ; 0x75163 + db $08 ; asm + ldh a, [$8c] + cp $4 + ld hl, $517b + jr nz, .asm_4c9a2 ; 0x7516b + ld hl, $5176 +.asm_4c9a2 ; 0x75170 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75176,$a FuchsiaHouse2Object: ; 0x75180 (size=45) db $17 ; border tile @@ -22024,14 +28640,13 @@ FuchsiaHouse2Object: ; 0x75180 (size=45) db $3 ; people db SPRITE_WARDEN, $3 + 4, $2 + 4, $ff, $ff, $1 ; person - db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $82, $28 ; item + db SPRITE_BALL, $3 + 4, $8 + 4, $ff, $ff, $82, RARE_CANDY ; item db SPRITE_BOULDER, $4 + 4, $8 + 4, $ff, $10, $3 ; person ; warp-to EVENT_DISP $5, $7, $4 EVENT_DISP $5, $7, $5 - FuchsiaHouse2Blocks: ; 20 INCBIN "maps/fuchsiahouse2.blk" @@ -22043,7 +28658,28 @@ SafariZoneEntrance_h: ; 0x751c1 to 0x751cd (12 bytes) (id=156) dw $53f5 ; objects -INCBIN "baserom.gbc",$751cd,$753f5 - $751cd +INCBIN "baserom.gbc",$751cd,$752c5 - $751cd + +SafariZoneEntranceText1: ; 0x752c5 + TX_FAR _SafariZoneEntranceText1 + db $50 + +INCBIN "baserom.gbc",$752ca,$753ca - $752ca +SafariZoneEntranceText2: ; 0x753ca + db $08 ; asm + ld hl, $53e6 + call PrintText + call $35ec + ld a, [$cc26] + and a + ld hl, $53f0 + jr nz, .asm_278a6 ; 0x753db + ld hl, $53eb +.asm_278a6 ; 0x753e0 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$753e6,$f SafariZoneEntranceObject: ; 0x753f5 (size=48) db $a ; border tile @@ -22065,7 +28701,6 @@ SafariZoneEntranceObject: ; 0x753f5 (size=48) EVENT_DISP $4, $0, $3 ; SAFARI_ZONE_CENTER EVENT_DISP $4, $0, $4 ; SAFARI_ZONE_CENTER - SafariZoneEntranceBlocks: ; 12 INCBIN "maps/safarizoneentrance.blk" @@ -22077,7 +28712,98 @@ FuchsiaGym_h: ; 0x75431 to 0x7543d (12 bytes) (id=157) dw $5658 ; objects -INCBIN "baserom.gbc",$7543d,$75658 - $7543d +INCBIN "baserom.gbc",$7543d,$75534 - $7543d +FuchsiaGymText1: ; 0x75534 + db $08 ; asm + ld a, [$d792] + bit 1, a + jr z, .asm_181b6 ; 0x7553a + bit 0, a + jr nz, .asm_adc3b ; 0x7553e + call z, $5497 + call $30b6 + jr .asm_e84c6 ; 0x75546 +.asm_adc3b ; 0x75548 + ld hl, $558b + call PrintText + jr .asm_e84c6 ; 0x7554e +.asm_181b6 ; 0x75550 + ld hl, $5581 + call PrintText + ld hl, $d72d + set 6, [hl] + set 7, [hl] + ld hl, $5586 + ld de, $5586 + call $3354 + ldh a, [$8c] + ld [$cf13], a + call $336a + call $32d7 + ld a, $5 + ld [$d05c], a + xor a + ldh [$b4], a + ld a, $3 + ld [$d65b], a +.asm_e84c6 ; 0x7557e + jp $24d7 + +INCBIN "baserom.gbc",$75581,$755a4 - $75581 +FuchsiaGymText2: ; 0x755a4 + db $08 ; asm + ld hl, $54eb + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755ae,$755bd - $755ae +FuchsiaGymText3: ; 0x755bd + db $08 ; asm + ld hl, $54f7 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755c7,$755d6 - $755c7 +FuchsiaGymText4: ; 0x755d6 + db $08 ; asm + ld hl, $5503 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755e0,$755ef - $755e0 +FuchsiaGymText5: ; 0x755ef + db $08 ; asm + ld hl, $550f + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$755f9,$75608 - $755f9 +FuchsiaGymText6: ; 0x75608 + db $08 ; asm + ld hl, $551b + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$75612,$75621 - $75612 +FuchsiaGymText7: ; 0x75621 + db $08 ; asm + ld hl, $5527 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$7562b,$7563a - $7562b +FuchsiaGymText8: ; 0x7563a + db $08 ; asm + ld a, [$d792] + bit 1, a + ld hl, $5653 + jr nz, .asm_50671 ; 0x75643 + ld hl, $564e +.asm_50671 ; 0x75648 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$7564e,$a FuchsiaGymObject: ; 0x75658 (size=82) db $3 ; border tile @@ -22088,20 +28814,19 @@ FuchsiaGymObject: ; 0x75658 (size=82) db $0 ; signs db $8 ; people - db SPRITE_BLACKBELT, $a + 4, $4 + 4, $ff, $d0, $41, $ee, $1 ; trainer - db SPRITE_ROCKER, $d + 4, $8 + 4, $ff, $d0, $42, $dd, $7 ; trainer - db SPRITE_ROCKER, $8 + 4, $7 + 4, $ff, $d3, $43, $dd, $3 ; trainer - db SPRITE_ROCKER, $c + 4, $1 + 4, $ff, $d0, $44, $dd, $8 ; trainer - db SPRITE_ROCKER, $5 + 4, $3 + 4, $ff, $d1, $45, $de, $1 ; trainer - db SPRITE_ROCKER, $2 + 4, $8 + 4, $ff, $d0, $46, $de, $2 ; trainer - db SPRITE_ROCKER, $7 + 4, $2 + 4, $ff, $d2, $47, $dd, $4 ; trainer + db SPRITE_BLACKBELT, $a + 4, $4 + 4, $ff, $d0, $41, KOGA + $C8, $1 ; trainer + db SPRITE_ROCKER, $d + 4, $8 + 4, $ff, $d0, $42, JUGGLER + $C8, $7 ; trainer + db SPRITE_ROCKER, $8 + 4, $7 + 4, $ff, $d3, $43, JUGGLER + $C8, $3 ; trainer + db SPRITE_ROCKER, $c + 4, $1 + 4, $ff, $d0, $44, JUGGLER + $C8, $8 ; trainer + db SPRITE_ROCKER, $5 + 4, $3 + 4, $ff, $d1, $45, TAMER + $C8, $1 ; trainer + db SPRITE_ROCKER, $2 + 4, $8 + 4, $ff, $d0, $46, TAMER + $C8, $2 ; trainer + db SPRITE_ROCKER, $7 + 4, $2 + 4, $ff, $d2, $47, JUGGLER + $C8, $4 ; trainer db SPRITE_GYM_HELPER, $f + 4, $7 + 4, $ff, $d0, $8 ; person ; warp-to EVENT_DISP $5, $11, $4 EVENT_DISP $5, $11, $5 - FuchsiaGymBlocks: ; 45 INCBIN "maps/fuchsiagym.blk" @@ -22113,7 +28838,22 @@ FuchsiaMeetingRoom_h: ; 0x756d7 to 0x756e3 (12 bytes) (id=158) dw $56fc ; objects -INCBIN "baserom.gbc",$756e3,$756fc - $756e3 +INCBIN "baserom.gbc",$756e3,$756e7 - $756e3 +FuchsiaMeetingRoomTexts: ; 0x756e7 + dw FuchsiaMeetingRoomText1, FuchsiaMeetingRoomText2, FuchsiaMeetingRoomText3 + +FuchsiaMeetingRoomText1: ; 0x756ed + TX_FAR _FuchsiaMeetingRoomText1 + db $50 + +FuchsiaMeetingRoomText2: ; 0x756f2 + TX_FAR _FuchsiaMeetingRoomText2 + db $50 + +FuchsiaMeetingRoomText3: ; 0x756f7 + TX_FAR _FuchsiaMeetingRoomText3 + db $50 + FuchsiaMeetingRoomObject: ; 0x756fc (size=38) db $17 ; border tile @@ -22132,7 +28872,6 @@ FuchsiaMeetingRoomObject: ; 0x756fc (size=38) EVENT_DISP $7, $7, $4 EVENT_DISP $7, $7, $5 - FuchsiaMeetingRoomBlocks: ; 28 INCBIN "maps/fuchsiameetingroom.blk" @@ -22144,7 +28883,147 @@ CinnabarGym_h: ; 0x7573e to 0x7574a (12 bytes) (id=166) dw $5acc ; objects -INCBIN "baserom.gbc",$7574a,$75acc - $7574a +INCBIN "baserom.gbc",$7574a,$75939 - $7574a +CinnabarGymText2: ; 0x75939 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 2, a + jr nz, .asm_46bb4 ; 0x75942 + ld hl, $595f + call PrintText + ld hl, $5964 + ld de, $5964 + call $3354 + jp $58b7 +.asm_46bb4 ; 0x75956 + ld hl, $5969 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$7595f,$7596e - $7595f +CinnabarGymText3: ; 0x7596e + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 3, a + jr nz, .asm_4b406 ; 0x75977 + ld hl, $5994 + call PrintText + ld hl, $5999 + ld de, $5999 + call $3354 + jp $58b7 +.asm_4b406 ; 0x7598b + ld hl, $599e + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75994,$759a3 - $75994 +CinnabarGymText4: ; 0x759a3 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 4, a + jr nz, .asm_c0673 ; 0x759ac + ld hl, $59c9 + call PrintText + ld hl, $59ce + ld de, $59ce + call $3354 + jp $58b7 +.asm_c0673 ; 0x759c0 + ld hl, $59d3 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$759c9,$759d8 - $759c9 +CinnabarGymText5: ; 0x759d8 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 5, a + jr nz, .asm_5cfd7 ; 0x759e1 + ld hl, $59fe + call PrintText + ld hl, $5a03 + ld de, $5a03 + call $3354 + jp $58b7 +.asm_5cfd7 ; 0x759f5 + ld hl, $5a08 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$759fe,$75a0d - $759fe +CinnabarGymText6: ; 0x75a0d + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 6, a + jr nz, .asm_776b4 ; 0x75a16 + ld hl, $5a33 + call PrintText + ld hl, $5a38 + ld de, $5a38 + call $3354 + jp $58b7 +.asm_776b4 ; 0x75a2a + ld hl, $5a3d + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75a33,$75a42 - $75a33 +CinnabarGymText7: ; 0x75a42 + db $08 ; asm + call $57a0 + ld a, [$d79a] + bit 7, a + jr nz, .asm_2f755 ; 0x75a4b + ld hl, $5a68 + call PrintText + ld hl, $5a6d + ld de, $5a6d + call $3354 + jp $58b7 +.asm_2f755 ; 0x75a5f + ld hl, $5a72 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75a68,$75a77 - $75a68 +CinnabarGymText8: ; 0x75a77 + db $08 ; asm + call $57a0 + ld a, [$d79b] + bit 0, a + jr nz, .asm_d87be ; 0x75a80 + ld hl, $5a9d + call PrintText + ld hl, $5aa2 + ld de, $5aa2 + call $3354 + jp $58b7 +.asm_d87be ; 0x75a94 + ld hl, $5aa7 + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75a9d,$75aac - $75a9d +CinnabarGymText9: ; 0x75aac + db $08 ; asm + ld a, [$d79a] + bit 1, a + jr nz, .asm_627d9 ; 0x75ab2 + ld hl, $5ac2 + jr .asm_0b11d ; 0x75ab7 +.asm_627d9 ; 0x75ab9 + ld hl, $5ac7 +.asm_0b11d ; 0x75abc + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$75ac2,$a CinnabarGymObject: ; 0x75acc (size=90) db $2e ; border tile @@ -22155,14 +29034,14 @@ CinnabarGymObject: ; 0x75acc (size=90) db $0 ; signs db $9 ; people - db SPRITE_FAT_BALD_GUY, $3 + 4, $3 + 4, $ff, $d0, $41, $ef, $1 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $11 + 4, $ff, $d0, $42, $d0, $9 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $11 + 4, $ff, $d0, $43, $d3, $4 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $b + 4, $ff, $d0, $44, $d0, $a ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $b + 4, $ff, $d0, $45, $d3, $5 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $b + 4, $ff, $d0, $46, $d0, $b ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $3 + 4, $ff, $d0, $47, $d3, $6 ; trainer - db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d0, $48, $d0, $c ; trainer + db SPRITE_FAT_BALD_GUY, $3 + 4, $3 + 4, $ff, $d0, $41, BLAINE + $C8, $1 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $2 + 4, $11 + 4, $ff, $d0, $42, SUPER_NERD + $C8, $9 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $11 + 4, $ff, $d0, $43, BURGLAR + $C8, $4 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $4 + 4, $b + 4, $ff, $d0, $44, SUPER_NERD + $C8, $a ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $b + 4, $ff, $d0, $45, BURGLAR + $C8, $5 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $b + 4, $ff, $d0, $46, SUPER_NERD + $C8, $b ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $e + 4, $3 + 4, $ff, $d0, $47, BURGLAR + $C8, $6 ; trainer + db SPRITE_BLACK_HAIR_BOY_2, $8 + 4, $3 + 4, $ff, $d0, $48, SUPER_NERD + $C8, $c ; trainer db SPRITE_GYM_HELPER, $d + 4, $10 + 4, $ff, $d0, $9 ; person ; warp-to @@ -22180,7 +29059,30 @@ Lab1_h: ; 0x75b80 to 0x75b8c (12 bytes) (id=167) dw $5bb3 ; objects -INCBIN "baserom.gbc",$75b8c,$75bb3 - $75b8c +INCBIN "baserom.gbc",$75b8c,$75b90 - $75b8c +Lab1Texts: ; 0x75b90 + dw Lab1Text1, Lab1Text2, Lab1Text3, Lab1Text4, Lab1Text5 + +Lab1Text1: ; 0x75b9a + TX_FAR _Lab1Text1 + db $50 + +Lab1Text2: ; 0x75b9f + TX_FAR _Lab1Text2 + db $50 + +Lab1Text3: ; 0x75ba4 + TX_FAR _Lab1Text3 + db $50 + +Lab1Text4: ; 0x75ba9 + TX_FAR _Lab1Text4 + db $50 + +Lab1Text5: ; 0x75bae + TX_FAR _Lab1Text5 + db $50 + Lab1Object: ; 0x75bb3 (size=62) db $17 ; border tile @@ -22207,7 +29109,6 @@ Lab1Object: ; 0x75bb3 (size=62) EVENT_DISP $9, $4, $c ; CINNABAR_LAB_3 EVENT_DISP $9, $4, $10 ; CINNABAR_LAB_4 - Lab1Blocks: ; 36 INCBIN "maps/lab1.blk" @@ -22219,7 +29120,27 @@ Lab2_h: ; 0x75c15 to 0x75c21 (12 bytes) (id=168) dw $5c45 ; objects -INCBIN "baserom.gbc",$75c21,$75c45 - $75c21 +INCBIN "baserom.gbc",$75c21,$75c2a - $75c21 + +Lab2Text1: ; 0x75c2a + TX_FAR _Lab2Text1 + db $50 + +Lab2Text2: ; 0x75c2f + db $8 + ld a, $7 + ld [W_WHICHTRADE], a + jr asm_78552 ; 0x75c35 $6 + +Lab2Text3: + db $8 + ld a, $8 + ld [W_WHICHTRADE], a +asm_78552: ; 0x75c3d + ld a, $54 + call Predef + jp $24d7 + Lab2Object: ; 0x75c45 (size=38) db $17 ; border tile @@ -22238,7 +29159,6 @@ Lab2Object: ; 0x75c45 (size=38) EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 - Lab2Blocks: ; 16 INCBIN "maps/lab2.blk" @@ -22250,7 +29170,46 @@ Lab3_h: ; 0x75c7b to 0x75c87 (12 bytes) (id=169) dw $5cec ; objects -INCBIN "baserom.gbc",$75c87,$75cec - $75c87 +INCBIN "baserom.gbc",$75c87,$75c94 - $75c87 +Lab3Text1: ; 0x75c94 + db $08 ; asm + ld a, [$d7a1] + bit 7, a + jr nz, .asm_e551a ; 0x75c9a + ld hl, $5cc8 + call PrintText + ld bc,(TM_35 << 8) | 1 + call $3e2e + jr nc, .asm_6c187 ; 0x75ca8 + ld hl, $5ccd + call PrintText + ld hl, $d7a1 + set 7, [hl] + jr .asm_eb896 ; 0x75cb5 +.asm_6c187 ; 0x75cb7 + ld hl, $5cd8 + call PrintText + jr .asm_eb896 ; 0x75cbd +.asm_e551a ; 0x75cbf + ld hl, $5cd3 + call PrintText +.asm_eb896 ; 0x75cc5 + jp $24d7 + +INCBIN "baserom.gbc",$75cc8,$15 + +Lab3Text2: ; 0x75cdd + TX_FAR _Lab3Text2 + db $50 + +Lab3Text3: ; 0x75ce2 + TX_FAR _Lab3Text3 + db $50 + +Lab3Text5: ; 0x75ce7 + TX_FAR _Lab3Text5 + db $50 + Lab3Object: ; 0x75cec (size=41) db $17 ; border tile @@ -22271,7 +29230,6 @@ Lab3Object: ; 0x75cec (size=41) EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 - Lab3Blocks: ; 16 INCBIN "maps/lab3.blk" @@ -22283,7 +29241,16 @@ Lab4_h: ; 0x75d25 to 0x75d31 (12 bytes) (id=170) dw $5df0 ; objects -INCBIN "baserom.gbc",$75d31,$75df0 - $75d31 +INCBIN "baserom.gbc",$75d31,$75dda - $75d31 +Lab4Text2: ; 0x75dda + db $08 ; asm + ld a, $3 + ld [W_WHICHTRADE], a + ld a, $54 + call Predef + jp $24d7 + +INCBIN "baserom.gbc",$75de8,$8 Lab4Object: ; 0x75df0 (size=32) db $17 ; border tile @@ -22301,7 +29268,6 @@ Lab4Object: ; 0x75df0 (size=32) EVENT_DISP $4, $7, $2 ; CINNABAR_LAB_1 EVENT_DISP $4, $7, $3 ; CINNABAR_LAB_1 - Lab4Blocks: ; 16 INCBIN "maps/lab4.blk" @@ -22313,7 +29279,13 @@ CinnabarPokecenter_h: ; 0x75e20 to 0x75e2c (12 bytes) (id=171) dw $5e46 ; objects -INCBIN "baserom.gbc",$75e2c,$75e46 - $75e2c +INCBIN "baserom.gbc",$75e2c,$75e3b - $75e2c + +CinnabarPokecenterText1: ; 0x75e3a + TX_FAR _CinnabarPokecenterText1 + +INCBIN "baserom.gbc",$75e3b+4,$75e46-($75e3b+4) + CinnabarPokecenterObject: ; 0x75e46 (size=44) db $0 ; border tile @@ -22333,7 +29305,6 @@ CinnabarPokecenterObject: ; 0x75e46 (size=44) EVENT_DISP $7, $7, $3 EVENT_DISP $7, $7, $4 - CinnabarMart_h: ; 0x75e72 to 0x75e7e (12 bytes) (id=172) db $02 ; tileset db $04, $04 ; dimensions (y, x) @@ -22342,7 +29313,16 @@ CinnabarMart_h: ; 0x75e72 to 0x75e7e (12 bytes) (id=172) dw $5e91 ; objects -INCBIN "baserom.gbc",$75e7e,$75e91 - $75e7e +INCBIN "baserom.gbc",$75e7e,$75e87 - $75e7e + +CinnabarMartText2: ; 0x75e87 + TX_FAR _CinnabarMartText2 + db $50 + +CinnabarMartText3: ; 0x75e8c + TX_FAR _CinnabarMartText3 + db $50 + CinnabarMartObject: ; 0x75e91 (size=38) db $0 ; border tile @@ -22361,7 +29341,6 @@ CinnabarMartObject: ; 0x75e91 (size=38) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $7, $4 - CopycatsHouseF1_h: ; 0x75eb7 to 0x75ec3 (12 bytes) (id=175) db $01 ; tileset db $04, $04 ; dimensions (y, x) @@ -22370,7 +29349,25 @@ CopycatsHouseF1_h: ; 0x75eb7 to 0x75ec3 (12 bytes) (id=175) dw $5ee3 ; objects -INCBIN "baserom.gbc",$75ec3,$75ee3 - $75ec3 +INCBIN "baserom.gbc",$75ec3,$75ec6 - $75ec3 +CopycatsHouseF1Texts: ; 0x75ec6 + dw CopycatsHouseF1Text1, CopycatsHouseF1Text2, CopycatsHouseF1Text3 + +CopycatsHouseF1Text1: ; 0x75ecc + TX_FAR _CopycatsHouseF1Text1 + db $50 + +CopycatsHouseF1Text2: ; 0x75ed1 + TX_FAR _CopycatsHouseF1Text2 + db $50 + +CopycatsHouseF1Text3: ; 0x75ed6 + TX_FAR _CopycatsHouseF1Text3 + db $8 + ld a, $28 + call $13d0 + jp $24d7 + CopycatsHouseF1Object: ; 0x75ee3 (size=46) db $a ; border tile @@ -22391,7 +29388,25 @@ CopycatsHouseF1Object: ; 0x75ee3 (size=46) EVENT_DISP $4, $7, $3 EVENT_DISP $4, $1, $7 ; COPYCATS_HOUSE_2F -INCBIN "baserom.gbc",$75f11,$21e +INCBIN "baserom.gbc",$75f11,$760e0 - $75f11 +GaryText1: ; 0x760e0 + db $08 ; asm + ld a, [$d867] + bit 1, a + ld hl, $60f4 + jr z, .asm_17e9f ; 0x760e9 + ld hl, $6103 +.asm_17e9f ; 0x760ee + call PrintText + jp $24d7 + +INCBIN "baserom.gbc",$760f4,$14 + +GaryText2: ; 0x76108 + TX_FAR _GaryText2 + db $50 + +INCBIN "baserom.gbc",$7610d,$22 GaryObject: ; 0x7612f (size=48) db $3 ; border tile @@ -22413,7 +29428,6 @@ GaryObject: ; 0x7612f (size=48) EVENT_DISP $4, $0, $3 ; HALL_OF_FAME EVENT_DISP $4, $0, $4 ; HALL_OF_FAME - GaryBlocks: ; 16 INCBIN "maps/gary.blk" @@ -22425,7 +29439,14 @@ Loreli_h: ; 0x7616f to 0x7617b (12 bytes) (id=245) dw $6280 ; objects -INCBIN "baserom.gbc",$7617b,$76280 - $7617b +INCBIN "baserom.gbc",$7617b,$76262 - $7617b +LoreliText1: ; 0x76262 + db $08 ; asm + ld hl, $6255 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$7626c,$14 LoreliObject: ; 0x76280 (size=44) db $3 ; border tile @@ -22438,7 +29459,7 @@ LoreliObject: ; 0x76280 (size=44) db $0 ; signs db $1 ; people - db SPRITE_LORELEI, $2 + 4, $5 + 4, $ff, $d0, $41, $f4, $1 ; trainer + db SPRITE_LORELEI, $2 + 4, $5 + 4, $ff, $d0, $41, LORELEI + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $b, $4 ; INDIGO_PLATEAU_LOBBY @@ -22446,7 +29467,6 @@ LoreliObject: ; 0x76280 (size=44) EVENT_DISP $5, $0, $4 ; BRUNOS_ROOM EVENT_DISP $5, $0, $5 ; BRUNOS_ROOM - LoreliBlocks: ; 30 INCBIN "maps/loreli.blk" @@ -22458,7 +29478,14 @@ Bruno_h: ; 0x762ca to 0x762d6 (12 bytes) (id=246) dw $63d7 ; objects -INCBIN "baserom.gbc",$762d6,$763d7 - $762d6 +INCBIN "baserom.gbc",$762d6,$763b9 - $762d6 +BrunoText1: ; 0x763b9 + db $08 ; asm + ld hl, $63ac + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$763c3,$14 BrunoObject: ; 0x763d7 (size=44) db $3 ; border tile @@ -22471,7 +29498,7 @@ BrunoObject: ; 0x763d7 (size=44) db $0 ; signs db $1 ; people - db SPRITE_BRUNO, $2 + 4, $5 + 4, $ff, $d0, $41, $e9, $1 ; trainer + db SPRITE_BRUNO, $2 + 4, $5 + 4, $ff, $d0, $41, BRUNO + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $b, $4 ; LORELEIS_ROOM @@ -22479,7 +29506,6 @@ BrunoObject: ; 0x763d7 (size=44) EVENT_DISP $5, $0, $4 ; AGATHAS_ROOM EVENT_DISP $5, $0, $5 ; AGATHAS_ROOM - BrunoBlocks: ; 30 INCBIN "maps/bruno.blk" @@ -22491,7 +29517,14 @@ Agatha_h: ; 0x76421 to 0x7642d (12 bytes) (id=247) dw $6534 ; objects -INCBIN "baserom.gbc",$7642d,$76534 - $7642d +INCBIN "baserom.gbc",$7642d,$76516 - $7642d +AgathaText1: ; 0x76516 + db $08 ; asm + ld hl, $6509 + call LoadTrainerHeader + jp $24d7 + +INCBIN "baserom.gbc",$76520,$14 AgathaObject: ; 0x76534 (size=44) db $0 ; border tile @@ -22504,7 +29537,7 @@ AgathaObject: ; 0x76534 (size=44) db $0 ; signs db $1 ; people - db SPRITE_AGATHA, $2 + 4, $5 + 4, $ff, $d0, $41, $f6, $1 ; trainer + db SPRITE_AGATHA, $2 + 4, $5 + 4, $ff, $d0, $41, AGATHA + $C8, $1 ; trainer ; warp-to EVENT_DISP $5, $b, $4 ; BRUNOS_ROOM @@ -22512,7 +29545,6 @@ AgathaObject: ; 0x76534 (size=44) EVENT_DISP $5, $0, $4 ; LANCES_ROOM EVENT_DISP $5, $0, $5 ; LANCES_ROOM - AgathaBlocks: ; 30 INCBIN "maps/agatha.blk" INCBIN "baserom.gbc",$7657e,$1a82 @@ -22990,7 +30022,6 @@ MoveSoundTable: db $a1,$00,$80 db $a1,$00,$80 - INCBIN "baserom.gbc",$79AAE,$79E16 - $79AAE TossBallAnimation: ; 5E16 @@ -23184,27 +30215,27 @@ INCBIN "baserom.gbc",$7C000,$4000 SECTION "bank20",DATA,BANK[$20] INCBIN "baserom.gbc",$80000,$800b1 - $80000 -_VictoryRoad3Text10: -_VictoryRoad3Text9: -_VictoryRoad3Text8: -_VictoryRoad3Text7: -_VictoryRoad2Text13: -_VictoryRoad2Text12: -_VictoryRoad2Text11: -_SeafoamIslands1Text2: -_SeafoamIslands1Text1: -_SeafoamIslands5Text2: -_SeafoamIslands5Text1: -_SeafoamIslands4Text6: -_SeafoamIslands4Text5: -_SeafoamIslands4Text4: -_SeafoamIslands4Text3: -_SeafoamIslands4Text2: -_SeafoamIslands4Text1: -_SeafoamIslands3Text2: -_SeafoamIslands3Text1: -_SeafoamIslands2Text2: -_SeafoamIslands2Text1: +_VictoryRoad3Text10: +_VictoryRoad3Text9: +_VictoryRoad3Text8: +_VictoryRoad3Text7: +_VictoryRoad2Text13: +_VictoryRoad2Text12: +_VictoryRoad2Text11: +_SeafoamIslands1Text2: +_SeafoamIslands1Text1: +_SeafoamIslands5Text2: +_SeafoamIslands5Text1: +_SeafoamIslands4Text6: +_SeafoamIslands4Text5: +_SeafoamIslands4Text4: +_SeafoamIslands4Text3: +_SeafoamIslands4Text2: +_SeafoamIslands4Text1: +_SeafoamIslands3Text2: +_SeafoamIslands3Text1: +_SeafoamIslands2Text2: +_SeafoamIslands2Text1: _FuchsiaHouse2Text3: _VictoryRoad1Text7: _VictoryRoad1Text6: @@ -23212,12 +30243,12 @@ _VictoryRoad1Text5: ; 0x800b1 db $0, "This requires", $4f db "STRENGTH to move!", $57 -_SaffronCityText19: -_CinnabarIslandText4: -_FuchsiaCityText14: -_VermilionCityText9: -_LavendarTownText6: -_CeruleanCityText14: +_SaffronCityText19: +_CinnabarIslandText4: +_FuchsiaCityText14: +_VermilionCityText9: +_LavenderTownText6: +_CeruleanCityText14: _PewterCityText8: _ViridianCityText11: ; 0x800d2 db $0, "All your item", $4f @@ -23697,8 +30728,6 @@ _SeafoamIslands5Text5: ; 0x880a8 db $0, "DANGER", $4f db "Fast current!", $57 -INCBIN "baserom.gbc",$880be,$0 - _AIBattleWithdrawText: db 1 dw $D04A @@ -23860,7 +30889,6 @@ _Char00Text: _Char55Text: db 0,$4B,"@@" - _DiglettsCaveRoute2Text1: ; 0x8a6a7 db $0, "I went to ROCK", $4f db "TUNNEL, but it's", $55 @@ -24270,8 +31298,6 @@ _BattleCenterMText1: ; 0x94b01 _TradeCenterMText1: ; 0x94b04 db $0, "!", $57 -INCBIN "baserom.gbc",$94b07,$0 - INCLUDE "text/mapRedsHouse1F.tx" INCLUDE "text/mapBluesHouse.tx" @@ -24321,8 +31347,13 @@ _SchoolText2: ; 0x95d40 db "the blackboard", $55 db "carefully!", $57 -_ViridianHouseText1: -INCBIN "baserom.gbc",$95d71,$95dc7 - $95d71 +_ViridianHouseText1: ; 0x95d71 + db $0, "Coming up with", $4f + db "nicknames is fun,", $55 + db "but hard.", $51 + db "Simple names are", $4f + db "the easiest to", $55 + db "remember.", $57 _ViridianHouseText2: ; 0x95dc7 db $0, "My Daddy loves", $4f @@ -24373,23 +31404,13 @@ _MuseumF2Text7: ; 0x9694b INCBIN "baserom.gbc",$9697a,$1686 -;_ViridianHouseText1: ; 0x95d71 -; db $0, "Coming up with", $4f -; db "nicknames is fun,", $55 -; db "but hard.", $51 -; db "Simple names are", $4f -; db "the easiest to", $55 -; db "remember.", $57 -; -;inc-BIN "baserom.gbc",$95dc7,$2239 - SECTION "bank26",DATA,BANK[$26] + INCBIN "baserom.gbc",$98000,$984ce - $98000 _PewterHouse1Text1: ; 0x984ce db $0, "NIDORAN: Bowbow!@@" - _PewterHouse1Text2: ; 0x984e1 db $0, "NIDORAN sit!", $57 @@ -24553,7 +31574,6 @@ INCBIN "baserom.gbc",$9999f,$99f72 - $9999f _LavenderHouse1Text3: ; 0x99f72 db $0, "PSYDUCK: Gwappa!@@" - _LavenderHouse1Text4: ; 0x99f85 db $0, "NIDORINO: Gaoo!@@" @@ -24656,7 +31676,6 @@ _VermilionHouse1Text1: ; 0x9c449 _VermilionHouse1Text2: ; 0x9c488 db $0, "PIDGEY: Kurukkoo!@@" - _VermilionHouse1Text3: ; 0x9c49c db $0, "Dear PIPPI, I hope", $4f db "to see you soon.", $51 @@ -24791,7 +31810,7 @@ _CeladonMart4Text4: ; 0x9cb56 INCBIN "baserom.gbc",$9cbb5,$9cd97 - $9cbb5 -_CeladonMart5Text1: ; 0x9cd97 +_CeladonMartRoofText1: ; 0x9cd97 db $0, "My sister is a", $4f db "trainer, believe", $55 db "it or not.", $51 @@ -24801,7 +31820,7 @@ _CeladonMart5Text1: ; 0x9cd97 INCBIN "baserom.gbc",$9cdee,$9ce50 - $9cdee -_CeladonMart5Text6: ; 0x9ce50 +_CeladonMartRoofText6: ; 0x9ce50 db $0, "ROOFTOP SQUARE:", $4f db "VENDING MACHINES", $57 @@ -24810,7 +31829,6 @@ INCBIN "baserom.gbc",$9ce72,$9ceee - $9ce72 _CeladonMansion1Text1: ; 0x9ceee db $0, "MEOWTH: Meow!@@" - _CeladonMansion1Text2: ; 0x9cefe db $0, "My dear #MON", $4f db "keep me company.", $51 @@ -24821,12 +31839,10 @@ _CeladonMansion1Text3: ; 0x9cf3c db $0, "CLEFAIRY: Pi", $4f db "pippippi!@@" - _CeladonMansion1Text4: ; 0x9cf55 db $0, "NIDORAN: Kya", $4f db "kyaoo!@@" - _CeladonMansion1Text5: ; 0x9cf6b db $0, "CELADON MANSION", $4f db "Manager's Suite", $57 @@ -24934,7 +31950,7 @@ _CeladonGameCornerText8: ; 0x9dc06 INCBIN "baserom.gbc",$9dc33,$9ddff - $9dc33 -_CeladonHouseText1: ; 0x9ddff +_CeladonMart5Text1: ; 0x9ddff db $0, "#MON ability", $4f db "enhancers can be", $55 db "bought only here.", $51 @@ -24944,7 +31960,7 @@ _CeladonHouseText1: ; 0x9ddff db "Use CARBOS to", $4f db "increase SPEED.", $57 -_CeladonHouseText2: ; 0x9de79 +_CeladonMart5Text2: ; 0x9de79 db $0, "I'm here for", $4f db "#MON ability", $55 db "enhancers.", $51 @@ -24953,7 +31969,7 @@ _CeladonHouseText2: ; 0x9de79 db "IRON increases", $4f db "DEFENSE!", $57 -_CeladonHouseText5: ; 0x9ded6 +_CeladonMart5Text5: ; 0x9ded6 db $0, "5F: DRUG STORE", $57 _CeladonPrizeRoomText1: ; 0x9dee6 @@ -25170,7 +32186,7 @@ _Lab3Text5: ; 0xa10d8 INCBIN "baserom.gbc",$a10e8,$a12de - $a10e8 -_CinnabarPokecenterText2: +_CinnabarPokecenterText2: _CinnabarPokecenterText1: ; 0xa12de db $0, "You can cancel", $4f db "evolution.", $51 @@ -25267,7 +32283,6 @@ _SaffronHouse1Text1: ; 0xa2305 _SaffronHouse1Text2: ; 0xa2352 db $0, "PIDGEY: Kurukkoo!@@" - _SaffronHouse1Text3: ; 0xa2366 db $0, "The COPYCAT is", $4f db "cute! I'm getting", $55 @@ -25489,7 +32504,7 @@ _CeruleanCityText17: ; 0xa5445 INCBIN "baserom.gbc",$a5482,$a5506 - $a5482 -_LavendarTownText2: ; 0xa5506 +_LavenderTownText2: ; 0xa5506 db $0, "This town is known", $4f db "as the grave site", $55 db "of #MON.", $51 @@ -25497,7 +32512,7 @@ _LavendarTownText2: ; 0xa5506 db "are held in", $55 db "#MON TOWER.", $57 -_LavendarTownText3: ; 0xa555f +_LavenderTownText3: ; 0xa555f db $0, "GHOSTs appeared", $4f db "in #MON TOWER.", $51 db "I think they're", $4f @@ -25505,22 +32520,22 @@ _LavendarTownText3: ; 0xa555f db "#MON that the", $55 db "ROCKETs killed.", $57 -_LavendarTownText4: ; 0xa55bb +_LavenderTownText4: ; 0xa55bb db $0, "LAVENDER TOWN", $4f db "The Noble Purple", $55 db "Town", $57 -_LavendarTownText5: ; 0xa55e0 +_LavenderTownText5: ; 0xa55e0 db $0, "New SILPH SCOPE!", $51 db "Make the Invisible", $4f db "Plain to See!", $51 db "SILPH CO.", $57 -_LavendarTownText8: ; 0xa561d +_LavenderTownText8: ; 0xa561d db $0, "LAVENDER VOLUNTEER", $4f db "#MON HOUSE", $57 -_LavendarTownText9: ; 0xa563c +_LavenderTownText9: ; 0xa563c db $0, "May the Souls of", $4f db "#MON Rest Easy", $55 db "#MON TOWER", $57 @@ -25621,7 +32636,6 @@ _CeladonCityText7: ; 0xa5c30 db $0, "POLIWRATH: Ribi", $4f db "ribit!@@" - _CeladonCityText8: ; 0xa5c49 db $0, "What are you", $4f db "staring at?", $57 @@ -25699,7 +32713,7 @@ _FuchsiaCityText2: ; 0xa5ede _FuchsiaCityText3: ; 0xa5f3e db $0, "ERIK: Where's", $4f - db "SARA? I said I'd", $55 ; XXX fix textpre.awk + db "SARA? I said I'd", $55 db "meet her here.", $57 _FuchsiaCityText4: ; 0xa5f6b @@ -25820,7 +32834,6 @@ _SaffronCityText11: ; 0xa6475 _SaffronCityText12: ; 0xa64d6 db $0, "PIDGEOT: Bi bibii!@@" - _SaffronCityText13: ; 0xa64eb db $0, "I saw ROCKET", $4f db "BOSS escaping", $55 @@ -25885,8 +32898,6 @@ _SaffronCityText25: ; 0xa66f5 db "Release to be", $4f db "determined...", $57 -INCBIN "baserom.gbc",$a6729,$0 - _ItemUseBallText00: db 0,"It dodged the",$4F db "thrown BALL!",$51 |