If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Dragon Warrior II (NES)/ROM map/ASM bank 02: Difference between revisions
Jump to navigation
Jump to search
m (Hawk moved page Dragon Warrior II//ROM map/ASM bank 02 to Dragon Warrior II (NES)//ROM map/ASM bank 02) |
m (Hawk moved page Dragon Warrior II (NES)//ROM map/ASM bank 02 to Dragon Warrior II (NES)/ROM map/ASM bank 02) |
(No difference)
|
Latest revision as of 13:03, 31 January 2024
This is a sub-page of Dragon Warrior II (NES)/ROM map.
- bank 0x02 of 16 starts at file address 0x008010
; code bytes: $0A26 (15.86% of bytes in this ROM bank) ; data bytes: $34C5 (82.45% of bytes in this ROM bank) ; pcm bytes: $0000 (0.00% of bytes in this ROM bank) ; chr bytes: $0000 (0.00% of bytes in this ROM bank) ; free bytes: $00A3 (0.99% of bytes in this ROM bank) ; unknown bytes: $0072 (0.70% of bytes in this ROM bank) ; $3EEB bytes last seen in RAM bank $8000 - $BFFF (100.00% of bytes seen in this ROM bank, 98.31% of bytes in this ROM bank): ; $0A26 code bytes (16.13% of bytes seen in this RAM bank, 15.86% of bytes in this ROM bank) ; $34C5 data bytes (83.87% of bytes seen in this RAM bank, 82.45% of bytes in this ROM bank) ; PRG Bank 0x02: town/dungeon maps, warp data, NPC data, code for building town/dungeon maps and moving NPCs around, most of the main script text engine, including its dictionary, some control code handlers, the main script pointers, and the main script overflow from bank 5 ; [bank start] -> data ; -> $02:$B68F: handler for control code #$FD ; possible external indexed data load target (from $0F:$F3ED, $0F:$FF28) ; external indirect data load target (via $0F:$FBAB) 0x008010|$02:$8000:8F ; possible external indexed data load target (from $0F:$F3F2, $0F:$FF2D) 0x008011|$02:$8001: B6 ; $02:$B68F; handler for control code #$FD ; external indirect data load target (via $0F:$F78A) 0x008012|$02:$8002:41 B1 ; $02:$B141 ; -> $02:$B393: read the next string byte; preserves X and Y ; indirect data load target (via $BE03) 0x008014|$02:$8004:93 B3 ; $02:$B393; read the next string byte; preserves X and Y ; -> $02:$B292: looks like this determines NPC's post-Malroth text ; external indirect data load target (via $0F:$D33F) 0x008016|$02:$8006:92 B2 ; $02:$B292; looks like this determines NPC's post-Malroth text 0x008018|$02:$8008:0E B1 ; $02:$B10E ; -> $02:$B677: CLC if end of word, SEC otherwise ; external indirect data load target (via $0F:$FB4D, $0F:$FB7D, $0F:$FBD9) 0x00801A|$02:$800A:77 B6 ; $02:$B677; CLC if end of word, SEC otherwise ; external indirect data load target (via $0F:$FB9E, $0F:$FBA6, $0F:$FBB0) 0x00801C|$02:$800C:95 B6 ; $02:$B695 ; -> $02:$B687: if menu current column < #$16, CLC and RTS, otherwise do stuff ; external indirect data load target (via $0F:$FB61, $0F:$FD40) 0x00801E|$02:$800E:87 B6 ; $02:$B687; if menu current column < #$16, CLC and RTS, otherwise do stuff ; external indirect data load target (via $0F:$FBA2) 0x008020|$02:$8010:10 B7 ; $02:$B710 ; -> $02:$B351: looks like more NPC data? ; indirect data load target (via $B1C3) ; external indirect data load target (via $0F:$E4EF, $0F:$E4FB) 0x008022|$02:$8012:51 B3 ; $02:$B351; looks like more NPC data? ; -> $02:$BE00: read the next text token and interpolate any variable control codes; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A ; external indirect data load target (via $0F:$FBF7) 0x008024|$02:$8014:00 BE ; $02:$BE00; read the next text token and interpolate any variable control codes; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A ; -> $02:$BEBC: copy $6119,X to $60F1,X until we read a #$FA ; external indirect data load target (via $07:$87F4) 0x008026|$02:$8016:BC BE ; $02:$BEBC; copy $6119,X to $60F1,X until we read a #$FA ; map header info (exterior border tile ID, width, height, pointer low byte, pointer high byte, ?, ?, palette) ; external indirect data load target (via $0F:$E3FB) ; indirect data load target 0x008028|$02:$8018:01 17 17 89 8B 01 00 0D ; Map ID #$00: Fake Midenhall 0x008030|$02:$8020:04 FF FF 00 80 00 00 00 ; Map ID #$01: World Map 0x008038|$02:$8028:20 09 09 40 88 00 00 0D ; Map ID #$02: Midenhall 2F 0x008040|$02:$8030:01 17 17 89 8B 01 00 0D ; Map ID #$03: Midenhall 1F 0x008048|$02:$8038:05 05 09 52 88 00 00 0D ; Map ID #$04: Midenhall B1 0x008050|$02:$8040:01 17 17 6A 88 01 00 0D ; Map ID #$05: Leftwyne 0x008058|$02:$8048:03 19 19 22 89 01 00 0D ; Map ID #$06: Cannock 0x008060|$02:$8050:06 17 17 CC 89 01 00 0D ; Map ID #$07: Hamlin 0x008068|$02:$8058:04 07 07 9A 8A 00 00 0D ; Map ID #$08: Hamlin Waterway 0x008070|$02:$8060:08 13 13 B6 8A 01 00 0D ; Map ID #$09: Moonbrooke 0x008078|$02:$8068:05 05 06 1F 8C 00 00 0D ; Map ID #$0A: Moonbrooke B1 0x008080|$02:$8070:01 19 19 38 8C 01 00 0D ; Map ID #$0B: Lianport 0x008088|$02:$8078:01 1D 13 17 8D 01 00 0D ; Map ID #$0C: Tantegel 0x008090|$02:$8080:20 07 07 08 8E 00 00 0D ; Map ID #$0D: Tantegel Town 2F 0x008098|$02:$8088:20 07 07 1C 8E 00 00 0D ; Map ID #$0E: Tantegel Castle 2F 0x0080A0|$02:$8090:01 17 17 2B 8E 01 00 0D ; Map ID #$0F: Osterfair 0x0080A8|$02:$8098:01 17 17 04 8F 01 00 0D ; Map ID #$10: Zahan 0x0080B0|$02:$80A0:03 13 1F BF 8F 01 00 0D ; Map ID #$11: Tuhn 0x0080B8|$02:$80A8:02 05 05 65 90 00 00 0D ; Map ID #$12: Tuhn Watergate 0x0080C0|$02:$80B0:06 09 09 74 90 01 00 0D ; Map ID #$13: Wellgarth 0x0080C8|$02:$80B8:05 17 18 9B 90 01 00 0D ; Map ID #$14: Wellgarth Underground 0x0080D0|$02:$80C0:03 19 19 68 91 01 00 0D ; Map ID #$15: Beran 0x0080D8|$02:$80C8:08 19 19 3B 92 01 00 0D ; Map ID #$16: Hargon's Castle 1F 0x0080E0|$02:$80D0:21 0F 0D F9 92 00 00 0D ; Map ID #$17: Hargon's Castle 7F 0x0080E8|$02:$80D8:04 13 13 A3 94 00 00 0D ; Map ID #$18: Charlock Castle B8 0x0080F0|$02:$80E0:05 09 09 2D 93 00 00 0D ; Map ID #$19: Shrine NW of Midenhall 0x0080F8|$02:$80E8:06 07 0B 4C 93 01 00 0D ; Map ID #$1A: Shrine SW of Cannock 0x008100|$02:$80F0:24 05 05 90 94 01 00 0D ; Map ID #$1B: Shrine NW of Lianport 0x008108|$02:$80F8:05 07 07 78 93 00 00 0D ; Map ID #$1C: Shrine SE of Rimuldar 0x008110|$02:$8100:03 09 05 8F 93 00 00 0D ; Map ID #$1D: Shrine NW of Beran 0x008118|$02:$8108:01 09 05 A8 93 00 00 0D ; Map ID #$1E: Shrine NW of Zahan 0x008120|$02:$8110:03 07 07 C1 93 00 00 0D ; Map ID #$1F: Rhone Shrine 0x008128|$02:$8118:05 07 05 E5 93 01 00 0D ; Map ID #$20: Shrine SW of Moonbrooke 0x008130|$02:$8120:08 07 07 07 94 01 00 0D ; Map ID #$21: Rhone Cave Shrine 0x008138|$02:$8128:02 09 05 23 94 01 00 0D ; Map ID #$22: Shrine S of Midenhall 0x008140|$02:$8130:04 03 03 40 94 00 00 0D ; Map ID #$23: Rubiss' Shrine B1 0x008148|$02:$8138:04 01 01 4B 94 00 00 0D ; Map ID #$24: Rubiss' Shrine B2 0x008150|$02:$8140:04 01 01 53 94 00 00 0D ; Map ID #$25: Rubiss' Shrine B3 0x008158|$02:$8148:04 01 01 5B 94 00 00 0D ; Map ID #$26: Rubiss' Shrine B4 0x008160|$02:$8150:04 01 01 63 94 00 00 0D ; Map ID #$27: Rubiss' Shrine B5 0x008168|$02:$8158:04 01 01 6B 94 00 00 0D ; Map ID #$28: Rubiss' Shrine B6 0x008170|$02:$8160:02 05 05 73 94 00 00 0D ; Map ID #$29: Rubiss' Shrine B7 0x008178|$02:$8168:05 01 01 86 94 01 00 0D ; Map ID #$2A: Shrine W of Zahan 0x008180|$02:$8170:24 05 15 9F 96 01 00 1A ; Map ID #$2B: Cave to Hamlin 0x008188|$02:$8178:24 0F 0F DA 95 01 00 34 ; Map ID #$2C: Lake Cave B1 0x008190|$02:$8180:24 0D 0F 3B 96 01 00 34 ; Map ID #$2D: Lake Cave B2 0x008198|$02:$8188:24 0D 0D BF 96 01 00 4E ; Map ID #$2E: Sea Cave B1 0x0081A0|$02:$8190:24 11 13 17 97 01 00 4E ; Map ID #$2F: Sea Cave B2 0x0081A8|$02:$8198:24 09 07 B4 97 01 00 4E ; Map ID #$30: Sea Cave B3-1 0x0081B0|$02:$81A0:24 0F 0F D9 97 01 00 4E ; Map ID #$31: Sea Cave B3-2 0x0081B8|$02:$81A8:24 11 11 81 87 01 00 4E ; Map ID #$32: Sea Cave B4 0x0081C0|$02:$81B0:24 0D 07 12 88 01 00 4E ; Map ID #$33: Sea Cave B5 0x0081C8|$02:$81B8:24 0D 0D D9 86 01 00 1A ; Map ID #$34: Charlock Castle B1/B2 0x0081D0|$02:$81C0:24 0B 0F 28 87 01 00 1A ; Map ID #$35: Charlock Castle B3/B4-1/B5-1 0x0081D8|$02:$81C8:24 0B 09 5B 87 01 00 1A ; Map ID #$36: Charlock Castle B4-2/B5-2/B6 0x0081E0|$02:$81D0:24 09 09 3F 98 00 00 34 ; Map ID #$37: Cave to Rhone B1 0x0081E8|$02:$81D8:24 0B 0B 4E 98 01 00 5B ; Map ID #$38: Cave to Rhone 1F 0x0081F0|$02:$81E0:24 1B 05 85 98 01 00 5B ; Map ID #$39: Cave to Rhone 2F-1 0x0081F8|$02:$81E8:24 1B 05 D3 98 01 00 5B ; Map ID #$3A: Cave to Rhone 2F-2 0x008200|$02:$81F0:24 0B 09 24 99 01 00 5B ; Map ID #$3B: Cave to Rhone 2F-3 0x008208|$02:$81F8:24 13 1B 59 99 01 00 5B ; Map ID #$3C: Cave to Rhone 3F 0x008210|$02:$8200:24 0F 11 50 9A 01 00 5B ; Map ID #$3D: Cave to Rhone 4F 0x008218|$02:$8208:24 11 13 76 9A 01 00 5B ; Map ID #$3E: Cave to Rhone 5F 0x008220|$02:$8210:24 13 17 27 95 01 00 5B ; Map ID #$3F: Cave to Rhone 6F 0x008228|$02:$8218:24 11 13 FC 9A 01 00 34 ; Map ID #$40: Spring of Bravery 0x008230|$02:$8220:24 05 19 00 00 00 00 5B ; Map ID #$41: unused? 0x008238|$02:$8228:24 0F 13 00 00 00 00 5B ; Map ID #$42: unused? 0x008240|$02:$8230:24 03 0D 80 9B 00 00 1A ; Map ID #$43: Cave to Rimuldar 0x008248|$02:$8238:28 0B 09 8A 9B 01 00 27 ; Map ID #$44: Hargon's Castle 2F 0x008250|$02:$8240:28 09 09 A7 9B 01 00 27 ; Map ID #$45: Hargon's Castle 3F 0x008258|$02:$8248:28 09 09 CF 9B 01 00 27 ; Map ID #$46: Hargon's Castle 4F 0x008260|$02:$8250:28 0B 07 F1 9B 01 00 27 ; Map ID #$47: Hargon's Castle 5F 0x008268|$02:$8258:28 0D 06 19 9C 01 00 27 ; Map ID #$48: Hargon's Castle 6F 0x008270|$02:$8260:28 0B 0B 3B 9C 01 00 41 ; Map ID #$49: Moon Tower 1F 0x008278|$02:$8268:28 0B 0B 83 9C 01 00 27 ; Map ID #$4A: Moon Tower 2F 0x008280|$02:$8270:28 09 09 CE 9C 01 00 27 ; Map ID #$4B: Moon Tower 3F 0x008288|$02:$8278:28 07 07 FD 9C 01 00 27 ; Map ID #$4C: Moon Tower 4F 0x008290|$02:$8280:28 05 05 20 9D 01 00 27 ; Map ID #$4D: Moon Tower 5F 0x008298|$02:$8288:28 05 03 3E 9D 00 00 27 ; Map ID #$4E: Moon Tower 6F 0x0082A0|$02:$8290:28 03 03 4A 9D 00 00 27 ; Map ID #$4F: Moon Tower 7F 0x0082A8|$02:$8298:28 15 15 54 9D 01 00 41 ; Map ID #$50: Lighthouse 1F 0x0082B0|$02:$82A0:28 11 11 AF 9D 01 00 27 ; Map ID #$51: Lighthouse 2F 0x0082B8|$02:$82A8:28 0F 0F 3B 9E 01 00 27 ; Map ID #$52: Lighthouse 3F 0x0082C0|$02:$82B0:28 0D 0D AE 9E 01 00 27 ; Map ID #$53: Lighthouse 4F 0x0082C8|$02:$82B8:28 0D 0D 12 9F 01 00 27 ; Map ID #$54: Lighthouse 5F 0x0082D0|$02:$82C0:28 09 0D 7A 9F 01 00 27 ; Map ID #$55: Lighthouse 6F 0x0082D8|$02:$82C8:28 09 09 B5 9F 01 00 27 ; Map ID #$56: Lighthouse 7F 0x0082E0|$02:$82D0:28 07 07 DC 9F 01 00 27 ; Map ID #$57: Lighthouse 8F 0x0082E8|$02:$82D8:28 0B 0B F4 9F 00 00 41 ; Map ID #$58: Wind Tower 1F 0x0082F0|$02:$82E0:28 0B 0B 17 A0 00 00 27 ; Map ID #$59: Wind Tower 2F 0x0082F8|$02:$82E8:28 0B 0B 3C A0 00 00 27 ; Map ID #$5A: Wind Tower 3F 0x008300|$02:$82F0:28 09 09 60 A0 00 00 27 ; Map ID #$5B: Wind Tower 4F 0x008308|$02:$82F8:28 09 09 7E A0 00 00 27 ; Map ID #$5C: Wind Tower 5F 0x008310|$02:$8300:28 09 09 9A A0 00 00 27 ; Map ID #$5D: Wind Tower 6F 0x008318|$02:$8308:28 05 05 C1 A0 00 00 27 ; Map ID #$5E: Wind Tower 7F 0x008320|$02:$8310:28 05 05 D3 A0 00 00 27 ; Map ID #$5F: Wind Tower 8F 0x008328|$02:$8318:28 07 07 E7 A0 00 00 41 ; Map ID #$60: Dragon Horn South 1F 0x008330|$02:$8320:28 07 07 FF A0 00 00 27 ; Map ID #$61: Dragon Horn South 2F 0x008338|$02:$8328:28 07 07 15 A1 00 00 27 ; Map ID #$62: Dragon Horn South 3F 0x008340|$02:$8330:28 07 07 2B A1 00 00 27 ; Map ID #$63: Dragon Horn South 4F 0x008348|$02:$8338:28 07 07 41 A1 00 00 27 ; Map ID #$64: Dragon Horn South 5F 0x008350|$02:$8340:28 05 05 57 A1 00 00 27 ; Map ID #$65: Dragon Horn South 6F 0x008358|$02:$8348:28 07 07 68 A1 00 00 41 ; Map ID #$66: Dragon Horn North 1F 0x008360|$02:$8350:28 07 07 7F A1 00 00 27 ; Map ID #$67: Dragon Horn North 2F 0x008368|$02:$8358:28 07 07 94 A1 00 00 27 ; Map ID #$68: Dragon Horn North 3F 0x008370|$02:$8360:28 07 07 A9 A1 00 00 27 ; Map ID #$69: Dragon Horn North 4F 0x008378|$02:$8368:28 07 07 BE A1 00 00 27 ; Map ID #$6A: Dragon Horn North 5F 0x008380|$02:$8370:28 07 07 D3 A1 00 00 27 ; Map ID #$6B: Dragon Horn North 6F 0x008388|$02:$8378:28 07 07 E8 A1 00 00 27 ; Map ID #$6C: Dragon Horn North 7F ; data -> unknown 0x008390|$02:$8380:77 ; INVALID OPCODE 0x008391|$02:$8381:77 ; INVALID OPCODE 0x008392|$02:$8382:5F ; INVALID OPCODE 0x008393|$02:$8383:5F ; INVALID OPCODE 0x008394|$02:$8384:00 ; BRK 0x008395|$02:$8385:77 ; INVALID OPCODE 0x008396|$02:$8386:77 ; INVALID OPCODE 0x008397|$02:$8387:6A ; ROR 0x008398|$02:$8388:5F ; INVALID OPCODE 0x008399|$02:$8389:00 ; BRK 0x00839A|$02:$838A:77 ; INVALID OPCODE 0x00839B|$02:$838B:77 ; INVALID OPCODE 0x00839C|$02:$838C:5F ; INVALID OPCODE 0x00839D|$02:$838D:6A ; ROR 0x00839E|$02:$838E:00 ; BRK 0x00839F|$02:$838F:77 ; INVALID OPCODE 0x0083A0|$02:$8390:77 ; INVALID OPCODE 0x0083A1|$02:$8391:6A ; ROR 0x0083A2|$02:$8392:6A ; ROR 0x0083A3|$02:$8393:00 ; BRK 0x0083A4|$02:$8394:77 ; INVALID OPCODE 0x0083A5|$02:$8395:7C ; INVALID OPCODE 0x0083A6|$02:$8396:5F ; INVALID OPCODE 0x0083A7|$02:$8397:7B ; INVALID OPCODE 0x0083A8|$02:$8398:00 ; BRK 0x0083A9|$02:$8399:77 ; INVALID OPCODE 0x0083AA|$02:$839A:7C ; INVALID OPCODE 0x0083AB|$02:$839B:6A ; ROR 0x0083AC|$02:$839C:7B ; INVALID OPCODE 0x0083AD|$02:$839D:00 ; BRK 0x0083AE|$02:$839E:5F ; INVALID OPCODE 0x0083AF|$02:$839F:7B ; INVALID OPCODE 0x0083B0|$02:$83A0:5F ; INVALID OPCODE 0x0083B1|$02:$83A1:7B ; INVALID OPCODE 0x0083B2|$02:$83A2:00 ; BRK 0x0083B3|$02:$83A3:5F ; INVALID OPCODE 0x0083B4|$02:$83A4:7B ; INVALID OPCODE 0x0083B5|$02:$83A5:7D 7E 00 ; ADC $007E,X 0x0083B6|$02:$83A6:7E 00 77 ; ROR $7700,X 0x0083B7|$02:$83A7:00 ; BRK 0x0083B8|$02:$83A8:77 ; INVALID OPCODE 0x0083B9|$02:$83A9:7C ; INVALID OPCODE 0x0083BA|$02:$83AA:6B ; INVALID OPCODE 0x0083BB|$02:$83AB:7B ; INVALID OPCODE 0x0083BC|$02:$83AC:00 ; BRK 0x0083BD|$02:$83AD:77 ; INVALID OPCODE 0x0083BE|$02:$83AE:77 ; INVALID OPCODE 0x0083BF|$02:$83AF:6B ; INVALID OPCODE 0x0083C0|$02:$83B0:5F ; INVALID OPCODE 0x0083C1|$02:$83B1:00 ; BRK 0x0083C2|$02:$83B2:77 ; INVALID OPCODE 0x0083C3|$02:$83B3:77 ; INVALID OPCODE 0x0083C4|$02:$83B4:5F ; INVALID OPCODE 0x0083C5|$02:$83B5:6B ; INVALID OPCODE 0x0083C6|$02:$83B6:00 ; BRK 0x0083C7|$02:$83B7:77 ; INVALID OPCODE 0x0083C8|$02:$83B8:77 ; INVALID OPCODE 0x0083C9|$02:$83B9:6B ; INVALID OPCODE 0x0083CA|$02:$83BA:6B ; INVALID OPCODE 0x0083CB|$02:$83BB:00 ; BRK 0x0083CC|$02:$83BC:77 ; INVALID OPCODE 0x0083CD|$02:$83BD:77 ; INVALID OPCODE 0x0083CE|$02:$83BE:6B ; INVALID OPCODE 0x0083CF|$02:$83BF:6A ; ROR 0x0083D0|$02:$83C0:00 ; BRK 0x0083D1|$02:$83C1:77 ; INVALID OPCODE 0x0083D2|$02:$83C2:77 ; INVALID OPCODE 0x0083D3|$02:$83C3:6A ; ROR 0x0083D4|$02:$83C4:6B ; INVALID OPCODE 0x0083D5|$02:$83C5:00 ; BRK 0x0083D6|$02:$83C6:5F ; INVALID OPCODE 0x0083D7|$02:$83C7:5F ; INVALID OPCODE 0x0083D8|$02:$83C8:5F ; INVALID OPCODE 0x0083D9|$02:$83C9:5F ; INVALID OPCODE 0x0083DA|$02:$83CA:00 ; BRK ; unknown -> data ; external indirect data load target (via $0F:$DEBD, $0F:$F93F) ; indirect data load target 0x0083DB|$02:$83CB:C4 ; indirect data load target 0x0083DC|$02:$83CC:C8 ; indirect data load target 0x0083DD|$02:$83CD:C3 ; indirect data load target 0x0083DE|$02:$83CE:C7 ; indirect data load target 0x0083DF|$02:$83CF:02 ; indirect data load target 0x0083E0|$02:$83D0:90 ; indirect data load target 0x0083E1|$02:$83D1:90 ; indirect data load target 0x0083E2|$02:$83D2:90 ; indirect data load target 0x0083E3|$02:$83D3:90 ; indirect data load target 0x0083E4|$02:$83D4:03 ; indirect data load target 0x0083E5|$02:$83D5:91 ; indirect data load target 0x0083E6|$02:$83D6:91 ; indirect data load target 0x0083E7|$02:$83D7:91 ; indirect data load target 0x0083E8|$02:$83D8:91 ; indirect data load target 0x0083E9|$02:$83D9:51 ; indirect data load target 0x0083EA|$02:$83DA:A2 ; indirect data load target 0x0083EB|$02:$83DB:A2 ; indirect data load target 0x0083EC|$02:$83DC:9F ; indirect data load target 0x0083ED|$02:$83DD:9F ; indirect data load target 0x0083EE|$02:$83DE:53 ; indirect data load target 0x0083EF|$02:$83DF:A1 ; indirect data load target 0x0083F0|$02:$83E0:A0 ; indirect data load target 0x0083F1|$02:$83E1:A0 ; indirect data load target 0x0083F2|$02:$83E2:A1 ; indirect data load target 0x0083F3|$02:$83E3:40 ; indirect data load target 0x0083F4|$02:$83E4:94 ; indirect data load target 0x0083F5|$02:$83E5:96 ; indirect data load target 0x0083F6|$02:$83E6:93 ; indirect data load target 0x0083F7|$02:$83E7:95 ; indirect data load target 0x0083F8|$02:$83E8:F2 ; indirect data load target 0x0083F9|$02:$83E9:BE ; indirect data load target 0x0083FA|$02:$83EA:C0 ; indirect data load target 0x0083FB|$02:$83EB:BD ; indirect data load target 0x0083FC|$02:$83EC:BF ; indirect data load target 0x0083FD|$02:$83ED:03 ; indirect data load target 0x0083FE|$02:$83EE:9C ; indirect data load target 0x0083FF|$02:$83EF:9E ; indirect data load target 0x008400|$02:$83F0:9B ; indirect data load target 0x008401|$02:$83F1:9D ; indirect data load target 0x008402|$02:$83F2:61 ; indirect data load target 0x008403|$02:$83F3:92 ; indirect data load target 0x008404|$02:$83F4:92 ; indirect data load target 0x008405|$02:$83F5:92 ; indirect data load target 0x008406|$02:$83F6:92 ; indirect data load target 0x008407|$02:$83F7:73 ; indirect data load target 0x008408|$02:$83F8:B6 ; indirect data load target 0x008409|$02:$83F9:B8 ; indirect data load target 0x00840A|$02:$83FA:B5 ; indirect data load target 0x00840B|$02:$83FB:B7 ; indirect data load target 0x00840C|$02:$83FC:00 ; indirect data load target 0x00840D|$02:$83FD:DE ; indirect data load target 0x00840E|$02:$83FE:E0 ; indirect data load target 0x00840F|$02:$83FF:DD ; indirect data load target 0x008410|$02:$8400:DF ; indirect data load target 0x008411|$02:$8401:11 ; indirect data load target 0x008412|$02:$8402:DA ; indirect data load target 0x008413|$02:$8403:DC ; indirect data load target 0x008414|$02:$8404:D9 ; indirect data load target 0x008415|$02:$8405:DB ; indirect data load target 0x008416|$02:$8406:12 ; indirect data load target 0x008417|$02:$8407:98 ; indirect data load target 0x008418|$02:$8408:9A ; indirect data load target 0x008419|$02:$8409:97 ; indirect data load target 0x00841A|$02:$840A:99 ; indirect data load target 0x00841B|$02:$840B:12 ; indirect data load target 0x00841C|$02:$840C:BA ; indirect data load target 0x00841D|$02:$840D:BC ; indirect data load target 0x00841E|$02:$840E:B9 ; indirect data load target 0x00841F|$02:$840F:BB ; indirect data load target 0x008420|$02:$8410:00 ; indirect data load target 0x008421|$02:$8411:D2 ; indirect data load target 0x008422|$02:$8412:D4 ; indirect data load target 0x008423|$02:$8413:D1 ; indirect data load target 0x008424|$02:$8414:D3 ; indirect data load target 0x008425|$02:$8415:12 ; indirect data load target 0x008426|$02:$8416:D6 ; indirect data load target 0x008427|$02:$8417:D8 ; indirect data load target 0x008428|$02:$8418:D5 ; indirect data load target 0x008429|$02:$8419:D7 ; indirect data load target 0x00842A|$02:$841A:12 ; indirect data load target 0x00842B|$02:$841B:C2 ; indirect data load target 0x00842C|$02:$841C:C6 ; indirect data load target 0x00842D|$02:$841D:C1 ; indirect data load target 0x00842E|$02:$841E:C5 ; indirect data load target 0x00842F|$02:$841F:12 ; indirect data load target 0x008430|$02:$8420:CA ; indirect data load target 0x008431|$02:$8421:CE ; indirect data load target 0x008432|$02:$8422:C9 ; indirect data load target 0x008433|$02:$8423:CD ; indirect data load target 0x008434|$02:$8424:12 ; indirect data load target 0x008435|$02:$8425:CC ; indirect data load target 0x008436|$02:$8426:D0 ; indirect data load target 0x008437|$02:$8427:CB ; indirect data load target 0x008438|$02:$8428:CF ; indirect data load target 0x008439|$02:$8429:02 ; indirect data load target 0x00843A|$02:$842A:E2 ; indirect data load target 0x00843B|$02:$842B:E4 ; indirect data load target 0x00843C|$02:$842C:E1 ; indirect data load target 0x00843D|$02:$842D:E3 ; indirect data load target 0x00843E|$02:$842E:F0 ; indirect data load target 0x00843F|$02:$842F:A4 ; indirect data load target 0x008440|$02:$8430:A6 ; indirect data load target 0x008441|$02:$8431:A3 ; indirect data load target 0x008442|$02:$8432:A5 ; indirect data load target 0x008443|$02:$8433:40 ; indirect data load target 0x008444|$02:$8434:A8 ; indirect data load target 0x008445|$02:$8435:A6 ; indirect data load target 0x008446|$02:$8436:A7 ; indirect data load target 0x008447|$02:$8437:A5 ; indirect data load target 0x008448|$02:$8438:40 ; indirect data load target 0x008449|$02:$8439:A8 ; indirect data load target 0x00844A|$02:$843A:B0 ; indirect data load target 0x00844B|$02:$843B:A7 ; indirect data load target 0x00844C|$02:$843C:A9 ; indirect data load target 0x00844D|$02:$843D:40 ; indirect data load target 0x00844E|$02:$843E:AA ; indirect data load target 0x00844F|$02:$843F:A7 ; indirect data load target 0x008450|$02:$8440:A3 ; indirect data load target 0x008451|$02:$8441:A5 ; indirect data load target 0x008452|$02:$8442:40 ; indirect data load target 0x008453|$02:$8443:A5 ; indirect data load target 0x008454|$02:$8444:AB ; indirect data load target 0x008455|$02:$8445:A7 ; indirect data load target 0x008456|$02:$8446:A9 ; indirect data load target 0x008457|$02:$8447:40 ; indirect data load target 0x008458|$02:$8448:AA ; indirect data load target 0x008459|$02:$8449:A7 ; indirect data load target 0x00845A|$02:$844A:AC ; indirect data load target 0x00845B|$02:$844B:AD ; indirect data load target 0x00845C|$02:$844C:40 ; indirect data load target 0x00845D|$02:$844D:A5 ; indirect data load target 0x00845E|$02:$844E:A7 ; indirect data load target 0x00845F|$02:$844F:AE ; indirect data load target 0x008460|$02:$8450:AD ; indirect data load target 0x008461|$02:$8451:40 ; indirect data load target 0x008462|$02:$8452:A5 ; indirect data load target 0x008463|$02:$8453:AB ; indirect data load target 0x008464|$02:$8454:AE ; indirect data load target 0x008465|$02:$8455:AF ; indirect data load target 0x008466|$02:$8456:40 ; indirect data load target 0x008467|$02:$8457:B1 ; indirect data load target 0x008468|$02:$8458:A7 ; indirect data load target 0x008469|$02:$8459:A7 ; indirect data load target 0x00846A|$02:$845A:A5 ; indirect data load target 0x00846B|$02:$845B:40 ; indirect data load target 0x00846C|$02:$845C:A5 ; indirect data load target 0x00846D|$02:$845D:B2 ; indirect data load target 0x00846E|$02:$845E:A7 ; indirect data load target 0x00846F|$02:$845F:A5 ; indirect data load target 0x008470|$02:$8460:40 ; indirect data load target 0x008471|$02:$8461:A5 ; indirect data load target 0x008472|$02:$8462:A7 ; indirect data load target 0x008473|$02:$8463:A7 ; indirect data load target 0x008474|$02:$8464:B3 ; indirect data load target 0x008475|$02:$8465:40 ; indirect data load target 0x008476|$02:$8466:A5 ; indirect data load target 0x008477|$02:$8467:A7 ; indirect data load target 0x008478|$02:$8468:B4 ; indirect data load target 0x008479|$02:$8469:A5 ; indirect data load target 0x00847A|$02:$846A:40 ; external indirect data load target (via $0F:$DEBF, $0F:$F941) ; indirect data load target 0x00847B|$02:$846B:91 ; indirect data load target 0x00847C|$02:$846C:93 ; indirect data load target 0x00847D|$02:$846D:90 ; indirect data load target 0x00847E|$02:$846E:92 ; indirect data load target 0x00847F|$02:$846F:02 ; indirect data load target 0x008480|$02:$8470:94 ; indirect data load target 0x008481|$02:$8471:94 ; indirect data load target 0x008482|$02:$8472:94 ; indirect data load target 0x008483|$02:$8473:94 ; indirect data load target 0x008484|$02:$8474:03 ; indirect data load target 0x008485|$02:$8475:95 ; indirect data load target 0x008486|$02:$8476:95 ; indirect data load target 0x008487|$02:$8477:95 ; indirect data load target 0x008488|$02:$8478:95 ; indirect data load target 0x008489|$02:$8479:01 ; indirect data load target 0x00848A|$02:$847A:9D ; indirect data load target 0x00848B|$02:$847B:9F ; indirect data load target 0x00848C|$02:$847C:9C ; indirect data load target 0x00848D|$02:$847D:9E ; indirect data load target 0x00848E|$02:$847E:03 ; indirect data load target 0x00848F|$02:$847F:A1 ; indirect data load target 0x008490|$02:$8480:A0 ; indirect data load target 0x008491|$02:$8481:A0 ; indirect data load target 0x008492|$02:$8482:A1 ; indirect data load target 0x008493|$02:$8483:40 ; indirect data load target 0x008494|$02:$8484:D9 ; indirect data load target 0x008495|$02:$8485:DB ; indirect data load target 0x008496|$02:$8486:D9 ; indirect data load target 0x008497|$02:$8487:DB ; indirect data load target 0x008498|$02:$8488:F2 ; indirect data load target 0x008499|$02:$8489:C5 ; indirect data load target 0x00849A|$02:$848A:C7 ; indirect data load target 0x00849B|$02:$848B:C4 ; indirect data load target 0x00849C|$02:$848C:C6 ; indirect data load target 0x00849D|$02:$848D:03 ; indirect data load target 0x00849E|$02:$848E:D9 ; indirect data load target 0x00849F|$02:$848F:DB ; indirect data load target 0x0084A0|$02:$8490:D8 ; indirect data load target 0x0084A1|$02:$8491:DA ; indirect data load target 0x0084A2|$02:$8492:F2 ; indirect data load target 0x0084A3|$02:$8493:A4 ; indirect data load target 0x0084A4|$02:$8494:A4 ; indirect data load target 0x0084A5|$02:$8495:A4 ; indirect data load target 0x0084A6|$02:$8496:A4 ; indirect data load target 0x0084A7|$02:$8497:73 ; indirect data load target 0x0084A8|$02:$8498:C1 ; indirect data load target 0x0084A9|$02:$8499:C3 ; indirect data load target 0x0084AA|$02:$849A:C0 ; indirect data load target 0x0084AB|$02:$849B:C2 ; indirect data load target 0x0084AC|$02:$849C:00 ; indirect data load target 0x0084AD|$02:$849D:E2 ; indirect data load target 0x0084AE|$02:$849E:E4 ; indirect data load target 0x0084AF|$02:$849F:E1 ; indirect data load target 0x0084B0|$02:$84A0:E3 ; indirect data load target 0x0084B1|$02:$84A1:F2 ; indirect data load target 0x0084B2|$02:$84A2:DE ; indirect data load target 0x0084B3|$02:$84A3:E0 ; indirect data load target 0x0084B4|$02:$84A4:DD ; indirect data load target 0x0084B5|$02:$84A5:DF ; indirect data load target 0x0084B6|$02:$84A6:F1 ; indirect data load target 0x0084B7|$02:$84A7:CD ; indirect data load target 0x0084B8|$02:$84A8:CF ; indirect data load target 0x0084B9|$02:$84A9:CC ; indirect data load target 0x0084BA|$02:$84AA:CE ; indirect data load target 0x0084BB|$02:$84AB:12 ; indirect data load target 0x0084BC|$02:$84AC:BD ; indirect data load target 0x0084BD|$02:$84AD:BF ; indirect data load target 0x0084BE|$02:$84AE:BC ; indirect data load target 0x0084BF|$02:$84AF:BE ; indirect data load target 0x0084C0|$02:$84B0:F1 ; indirect data load target 0x0084C1|$02:$84B1:EA ; indirect data load target 0x0084C2|$02:$84B2:EC ; indirect data load target 0x0084C3|$02:$84B3:E9 ; indirect data load target 0x0084C4|$02:$84B4:EB ; indirect data load target 0x0084C5|$02:$84B5:F1 ; indirect data load target 0x0084C6|$02:$84B6:EE ; indirect data load target 0x0084C7|$02:$84B7:F0 ; indirect data load target 0x0084C8|$02:$84B8:ED ; indirect data load target 0x0084C9|$02:$84B9:EF ; indirect data load target 0x0084CA|$02:$84BA:F1 ; indirect data load target 0x0084CB|$02:$84BB:C9 ; indirect data load target 0x0084CC|$02:$84BC:CB ; indirect data load target 0x0084CD|$02:$84BD:C8 ; indirect data load target 0x0084CE|$02:$84BE:CA ; indirect data load target 0x0084CF|$02:$84BF:22 ; indirect data load target 0x0084D0|$02:$84C0:B1 ; indirect data load target 0x0084D1|$02:$84C1:B1 ; indirect data load target 0x0084D2|$02:$84C2:B1 ; indirect data load target 0x0084D3|$02:$84C3:B1 ; indirect data load target 0x0084D4|$02:$84C4:80 ; indirect data load target 0x0084D5|$02:$84C5:AE ; indirect data load target 0x0084D6|$02:$84C6:B0 ; indirect data load target 0x0084D7|$02:$84C7:AD ; indirect data load target 0x0084D8|$02:$84C8:AF ; indirect data load target 0x0084D9|$02:$84C9:F0 ; indirect data load target 0x0084DA|$02:$84CA:D1 ; indirect data load target 0x0084DB|$02:$84CB:D3 ; indirect data load target 0x0084DC|$02:$84CC:D0 ; indirect data load target 0x0084DD|$02:$84CD:D2 ; indirect data load target 0x0084DE|$02:$84CE:30 ; indirect data load target 0x0084DF|$02:$84CF:E6 ; indirect data load target 0x0084E0|$02:$84D0:E8 ; indirect data load target 0x0084E1|$02:$84D1:E5 ; indirect data load target 0x0084E2|$02:$84D2:E7 ; indirect data load target 0x0084E3|$02:$84D3:02 ; indirect data load target 0x0084E4|$02:$84D4:B2 ; indirect data load target 0x0084E5|$02:$84D5:B3 ; indirect data load target 0x0084E6|$02:$84D6:B2 ; indirect data load target 0x0084E7|$02:$84D7:B3 ; indirect data load target 0x0084E8|$02:$84D8:01 ; indirect data load target 0x0084E9|$02:$84D9:D5 ; indirect data load target 0x0084EA|$02:$84DA:D7 ; indirect data load target 0x0084EB|$02:$84DB:D4 ; indirect data load target 0x0084EC|$02:$84DC:D6 ; indirect data load target 0x0084ED|$02:$84DD:02 ; indirect data load target 0x0084EE|$02:$84DE:F2 ; indirect data load target 0x0084EF|$02:$84DF:F4 ; indirect data load target 0x0084F0|$02:$84E0:F1 ; indirect data load target 0x0084F1|$02:$84E1:F3 ; indirect data load target 0x0084F2|$02:$84E2:02 ; indirect data load target 0x0084F3|$02:$84E3:B5 ; indirect data load target 0x0084F4|$02:$84E4:B7 ; indirect data load target 0x0084F5|$02:$84E5:B4 ; indirect data load target 0x0084F6|$02:$84E6:B6 ; indirect data load target 0x0084F7|$02:$84E7:F2 ; indirect data load target 0x0084F8|$02:$84E8:B9 ; indirect data load target 0x0084F9|$02:$84E9:BB ; indirect data load target 0x0084FA|$02:$84EA:B8 ; indirect data load target 0x0084FB|$02:$84EB:BA ; indirect data load target 0x0084FC|$02:$84EC:F1 ; indirect data load target 0x0084FD|$02:$84ED:A6 ; indirect data load target 0x0084FE|$02:$84EE:A8 ; indirect data load target 0x0084FF|$02:$84EF:A5 ; indirect data load target 0x008500|$02:$84F0:A7 ; indirect data load target 0x008501|$02:$84F1:F2 ; indirect data load target 0x008502|$02:$84F2:97 ; indirect data load target 0x008503|$02:$84F3:99 ; indirect data load target 0x008504|$02:$84F4:96 ; indirect data load target 0x008505|$02:$84F5:98 ; indirect data load target 0x008506|$02:$84F6:F2 ; indirect data load target 0x008507|$02:$84F7:F6 ; indirect data load target 0x008508|$02:$84F8:F8 ; indirect data load target 0x008509|$02:$84F9:F5 ; indirect data load target 0x00850A|$02:$84FA:F7 ; indirect data load target 0x00850B|$02:$84FB:F0 ; indirect data load target 0x00850C|$02:$84FC:9B ; indirect data load target 0x00850D|$02:$84FD:A3 ; indirect data load target 0x00850E|$02:$84FE:9A ; indirect data load target 0x00850F|$02:$84FF:A2 ; indirect data load target 0x008510|$02:$8500:01 ; indirect data load target 0x008511|$02:$8501:AA ; indirect data load target 0x008512|$02:$8502:AC ; indirect data load target 0x008513|$02:$8503:A9 ; indirect data load target 0x008514|$02:$8504:AB ; indirect data load target 0x008515|$02:$8505:91 ; indirect data load target 0x008516|$02:$8506:84 ; indirect data load target 0x008517|$02:$8507:84 ; indirect data load target 0x008518|$02:$8508:84 ; indirect data load target 0x008519|$02:$8509:84 ; indirect data load target 0x00851A|$02:$850A:00 ; indirect data load target 0x00851B|$02:$850B:F9 ; indirect data load target 0x00851C|$02:$850C:F9 ; indirect data load target 0x00851D|$02:$850D:DC ; indirect data load target 0x00851E|$02:$850E:DC ; indirect data load target 0x00851F|$02:$850F:02 ; indirect data load target 0x008520|$02:$8510:DC ; indirect data load target 0x008521|$02:$8511:DC ; indirect data load target 0x008522|$02:$8512:DC ; indirect data load target 0x008523|$02:$8513:DC ; indirect data load target 0x008524|$02:$8514:02 ; indirect data load target 0x008525|$02:$8515:DC ; indirect data load target 0x008526|$02:$8516:DC ; indirect data load target 0x008527|$02:$8517:DC ; indirect data load target 0x008528|$02:$8518:DC ; indirect data load target 0x008529|$02:$8519:02 ; indirect data load target 0x00852A|$02:$851A:DC ; indirect data load target 0x00852B|$02:$851B:DC ; indirect data load target 0x00852C|$02:$851C:DC ; indirect data load target 0x00852D|$02:$851D:DC ; indirect data load target 0x00852E|$02:$851E:02 ; indirect data load target 0x00852F|$02:$851F:5F ; indirect data load target 0x008530|$02:$8520:5F ; indirect data load target 0x008531|$02:$8521:5F ; indirect data load target 0x008532|$02:$8522:5F ; indirect data load target 0x008533|$02:$8523:01 ; indirect data load target 0x008534|$02:$8524:5F ; indirect data load target 0x008535|$02:$8525:5F ; indirect data load target 0x008536|$02:$8526:5F ; indirect data load target 0x008537|$02:$8527:5F ; indirect data load target 0x008538|$02:$8528:01 ; indirect data load target 0x008539|$02:$8529:5F ; indirect data load target 0x00853A|$02:$852A:5F ; indirect data load target 0x00853B|$02:$852B:5F ; indirect data load target 0x00853C|$02:$852C:5F ; indirect data load target 0x00853D|$02:$852D:01 ; indirect data load target 0x00853E|$02:$852E:5F ; indirect data load target 0x00853F|$02:$852F:5F ; indirect data load target 0x008540|$02:$8530:5F ; indirect data load target 0x008541|$02:$8531:5F ; indirect data load target 0x008542|$02:$8532:01 ; external indirect data load target (via $0F:$DEC1, $0F:$F943) ; indirect data load target 0x008543|$02:$8533:B0 ; indirect data load target 0x008544|$02:$8534:B0 ; indirect data load target 0x008545|$02:$8535:B0 ; indirect data load target 0x008546|$02:$8536:B0 ; indirect data load target 0x008547|$02:$8537:02 ; indirect data load target 0x008548|$02:$8538:B0 ; indirect data load target 0x008549|$02:$8539:B0 ; indirect data load target 0x00854A|$02:$853A:B0 ; indirect data load target 0x00854B|$02:$853B:B0 ; indirect data load target 0x00854C|$02:$853C:02 ; indirect data load target 0x00854D|$02:$853D:B0 ; indirect data load target 0x00854E|$02:$853E:B0 ; indirect data load target 0x00854F|$02:$853F:B0 ; indirect data load target 0x008550|$02:$8540:B0 ; indirect data load target 0x008551|$02:$8541:02 ; indirect data load target 0x008552|$02:$8542:B0 ; indirect data load target 0x008553|$02:$8543:B0 ; indirect data load target 0x008554|$02:$8544:B0 ; indirect data load target 0x008555|$02:$8545:B0 ; indirect data load target 0x008556|$02:$8546:02 ; indirect data load target 0x008557|$02:$8547:BD ; indirect data load target 0x008558|$02:$8548:BE ; indirect data load target 0x008559|$02:$8549:BE ; indirect data load target 0x00855A|$02:$854A:BD ; indirect data load target 0x00855B|$02:$854B:A0 ; indirect data load target 0x00855C|$02:$854C:BD ; indirect data load target 0x00855D|$02:$854D:BE ; indirect data load target 0x00855E|$02:$854E:BE ; indirect data load target 0x00855F|$02:$854F:BD ; indirect data load target 0x008560|$02:$8550:A0 ; indirect data load target 0x008561|$02:$8551:BD ; indirect data load target 0x008562|$02:$8552:BE ; indirect data load target 0x008563|$02:$8553:BE ; indirect data load target 0x008564|$02:$8554:BD ; indirect data load target 0x008565|$02:$8555:A0 ; indirect data load target 0x008566|$02:$8556:BD ; indirect data load target 0x008567|$02:$8557:BE ; indirect data load target 0x008568|$02:$8558:BE ; indirect data load target 0x008569|$02:$8559:BD ; indirect data load target 0x00856A|$02:$855A:A0 ; indirect data load target 0x00856B|$02:$855B:93 ; indirect data load target 0x00856C|$02:$855C:97 ; indirect data load target 0x00856D|$02:$855D:92 ; indirect data load target 0x00856E|$02:$855E:96 ; indirect data load target 0x00856F|$02:$855F:F3 ; indirect data load target 0x008570|$02:$8560:9B ; indirect data load target 0x008571|$02:$8561:9F ; indirect data load target 0x008572|$02:$8562:9A ; indirect data load target 0x008573|$02:$8563:9E ; indirect data load target 0x008574|$02:$8564:F3 ; indirect data load target 0x008575|$02:$8565:91 ; indirect data load target 0x008576|$02:$8566:95 ; indirect data load target 0x008577|$02:$8567:90 ; indirect data load target 0x008578|$02:$8568:94 ; indirect data load target 0x008579|$02:$8569:F3 ; indirect data load target 0x00857A|$02:$856A:99 ; indirect data load target 0x00857B|$02:$856B:9D ; indirect data load target 0x00857C|$02:$856C:98 ; indirect data load target 0x00857D|$02:$856D:9C ; indirect data load target 0x00857E|$02:$856E:F3 ; indirect data load target 0x00857F|$02:$856F:B0 ; indirect data load target 0x008580|$02:$8570:B0 ; indirect data load target 0x008581|$02:$8571:B0 ; indirect data load target 0x008582|$02:$8572:B0 ; indirect data load target 0x008583|$02:$8573:02 ; indirect data load target 0x008584|$02:$8574:B0 ; indirect data load target 0x008585|$02:$8575:B0 ; indirect data load target 0x008586|$02:$8576:B0 ; indirect data load target 0x008587|$02:$8577:B0 ; indirect data load target 0x008588|$02:$8578:02 ; indirect data load target 0x008589|$02:$8579:BA ; indirect data load target 0x00858A|$02:$857A:BC ; indirect data load target 0x00858B|$02:$857B:B9 ; indirect data load target 0x00858C|$02:$857C:BB ; indirect data load target 0x00858D|$02:$857D:11 ; indirect data load target 0x00858E|$02:$857E:B0 ; indirect data load target 0x00858F|$02:$857F:B0 ; indirect data load target 0x008590|$02:$8580:B0 ; indirect data load target 0x008591|$02:$8581:B0 ; indirect data load target 0x008592|$02:$8582:02 ; indirect data load target 0x008593|$02:$8583:B0 ; indirect data load target 0x008594|$02:$8584:B0 ; indirect data load target 0x008595|$02:$8585:B0 ; indirect data load target 0x008596|$02:$8586:B0 ; indirect data load target 0x008597|$02:$8587:02 ; indirect data load target 0x008598|$02:$8588:B6 ; indirect data load target 0x008599|$02:$8589:B8 ; indirect data load target 0x00859A|$02:$858A:B5 ; indirect data load target 0x00859B|$02:$858B:B7 ; indirect data load target 0x00859C|$02:$858C:21 ; indirect data load target 0x00859D|$02:$858D:B0 ; indirect data load target 0x00859E|$02:$858E:B0 ; indirect data load target 0x00859F|$02:$858F:B0 ; indirect data load target 0x0085A0|$02:$8590:B0 ; indirect data load target 0x0085A1|$02:$8591:02 ; indirect data load target 0x0085A2|$02:$8592:B0 ; indirect data load target 0x0085A3|$02:$8593:B0 ; indirect data load target 0x0085A4|$02:$8594:B0 ; indirect data load target 0x0085A5|$02:$8595:B0 ; indirect data load target 0x0085A6|$02:$8596:02 ; indirect data load target 0x0085A7|$02:$8597:B2 ; indirect data load target 0x0085A8|$02:$8598:B4 ; indirect data load target 0x0085A9|$02:$8599:B1 ; indirect data load target 0x0085AA|$02:$859A:B3 ; indirect data load target 0x0085AB|$02:$859B:01 ; indirect data load target 0x0085AC|$02:$859C:B0 ; indirect data load target 0x0085AD|$02:$859D:B0 ; indirect data load target 0x0085AE|$02:$859E:B0 ; indirect data load target 0x0085AF|$02:$859F:B0 ; indirect data load target 0x0085B0|$02:$85A0:02 ; indirect data load target 0x0085B1|$02:$85A1:B0 ; indirect data load target 0x0085B2|$02:$85A2:B0 ; indirect data load target 0x0085B3|$02:$85A3:B0 ; indirect data load target 0x0085B4|$02:$85A4:B0 ; indirect data load target 0x0085B5|$02:$85A5:02 ; indirect data load target 0x0085B6|$02:$85A6:B0 ; indirect data load target 0x0085B7|$02:$85A7:B0 ; indirect data load target 0x0085B8|$02:$85A8:B0 ; indirect data load target 0x0085B9|$02:$85A9:B0 ; indirect data load target 0x0085BA|$02:$85AA:02 ; indirect data load target 0x0085BB|$02:$85AB:C4 ; indirect data load target 0x0085BC|$02:$85AC:C8 ; indirect data load target 0x0085BD|$02:$85AD:C3 ; indirect data load target 0x0085BE|$02:$85AE:C7 ; indirect data load target 0x0085BF|$02:$85AF:F2 ; indirect data load target 0x0085C0|$02:$85B0:CC ; indirect data load target 0x0085C1|$02:$85B1:D0 ; indirect data load target 0x0085C2|$02:$85B2:CB ; indirect data load target 0x0085C3|$02:$85B3:CF ; indirect data load target 0x0085C4|$02:$85B4:F2 ; indirect data load target 0x0085C5|$02:$85B5:C2 ; indirect data load target 0x0085C6|$02:$85B6:C6 ; indirect data load target 0x0085C7|$02:$85B7:C1 ; indirect data load target 0x0085C8|$02:$85B8:C5 ; indirect data load target 0x0085C9|$02:$85B9:F2 ; indirect data load target 0x0085CA|$02:$85BA:CA ; indirect data load target 0x0085CB|$02:$85BB:CE ; indirect data load target 0x0085CC|$02:$85BC:C9 ; indirect data load target 0x0085CD|$02:$85BD:CD ; indirect data load target 0x0085CE|$02:$85BE:F2 ; indirect data load target 0x0085CF|$02:$85BF:A3 ; indirect data load target 0x0085D0|$02:$85C0:A7 ; indirect data load target 0x0085D1|$02:$85C1:A2 ; indirect data load target 0x0085D2|$02:$85C2:A6 ; indirect data load target 0x0085D3|$02:$85C3:F3 ; indirect data load target 0x0085D4|$02:$85C4:AB ; indirect data load target 0x0085D5|$02:$85C5:AF ; indirect data load target 0x0085D6|$02:$85C6:AA ; indirect data load target 0x0085D7|$02:$85C7:AE ; indirect data load target 0x0085D8|$02:$85C8:F3 ; indirect data load target 0x0085D9|$02:$85C9:A1 ; indirect data load target 0x0085DA|$02:$85CA:A5 ; indirect data load target 0x0085DB|$02:$85CB:A0 ; indirect data load target 0x0085DC|$02:$85CC:A4 ; indirect data load target 0x0085DD|$02:$85CD:F3 ; indirect data load target 0x0085DE|$02:$85CE:A9 ; indirect data load target 0x0085DF|$02:$85CF:AD ; indirect data load target 0x0085E0|$02:$85D0:A8 ; indirect data load target 0x0085E1|$02:$85D1:AC ; indirect data load target 0x0085E2|$02:$85D2:F3 ; indirect data load target 0x0085E3|$02:$85D3:5F ; indirect data load target 0x0085E4|$02:$85D4:5F ; indirect data load target 0x0085E5|$02:$85D5:5F ; indirect data load target 0x0085E6|$02:$85D6:5F ; indirect data load target 0x0085E7|$02:$85D7:01 ; indirect data load target 0x0085E8|$02:$85D8:5F ; indirect data load target 0x0085E9|$02:$85D9:5F ; indirect data load target 0x0085EA|$02:$85DA:5F ; indirect data load target 0x0085EB|$02:$85DB:5F ; indirect data load target 0x0085EC|$02:$85DC:01 ; indirect data load target 0x0085ED|$02:$85DD:5F ; indirect data load target 0x0085EE|$02:$85DE:5F ; indirect data load target 0x0085EF|$02:$85DF:5F ; indirect data load target 0x0085F0|$02:$85E0:5F ; indirect data load target 0x0085F1|$02:$85E1:01 ; indirect data load target 0x0085F2|$02:$85E2:5F ; indirect data load target 0x0085F3|$02:$85E3:5F ; indirect data load target 0x0085F4|$02:$85E4:5F ; indirect data load target 0x0085F5|$02:$85E5:5F ; indirect data load target 0x0085F6|$02:$85E6:01 ; indirect data load target 0x0085F7|$02:$85E7:5F ; indirect data load target 0x0085F8|$02:$85E8:5F ; indirect data load target 0x0085F9|$02:$85E9:5F ; indirect data load target 0x0085FA|$02:$85EA:5F ; indirect data load target 0x0085FB|$02:$85EB:01 ; indirect data load target 0x0085FC|$02:$85EC:5F ; indirect data load target 0x0085FD|$02:$85ED:5F ; indirect data load target 0x0085FE|$02:$85EE:5F ; indirect data load target 0x0085FF|$02:$85EF:5F ; indirect data load target 0x008600|$02:$85F0:01 ; indirect data load target 0x008601|$02:$85F1:5F ; indirect data load target 0x008602|$02:$85F2:5F ; indirect data load target 0x008603|$02:$85F3:5F ; indirect data load target 0x008604|$02:$85F4:5F ; indirect data load target 0x008605|$02:$85F5:01 ; indirect data load target 0x008606|$02:$85F6:5F ; indirect data load target 0x008607|$02:$85F7:5F ; indirect data load target 0x008608|$02:$85F8:5F ; indirect data load target 0x008609|$02:$85F9:5F ; indirect data load target 0x00860A|$02:$85FA:01 ; external indirect data load target (via $0F:$DEC3, $0F:$F945) ; indirect data load target 0x00860B|$02:$85FB:B0 ; indirect data load target 0x00860C|$02:$85FC:B0 ; indirect data load target 0x00860D|$02:$85FD:B0 ; indirect data load target 0x00860E|$02:$85FE:B0 ; indirect data load target 0x00860F|$02:$85FF:03 ; indirect data load target 0x008610|$02:$8600:B0 ; indirect data load target 0x008611|$02:$8601:B0 ; indirect data load target 0x008612|$02:$8602:B0 ; indirect data load target 0x008613|$02:$8603:B0 ; indirect data load target 0x008614|$02:$8604:03 ; indirect data load target 0x008615|$02:$8605:B0 ; indirect data load target 0x008616|$02:$8606:B0 ; indirect data load target 0x008617|$02:$8607:B0 ; indirect data load target 0x008618|$02:$8608:B0 ; indirect data load target 0x008619|$02:$8609:03 ; indirect data load target 0x00861A|$02:$860A:B0 ; indirect data load target 0x00861B|$02:$860B:B0 ; indirect data load target 0x00861C|$02:$860C:B0 ; indirect data load target 0x00861D|$02:$860D:B0 ; indirect data load target 0x00861E|$02:$860E:03 ; indirect data load target 0x00861F|$02:$860F:A3 ; indirect data load target 0x008620|$02:$8610:A7 ; indirect data load target 0x008621|$02:$8611:A2 ; indirect data load target 0x008622|$02:$8612:A6 ; indirect data load target 0x008623|$02:$8613:03 ; indirect data load target 0x008624|$02:$8614:AB ; indirect data load target 0x008625|$02:$8615:AF ; indirect data load target 0x008626|$02:$8616:AA ; indirect data load target 0x008627|$02:$8617:AE ; indirect data load target 0x008628|$02:$8618:03 ; indirect data load target 0x008629|$02:$8619:A1 ; indirect data load target 0x00862A|$02:$861A:A5 ; indirect data load target 0x00862B|$02:$861B:A0 ; indirect data load target 0x00862C|$02:$861C:A4 ; indirect data load target 0x00862D|$02:$861D:03 ; indirect data load target 0x00862E|$02:$861E:A9 ; indirect data load target 0x00862F|$02:$861F:AD ; indirect data load target 0x008630|$02:$8620:A8 ; indirect data load target 0x008631|$02:$8621:AC ; indirect data load target 0x008632|$02:$8622:03 ; indirect data load target 0x008633|$02:$8623:E3 ; indirect data load target 0x008634|$02:$8624:E7 ; indirect data load target 0x008635|$02:$8625:E2 ; indirect data load target 0x008636|$02:$8626:E6 ; indirect data load target 0x008637|$02:$8627:F2 ; indirect data load target 0x008638|$02:$8628:EB ; indirect data load target 0x008639|$02:$8629:EF ; indirect data load target 0x00863A|$02:$862A:EA ; indirect data load target 0x00863B|$02:$862B:EE ; indirect data load target 0x00863C|$02:$862C:F2 ; indirect data load target 0x00863D|$02:$862D:E1 ; indirect data load target 0x00863E|$02:$862E:E5 ; indirect data load target 0x00863F|$02:$862F:E0 ; indirect data load target 0x008640|$02:$8630:E4 ; indirect data load target 0x008641|$02:$8631:F2 ; indirect data load target 0x008642|$02:$8632:E9 ; indirect data load target 0x008643|$02:$8633:ED ; indirect data load target 0x008644|$02:$8634:E8 ; indirect data load target 0x008645|$02:$8635:EC ; indirect data load target 0x008646|$02:$8636:F2 ; indirect data load target 0x008647|$02:$8637:B0 ; indirect data load target 0x008648|$02:$8638:B0 ; indirect data load target 0x008649|$02:$8639:B0 ; indirect data load target 0x00864A|$02:$863A:B0 ; indirect data load target 0x00864B|$02:$863B:03 ; indirect data load target 0x00864C|$02:$863C:B0 ; indirect data load target 0x00864D|$02:$863D:B0 ; indirect data load target 0x00864E|$02:$863E:B0 ; indirect data load target 0x00864F|$02:$863F:B0 ; indirect data load target 0x008650|$02:$8640:03 ; indirect data load target 0x008651|$02:$8641:B2 ; indirect data load target 0x008652|$02:$8642:B4 ; indirect data load target 0x008653|$02:$8643:B1 ; indirect data load target 0x008654|$02:$8644:B3 ; indirect data load target 0x008655|$02:$8645:13 ; indirect data load target 0x008656|$02:$8646:B0 ; indirect data load target 0x008657|$02:$8647:B0 ; indirect data load target 0x008658|$02:$8648:B0 ; indirect data load target 0x008659|$02:$8649:B0 ; indirect data load target 0x00865A|$02:$864A:03 ; indirect data load target 0x00865B|$02:$864B:B0 ; indirect data load target 0x00865C|$02:$864C:B0 ; indirect data load target 0x00865D|$02:$864D:B0 ; indirect data load target 0x00865E|$02:$864E:B0 ; indirect data load target 0x00865F|$02:$864F:03 ; indirect data load target 0x008660|$02:$8650:B6 ; indirect data load target 0x008661|$02:$8651:B8 ; indirect data load target 0x008662|$02:$8652:B5 ; indirect data load target 0x008663|$02:$8653:B7 ; indirect data load target 0x008664|$02:$8654:23 ; indirect data load target 0x008665|$02:$8655:B0 ; indirect data load target 0x008666|$02:$8656:B0 ; indirect data load target 0x008667|$02:$8657:B0 ; indirect data load target 0x008668|$02:$8658:B0 ; indirect data load target 0x008669|$02:$8659:03 ; indirect data load target 0x00866A|$02:$865A:B0 ; indirect data load target 0x00866B|$02:$865B:B0 ; indirect data load target 0x00866C|$02:$865C:B0 ; indirect data load target 0x00866D|$02:$865D:B0 ; indirect data load target 0x00866E|$02:$865E:03 ; indirect data load target 0x00866F|$02:$865F:BA ; indirect data load target 0x008670|$02:$8660:BC ; indirect data load target 0x008671|$02:$8661:B9 ; indirect data load target 0x008672|$02:$8662:BB ; indirect data load target 0x008673|$02:$8663:01 ; indirect data load target 0x008674|$02:$8664:B0 ; indirect data load target 0x008675|$02:$8665:B0 ; indirect data load target 0x008676|$02:$8666:B0 ; indirect data load target 0x008677|$02:$8667:B0 ; indirect data load target 0x008678|$02:$8668:03 ; indirect data load target 0x008679|$02:$8669:B0 ; indirect data load target 0x00867A|$02:$866A:B0 ; indirect data load target 0x00867B|$02:$866B:B0 ; indirect data load target 0x00867C|$02:$866C:B0 ; indirect data load target 0x00867D|$02:$866D:03 ; indirect data load target 0x00867E|$02:$866E:B0 ; indirect data load target 0x00867F|$02:$866F:B0 ; indirect data load target 0x008680|$02:$8670:B0 ; indirect data load target 0x008681|$02:$8671:B0 ; indirect data load target 0x008682|$02:$8672:03 ; indirect data load target 0x008683|$02:$8673:C0 ; indirect data load target 0x008684|$02:$8674:C4 ; indirect data load target 0x008685|$02:$8675:BF ; indirect data load target 0x008686|$02:$8676:C3 ; indirect data load target 0x008687|$02:$8677:F1 ; indirect data load target 0x008688|$02:$8678:C8 ; indirect data load target 0x008689|$02:$8679:CC ; indirect data load target 0x00868A|$02:$867A:C7 ; indirect data load target 0x00868B|$02:$867B:CB ; indirect data load target 0x00868C|$02:$867C:F1 ; indirect data load target 0x00868D|$02:$867D:BE ; indirect data load target 0x00868E|$02:$867E:C2 ; indirect data load target 0x00868F|$02:$867F:BD ; indirect data load target 0x008690|$02:$8680:C1 ; indirect data load target 0x008691|$02:$8681:F1 ; indirect data load target 0x008692|$02:$8682:C6 ; indirect data load target 0x008693|$02:$8683:CA ; indirect data load target 0x008694|$02:$8684:C5 ; indirect data load target 0x008695|$02:$8685:C9 ; indirect data load target 0x008696|$02:$8686:F1 ; indirect data load target 0x008697|$02:$8687:93 ; indirect data load target 0x008698|$02:$8688:97 ; indirect data load target 0x008699|$02:$8689:92 ; indirect data load target 0x00869A|$02:$868A:96 ; indirect data load target 0x00869B|$02:$868B:F2 ; indirect data load target 0x00869C|$02:$868C:9B ; indirect data load target 0x00869D|$02:$868D:9F ; indirect data load target 0x00869E|$02:$868E:9A ; indirect data load target 0x00869F|$02:$868F:9E ; indirect data load target 0x0086A0|$02:$8690:F2 ; indirect data load target 0x0086A1|$02:$8691:91 ; indirect data load target 0x0086A2|$02:$8692:95 ; indirect data load target 0x0086A3|$02:$8693:90 ; indirect data load target 0x0086A4|$02:$8694:94 ; indirect data load target 0x0086A5|$02:$8695:F2 ; indirect data load target 0x0086A6|$02:$8696:99 ; indirect data load target 0x0086A7|$02:$8697:9D ; indirect data load target 0x0086A8|$02:$8698:98 ; indirect data load target 0x0086A9|$02:$8699:9C ; indirect data load target 0x0086AA|$02:$869A:F2 ; indirect data load target 0x0086AB|$02:$869B:CD ; indirect data load target 0x0086AC|$02:$869C:CD ; indirect data load target 0x0086AD|$02:$869D:CD ; indirect data load target 0x0086AE|$02:$869E:CD ; indirect data load target 0x0086AF|$02:$869F:01 ; indirect data load target 0x0086B0|$02:$86A0:CD ; indirect data load target 0x0086B1|$02:$86A1:CD ; indirect data load target 0x0086B2|$02:$86A2:CD ; indirect data load target 0x0086B3|$02:$86A3:CD ; indirect data load target 0x0086B4|$02:$86A4:01 ; indirect data load target 0x0086B5|$02:$86A5:CD ; indirect data load target 0x0086B6|$02:$86A6:CD ; indirect data load target 0x0086B7|$02:$86A7:CD ; indirect data load target 0x0086B8|$02:$86A8:CD ; indirect data load target 0x0086B9|$02:$86A9:01 ; indirect data load target 0x0086BA|$02:$86AA:CD ; indirect data load target 0x0086BB|$02:$86AB:CD ; indirect data load target 0x0086BC|$02:$86AC:CD ; indirect data load target 0x0086BD|$02:$86AD:CD ; indirect data load target 0x0086BE|$02:$86AE:01 ; indirect data load target 0x0086BF|$02:$86AF:CD ; indirect data load target 0x0086C0|$02:$86B0:CD ; indirect data load target 0x0086C1|$02:$86B1:CD ; indirect data load target 0x0086C2|$02:$86B2:CD ; indirect data load target 0x0086C3|$02:$86B3:01 ; indirect data load target 0x0086C4|$02:$86B4:CD ; indirect data load target 0x0086C5|$02:$86B5:CD ; indirect data load target 0x0086C6|$02:$86B6:CD ; indirect data load target 0x0086C7|$02:$86B7:CD ; indirect data load target 0x0086C8|$02:$86B8:01 ; indirect data load target 0x0086C9|$02:$86B9:CD ; indirect data load target 0x0086CA|$02:$86BA:CD ; indirect data load target 0x0086CB|$02:$86BB:CD ; indirect data load target 0x0086CC|$02:$86BC:CD ; indirect data load target 0x0086CD|$02:$86BD:01 ; indirect data load target 0x0086CE|$02:$86BE:CD ; indirect data load target 0x0086CF|$02:$86BF:CD ; indirect data load target 0x0086D0|$02:$86C0:CD ; indirect data load target 0x0086D1|$02:$86C1:CD ; indirect data load target 0x0086D2|$02:$86C2:01 ; indirect data load target 0x0086D3|$02:$86C3:84 ; indirect data load target 0x0086D4|$02:$86C4:84 ; indirect data load target 0x0086D5|$02:$86C5:84 ; indirect data load target 0x0086D6|$02:$86C6:84 ; indirect data load target 0x0086D7|$02:$86C7:02 ; indirect data load target 0x0086D8|$02:$86C8:84 ; indirect data load target 0x0086D9|$02:$86C9:84 ; indirect data load target 0x0086DA|$02:$86CA:84 ; indirect data load target 0x0086DB|$02:$86CB:84 ; indirect data load target 0x0086DC|$02:$86CC:02 ; indirect data load target 0x0086DD|$02:$86CD:84 ; indirect data load target 0x0086DE|$02:$86CE:84 ; indirect data load target 0x0086DF|$02:$86CF:84 ; indirect data load target 0x0086E0|$02:$86D0:84 ; indirect data load target 0x0086E1|$02:$86D1:02 ; indirect data load target 0x0086E2|$02:$86D2:84 ; indirect data load target 0x0086E3|$02:$86D3:84 ; indirect data load target 0x0086E4|$02:$86D4:84 ; indirect data load target 0x0086E5|$02:$86D5:84 ; indirect data load target 0x0086E6|$02:$86D6:02 ; -> $02:$A201: Map ID #$6D: Moonbrooke (prologue) ; external data load target (from $0F:$E49B) 0x0086E7|$02:$86D7:01 ; external data load target (from $0F:$E4A0) 0x0086E8|$02:$86D8: A2 ; $02:$A201; Map ID #$6D: Moonbrooke (prologue) ; Map ID #$34: Charlock Castle B1/B2 ; indirect data load target (via $81BB) 0x0086E9|$02:$86D9:0E 0E 48 E2 80 E2 5C 79 AB 2A 04 F0 5E 9E 53 43 3E CB 1E F1 C3 A2 7E 61 D6 76 64 E9 B1 AC CF 6A 04 51 A5 02 A5 8A 02 EF BA 51 62 11 66 A1 16 6F BD EB 14 AD F9 67 3C 69 F8 7E 65 DA 17 77 29 89 00 2D 15 22 65 3C A5 48 70 0E 45 DE 19 68 10 ; Map ID #$35: Charlock Castle B3/B4-1/B5-1 ; indirect data load target (via $81C3) 0x008738|$02:$8728:0C 10 48 E0 5E AB E4 99 41 42 EF CB BE 15 C6 6A 71 14 1D 1D 1E 4E 0B 5E C5 B2 7D 2B 98 1F 65 89 E6 3A 0F 22 33 8D 6D BC 12 EB 7E 14 25 AC 95 A0 07 90 94 ; Map ID #$36: Charlock Castle B4-2/B5-2/B6 ; indirect data load target (via $81CB) 0x00876B|$02:$875B:0C 0A 48 07 80 40 0A 00 50 0A 00 E3 BA AC AB E2 81 40 28 14 0F 26 5B 6D CB 1E 37 53 94 19 4A 27 BB 53 A2 02 51 2D ; Map ID #$32: Sea Cave B4 ; indirect data load target (via $81AB) 0x008791|$02:$8781:12 12 48 22 95 DA 55 95 4C 95 61 0C 3C 21 56 3D C6 AD 2F 0C 87 82 2D 8C F1 12 A5 2B 7E 4E 1A 0E 86 49 67 2B 26 7E FB 9C 33 3C BD 27 C3 3D CF D1 1F C0 F7 29 E8 DA B2 F4 F9 05 DF 01 AB 2C F1 BE 05 6B CD F0 00 53 5B E6 BE 59 71 2F AE 2C B2 F9 67 80 35 3C E9 04 A7 4D D3 A7 9A 79 39 7F 2A C2 B8 73 10 E5 4C EF A2 F5 06 C0 D3 59 3B 5D EF 0D D6 3E 43 9F F0 B9 74 31 4C 28 38 D6 6B F2 6C 4A 62 7B AB B6 90 64 4C D1 A6 37 06 F5 E4 9B F7 7E 01 ; Map ID #$33: Sea Cave B5 ; indirect data load target (via $81B3) 0x008822|$02:$8812:0E 08 48 E1 8B 49 65 44 59 E4 89 62 87 81 85 82 35 26 90 B0 26 A1 2C F4 56 FC B3 D3 C5 09 83 AE CE C8 00 F2 E6 4A 62 44 EF 14 06 40 E7 81 ; Map ID #$02: Midenhall 2F ; indirect data load target (via $802B) 0x008850|$02:$8840:0A 0A 90 50 11 76 0F 92 8A B2 55 F3 A2 C8 3C CE 49 84 ; Map ID #$04: Midenhall B1 ; indirect data load target (via $803B) 0x008862|$02:$8852:06 0A C5 28 46 4E 08 B4 76 01 29 D4 66 AB 35 F3 5D BA A4 32 8C F1 19 23 ; Map ID #$05: Leftwyne ; indirect data load target (via $8043) 0x00887A|$02:$886A:18 18 C1 08 25 92 89 81 AB 8C 39 33 41 B7 F2 7B A2 55 78 5E 0B BE E0 F6 70 F4 16 3D 37 CF E0 D3 C2 25 D9 F1 49 2F 44 0A CE 65 86 FB 8D 55 47 17 00 36 5F 4C F3 83 19 BE E5 D9 5F D1 CD 3F 00 A2 51 9A 84 26 2B 1E ED AD A3 CE 89 86 5A 39 17 91 A7 25 95 82 CB 1A 11 E9 62 A3 C5 78 48 F8 43 23 6F BD E1 66 DC 51 45 69 E5 E5 E2 45 14 14 15 57 8B C5 45 95 65 17 8C 5C 80 80 60 88 79 01 03 8F 00 00 80 00 00 40 00 00 20 01 D1 8E 00 80 0F 2D 91 59 18 4B 16 CC 65 80 AC DD 29 B6 9B C8 77 76 0D EE 00 BD 60 3F 38 7B C6 EB D6 E6 E3 54 33 E3 C6 94 A1 C1 98 32 C0 10 ; Map ID #$06: Cannock ; indirect data load target (via $804B) 0x008932|$02:$8922:1A 1A C3 00 25 8B A5 A9 D0 3C 24 95 29 02 04 08 92 9E 06 78 40 BA F0 20 5E 75 A5 9E 5A 53 D5 05 0A 0B E0 D0 20 27 4E A4 19 6E A8 BA 94 56 4B D4 76 74 15 2A CB 9F 62 EF B9 A7 48 59 65 B3 C3 4F DE 46 4F 2B 6C 79 2C 2E 9F 2C B6 79 F8 4B 1E 16 9F 54 A0 34 02 8A 34 F0 F1 40 37 C6 BC 03 40 C5 FA 03 3E BC 14 0D F0 AC 02 28 14 05 02 05 03 40 D0 2F BF 00 4F 7A F4 E7 91 1C B8 02 8A 6B CA 7F 0C 6C B1 AA 6C 1F BD 44 A2 CB 79 DC 63 37 89 23 F1 B3 1A 87 42 82 79 9D 12 29 A1 C3 76 20 5E D2 0D E5 91 A5 28 24 4D 8C 46 07 ; Map ID #$07: Hamlin ; indirect data load target (via $8053) 0x0089DC|$02:$89CC:18 18 C6 08 24 CF 4D 01 C4 BC 82 08 27 1F 7B 7D 27 25 C0 71 AD 2C 08 4B D1 0C 86 5F 04 AB 25 E7 80 4B 29 14 AF CC 10 D1 B3 A0 04 CF 01 96 2D 9E 00 02 02 67 96 13 3E CB 07 24 CB 7D CB 02 9C F8 E4 2C FD BA DD 3D EC DE A0 91 32 16 92 C3 6B C9 9E 0D A1 F3 3C 36 87 A4 F0 0B 06 E7 A9 C2 BA AE 8E AA DF 3B 4A F7 13 22 09 1B 20 58 30 57 D7 EB 69 F9 E3 43 C2 CF 94 28 51 AA 78 28 AD 3D 3A 37 C0 74 5B 82 39 B0 04 E6 79 6F A0 86 78 81 11 39 21 D0 E0 89 08 71 15 A5 84 19 1E 42 59 C5 EA 40 E4 65 2A B8 B4 C8 44 F2 D8 B5 8B 84 B1 0C A7 13 6F B0 DE 0D D9 5D 01 D9 C1 98 FF 90 66 72 70 56 C9 0B D8 63 BB 9E 74 A5 1A 8B 41 93 80 80 ; Map ID #$08: Hamlin Waterway ; indirect data load target (via $805B) 0x008AAA|$02:$8A9A:08 08 C4 28 48 78 30 0D F8 3D E0 12 95 A9 4B 26 BD 3C 87 8F B1 7C DD 23 53 6B CD 10 ; Map ID #$09: Moonbrooke ; indirect data load target (via $8063) 0x008AC6|$02:$8AB6:14 14 C8 00 88 05 97 7C 01 B4 4D F7 80 2E F8 00 6F 97 12 AD 9B E9 77 DE DF 7E 0C 09 34 64 A4 F0 55 EC 75 38 67 B9 87 A5 E1 D0 BC 70 88 41 9E AA E6 86 A7 81 9C 72 A7 82 DD 1D DB A9 05 A5 42 53 41 E0 05 05 C4 A0 DF 3C 08 38 DA 0B C4 19 06 3E 97 04 A3 55 28 8C F0 82 C4 0C 3D 46 3E 8D F2 CB 28 89 E7 82 BF 21 87 C9 38 EF A4 F5 B2 DA 6F 4E 8F C9 B9 2C 74 37 4F 2F 09 32 F1 1D 4E 15 09 D6 BD FD BB A5 75 1E C9 DE 7C 66 E9 DF 7C 0B 63 64 EC E7 9B F1 96 67 CF 86 B3 49 8C B2 53 24 68 31 9C 88 4E F8 12 52 B7 6B 4C 6F 0E AF AC 2B 5A 2E 85 99 C9 5D 59 0E C2 82 C0 66 0F A3 EE 82 41 EE 14 C0 E5 DA 0D 4B F2 96 0B 59 17 DF CA B9 3F 74 ED 44 80 ; Map ID #$03: Midenhall 1F ; indirect data load target (via $801B, $8033) 0x008B99|$02:$8B89:18 18 C1 00 39 0C 51 3A 18 01 25 B3 C0 AD 24 73 47 E0 74 37 27 24 BB C3 51 82 B2 CA 4B 39 A9 40 9E 11 43 94 00 B3 A7 95 5C F9 42 8A 15 AB EE 11 C2 8D 19 41 F4 80 B0 10 31 BE 8D 03 CF 78 36 BC 68 B0 60 82 3C F0 01 40 68 51 58 79 E0 1A F0 14 0A 06 BE 06 B3 DE E5 61 51 78 F5 CB C9 DC AF 37 B6 BB FB BF 5B 64 27 49 89 E9 39 8C 95 C9 8C EE 33 A9 A1 F5 3C 6E EE 6F 5E 19 92 C3 12 D8 6B 86 F8 72 33 11 48 61 38 BD C2 29 2F B9 27 E1 F1 42 94 74 53 C6 46 02 ; Map ID #$0A: Moonbrooke B1 ; indirect data load target (via $806B) 0x008C2F|$02:$8C1F:06 07 C5 00 58 04 1E 22 A3 09 1B EF 2F 30 BF 2F 43 77 A4 16 E6 71 0C 62 04 ; Map ID #$0B: Lianport ; indirect data load target (via $8073) 0x008C48|$02:$8C38:1A 1A C1 08 44 28 33 A4 73 63 DC 11 6F C3 30 58 F2 8E C5 6A 9A 3D 8C 13 39 88 41 B1 48 02 6F 53 2C 37 44 2B 43 3C 9D CA 0A EC 48 6B ED 17 22 A1 B5 1B 69 29 73 DD 0D 60 FD 64 07 4E 99 D1 E8 E5 E2 24 BC D8 A9 C2 CC E5 CF 74 9D 3F A0 79 24 35 3E 6C F7 41 42 A1 2E 7B 8E B9 78 F5 86 D7 B9 98 96 CD 59 66 FB D1 73 DC 34 AB 12 D6 F9 04 AF 2B 12 6B CF D3 5C 55 78 58 48 41 02 55 80 60 83 0F 12 A8 78 C0 F3 1E 10 18 23 C7 52 F8 00 20 00 30 8A 68 CF A5 F0 A2 F8 00 80 C1 A3 09 F5 4F 17 C0 60 15 E0 C4 F0 1C A4 A4 47 3F 42 96 22 CA B2 85 95 65 89 4B E5 B8 34 96 DF 94 D3 CD 08 1B 8E 1A 49 AC 7C 3E 2F 80 4E EC E9 8D 4F 15 98 21 F4 2B 6E 71 34 39 4A 09 09 AA 9A DC 8D 4F C4 70 40 ; Map ID #$0C: Tantegel ; indirect data load target (via $807B) 0x008D27|$02:$8D17:1E 14 C1 08 04 4B 52 15 6A 1A 47 B3 D5 02 08 95 6B 79 64 B1 0D F6 17 C6 87 86 9F 84 A7 9D 18 AE 0E B3 C3 43 C8 24 B6 71 B7 2C 9C F0 C5 E8 85 59 2F 49 6A F0 6D B8 32 DC 70 4D F7 83 A5 51 7A 2D D7 9E 91 4B CB A2 5E 4F C4 E4 95 4E 05 B7 14 B1 C3 08 E0 F4 71 E3 2F 29 9A FE A8 60 C6 09 81 D6 2D 5D 0D A2 A2 B4 4C 5E A7 05 9E 59 08 11 13 8F 3D 02 08 C3 C4 E4 38 00 40 39 4A 80 28 00 AD 41 E1 18 28 6B 3C BE 9E 55 E4 75 50 A8 34 D1 54 F2 8F 82 2B 85 34 A8 20 C1 A3 1E 2F 80 A3 5E 3C 06 78 11 82 78 C6 F9 3D 78 FD 0A AF C4 CC 57 CC B2 19 6F 98 E3 72 6B 62 B1 1C CE 41 0D DC D3 FA 55 9D D9 D9 A5 03 77 74 B4 58 27 92 CB 10 94 6E 92 73 38 16 B9 B3 8B BE E8 B3 0D A7 89 61 77 E2 58 13 5E 0F 13 B1 A2 4A 56 42 0A 40 92 14 64 16 C8 82 ; Map ID #$0D: Tantegel Town 2F ; indirect data load target (via $8083) 0x008E18|$02:$8E08:08 08 D0 28 04 9C D3 76 3F 65 BC DE D1 DE 23 3C 83 39 86 10 ; Map ID #$0E: Tantegel Castle 2F ; indirect data load target (via $808B) 0x008E2C|$02:$8E1C:08 08 90 50 12 76 3F 6B 70 E9 24 F3 3B 4C 20 ; Map ID #$0F: Osterfair ; indirect data load target (via $8093) 0x008E3B|$02:$8E2B:18 18 C1 00 24 B3 46 40 C5 C2 9C 80 CC FB 09 59 3E A3 69 E2 16 F4 39 B9 EB 54 2C A9 74 59 5E 25 98 CB F4 40 C9 56 5F 7B F8 38 B4 44 8A 0B E3 E2 14 44 F1 D0 DF 9E 12 26 57 14 4B C1 D1 CA 57 37 03 92 85 C9 12 A0 9F C6 62 B7 4C 5E AB 9D D9 C2 7B F4 1A 64 C6 F8 91 CC 5C 91 6F 94 A1 65 57 C2 D1 FE 20 94 06 99 F5 17 DC EF 80 00 02 80 00 01 40 00 00 A0 68 C2 7E 9A 79 01 88 9E 06 61 E4 3C 45 40 4D 01 8A 8C 5F B9 F4 F5 F2 35 28 A6 8B F1 53 C1 E1 67 8B CD 42 42 27 E2 2E 19 06 E2 21 BB 81 BF FA A9 9B 82 22 55 3C D6 3F E7 11 9D FC 3F 33 AB C3 C3 A6 E1 0B 00 E1 93 7E 8D 07 29 41 58 FD 00 04 44 48 8A A8 AD 5B 12 DE 18 C4 9C 39 89 2C 21 6A 11 25 E7 72 0F 26 ; Map ID #$10: Zahan ; indirect data load target (via $809B) 0x008F14|$02:$8F04:18 18 C1 08 05 A2 7B 94 0D 65 41 A1 D9 2A D2 54 E3 3F 48 A1 09 9E 84 02 C0 44 3B 1B 41 CA 9E A9 45 8B CF A0 9B EE 35 82 EF A2 AC BC 9F 83 9B 89 FC 3A 1A 3A 44 E2 9E 00 00 40 00 00 40 00 0E 5C D6 FB 81 3C 00 0F 0B 45 6A C2 5E 8E 15 84 BC D3 28 20 20 9C 7B 42 08 08 89 C7 D0 58 B1 65 2A 10 21 29 60 02 52 C2 04 22 96 54 A9 5C B1 E8 10 46 3C 4F 04 B2 51 DA C2 C5 D2 DC B3 D7 7D 33 D7 7E 0D A3 D3 3E CC FB 33 F7 DE 76 6F 26 7E FB CB 67 1E 72 E7 E1 BD D4 25 8A 86 B0 D3 11 0A 62 36 19 0D CC 4D 04 17 9B C7 E4 93 78 88 92 45 49 67 88 29 40 11 F1 05 08 F1 88 98 68 0E ; Map ID #$11: Tuhn ; indirect data load target (via $80A3) 0x008FCF|$02:$8FBF:14 20 C3 18 06 32 97 59 4A 69 5A 97 49 3E 52 90 D4 88 10 09 A6 7A C5 BE E7 E0 58 B2 59 60 32 59 7C 51 38 42 D6 79 6A 67 95 7C 0D 28 C4 8E 7F 44 B2 A1 2D 19 F7 2F DE 5C 26 7E FB 90 BC 67 AA 9E 0A 4A F2 C5 86 78 2C 0B 2C A0 B2 A5 01 51 60 32 3E D7 9F 8F E5 E1 69 48 4B 12 C2 0E 8C B5 28 52 AB 9E 7C 41 08 72 4A 8A 62 3E 80 A5 2B 85 20 AA F0 90 A6 0B 91 0B 65 B3 DC 82 24 A1 2A 14 46 86 47 AD 96 CF 42 CB 28 2C B3 C4 F1 26 A4 8D D0 FD 15 E4 81 5C 3C 4B 90 0C ED F9 AC 51 19 87 A3 0A 56 51 E7 1B 7E 0B ; Map ID #$12: Tuhn Watergate ; indirect data load target (via $80AB) 0x009075|$02:$9065:06 06 C2 28 44 77 0E 50 EF 21 B2 57 68 A9 12 ; Map ID #$13: Wellgarth ; indirect data load target (via $80B3) 0x009084|$02:$9074:0A 0A C6 10 68 F0 26 79 C1 91 33 C9 4B 09 9E 75 DC 4C F3 C2 A8 E2 00 9C E9 E3 35 E6 76 E0 F9 39 70 65 2A 38 83 6E 0A ; Map ID #$14: Wellgarth Underground ; indirect data load target (via $80BB) 0x0090AB|$02:$909B:18 19 C5 00 5A 42 02 E1 BF 01 86 14 78 7D 18 C1 3C 60 9F 58 D4 28 06 30 68 DF 81 9E 40 53 28 3E 84 01 2C 12 F8 2F 87 D1 A2 9E 03 5A 37 E2 79 7C 0B A4 F0 0A D3 7E 6B D3 CF 78 56 97 C5 3D EF 0F 0F 08 F0 89 0C 68 2E 8C 6A 06 60 10 A0 AD 1E 74 71 AD 01 77 C0 0A 02 80 78 39 6A 54 55 38 7C 02 4F 05 09 8A 00 00 A6 05 05 33 C0 10 03 EC 0A 00 16 0B 43 7E 06 41 F4 00 5F 0D 2D 80 59 56 51 65 5F 3F 38 2B 9C 45 CF AE E7 CB 7E C9 96 97 A4 F2 5A F6 6B 10 F1 04 8F 0E 6F 66 F5 70 D7 01 9B 00 E8 38 43 29 4D E2 2F 0B 1D E2 E3 1C 59 C5 43 77 27 30 B3 8B 62 70 E0 86 11 99 CE A1 7B 68 2C A5 06 07 B4 25 1D 92 25 1E 1A 03 89 60 C4 ; Map ID #$15: Beran ; indirect data load target (via $80C3) 0x009178|$02:$9168:1A 1A C3 20 04 1B 14 56 8A 5F 50 96 31 29 54 65 C4 7A D8 02 6D 62 F9 9D 2C 5B 65 17 5A 50 A0 94 8A C5 65 45 9C 86 49 3F 6A 81 C8 EC 38 33 17 83 A1 16 94 40 B6 4A B2 5F E8 AE A3 0D 07 9A CA 86 7B 4F 7E 4E 67 59 FA 5D D6 12 F8 19 21 15 C5 BA AC 8B 62 DF 70 DE 3F 47 84 E8 36 84 49 B4 F0 B4 08 90 20 25 58 20 8C 3C 95 51 CC 18 E4 6C 71 FD AC A5 97 94 19 41 43 7C B2 C1 54 4B 2B 7D C2 8A A5 14 BC ED 22 02 0C 3C 20 21 55 7F 37 0B 66 0E 61 87 CF 92 F0 C7 16 71 24 07 E2 51 A8 47 9F 91 C7 A1 D0 7A 21 8F 22 31 78 9E 20 12 CA 71 7B 80 37 6F B9 2A 9B 01 E2 B7 A8 D8 07 41 C1 7C 1E 6C A5 85 28 04 A5 37 E3 E4 56 FE 13 CD FC 2F 97 A3 38 F2 6A ; Map ID #$16: Hargon's Castle 1F ; indirect data load target (via $80CB) 0x00924B|$02:$923B:1A 1A C8 40 04 37 A8 50 D9 6A C1 DC 31 0B CD 6A F9 35 AB 8C C0 81 0A 54 09 C5 59 62 58 32 C4 B2 A8 12 A7 83 22 AB C2 28 05 96 72 B4 AA A0 15 65 8D 1A AB E4 AA 80 12 CB F2 C1 2C 4B 2A BC 32 C6 48 AB 2F 28 01 5B 28 D5 69 E2 A0 8B B6 FB 2F 34 03 26 9A 0C 1B F0 4B 67 B9 22 54 68 CF A2 C9 7D E4 65 05 00 EA 79 1B 73 DE EA 43 19 37 DE F4 24 38 0F D3 26 74 28 9C E4 67 14 E0 41 04 3C F4 11 40 0A 00 A0 1F A4 3A 6A 0F 46 F4 1C A6 28 E3 29 6C 75 0F A4 DA 60 67 3D CC 6D 56 D8 0F D7 AD 78 35 A4 E3 A5 79 3C 71 4A 69 21 09 CC 8E 27 8A 62 80 E6 CA 08 9C 70 21 81 E3 41 F4 6F 3D C1 ; Map ID #$17: Hargon's Castle 7F ; indirect data load target (via $80D3) 0x009309|$02:$92F9:10 0E CD 69 14 47 38 02 87 57 DB 85 AE 12 CB 28 59 65 05 96 50 B2 CA F3 F2 28 82 79 60 00 5B 63 E1 75 60 02 D6 06 AF C4 6D 46 F6 9D 97 87 25 9B 8C EF 46 13 ; Map ID #$19: Shrine NW of Midenhall ; indirect data load target (via $80E3) 0x00933D|$02:$932D:0A 0A C5 B0 04 AD 80 93 FD 68 51 42 DF 0B 00 40 1C 89 20 8F 25 41 D1 3C 6C B2 3C 86 C8 81 34 ; Map ID #$1A: Shrine SW of Cannock ; indirect data load target (via $80EB) 0x00935C|$02:$934C:08 0C C6 00 58 16 B2 8D 78 2C A1 65 D0 78 6B C2 CB E6 69 82 AF 96 99 6A A1 57 C6 6F 49 F5 43 77 FB 18 0C 38 62 96 45 F1 D8 EF F2 81 ; Map ID #$1C: Shrine SE of Rimuldar ; indirect data load target (via $80FB) 0x009388|$02:$9378:08 08 C5 00 58 81 00 9C D2 B1 2C 4B 12 FF C7 F9 3E 72 9C A4 38 08 12 ; Map ID #$1D: Shrine NW of Beran ; indirect data load target (via $8103) 0x00939F|$02:$938F:0A 06 C3 00 3B 20 10 03 C2 DC 22 8B 28 2C A2 9E 4F 5F 67 6C B7 3E F9 62 21 ; Map ID #$1E: Shrine NW of Zahan ; indirect data load target (via $810B) 0x0093B8|$02:$93A8:0A 06 C1 00 18 04 01 03 C2 DB A2 8B 28 2C A2 9E 5B 7B 98 9E D6 C6 B1 32 21 ; Map ID #$1F: Rhone Shrine ; indirect data load target (via $8113) 0x0093D1|$02:$93C1:08 08 C4 00 4B 80 04 03 C2 D7 C4 04 73 21 2C 12 C7 8F 95 15 7C B4 5A 77 B9 E6 EA D3 C9 FE 12 CC 21 C0 40 98 ; Map ID #$20: Shrine SW of Moonbrooke ; indirect data load target (via $811B) 0x0093F5|$02:$93E5:08 06 C5 00 5A 90 1B F0 7F 28 48 78 10 60 67 DF 79 6A 70 53 C8 63 69 13 C8 33 C2 27 8C 49 4A 15 E4 C0 ; Map ID #$21: Rhone Cave Shrine ; indirect data load target (via $8123) 0x009417|$02:$9407:08 08 C8 01 7B E5 54 82 B5 E4 F3 CA 72 85 8B CA 14 28 5F 27 B8 43 A8 81 4A 95 A4 CB ; Map ID #$22: Shrine S of Midenhall ; indirect data load target (via $812B) 0x009433|$02:$9423:0A 06 C2 00 58 08 14 50 AB 7C 25 24 EC 07 E9 68 19 E2 C1 27 C0 4C A5 03 61 06 BF 88 1C ; Map ID #$23: Rubiss' Shrine B1 ; indirect data load target (via $8133) 0x009450|$02:$9440:04 04 C4 01 65 68 86 03 3F 18 45 ; Map ID #$24: Rubiss' Shrine B2 ; indirect data load target (via $813B) 0x00945B|$02:$944B:02 02 C4 01 0C 19 E3 09 ; Map ID #$25: Rubiss' Shrine B3 ; indirect data load target (via $8143) 0x009463|$02:$9453:02 02 C4 01 0C 19 E3 09 ; Map ID #$26: Rubiss' Shrine B4 ; indirect data load target (via $814B) 0x00946B|$02:$945B:02 02 C4 01 0C 19 E3 09 ; Map ID #$27: Rubiss' Shrine B5 ; indirect data load target (via $8153) 0x009473|$02:$9463:02 02 C4 01 0C 19 E3 09 ; Map ID #$28: Rubiss' Shrine B6 ; indirect data load target (via $815B) 0x00947B|$02:$946B:02 02 C4 01 0C 19 E3 09 ; Map ID #$29: Rubiss' Shrine B7 ; indirect data load target (via $8163) 0x009483|$02:$9473:06 06 C2 28 04 77 09 27 38 5A 51 6F E7 BC FE A9 0C 72 04 ; Map ID #$2A: Shrine W of Zahan ; indirect data load target (via $816B) 0x009496|$02:$9486:02 02 C5 01 0C 27 E4 CA 53 26 ; Map ID #$1B: Shrine NW of Lianport ; indirect data load target (via $80F3) 0x0094A0|$02:$9490:06 06 C5 28 05 37 22 B3 C8 63 99 CE 27 AA 4C A5 02 32 44 ; Map ID #$18: Charlock Castle B8 ; indirect data load target (via $80DB) 0x0094B3|$02:$94A3:14 14 C4 20 06 33 79 45 50 C4 62 89 87 A9 5C 24 8A FD 2B E0 88 AC D8 59 69 C5 3C A4 92 56 78 1A EF 2B A2 D9 CC 71 52 92 F8 2B 1C 25 74 9C 74 00 47 39 D5 97 93 69 3C 44 84 13 9B 4B A5 73 F7 66 9D F0 62 77 6E B2 1F 52 44 4F 1D 4D F3 C2 D2 A8 22 55 96 04 B0 4B 81 2C AB E1 2C A3 19 2F 92 CF A1 65 1A 78 2C EA CC 96 25 96 25 94 02 CB 12 CB 12 CA 58 4A 59 62 59 62 59 7F 26 63 FE 86 43 C0 99 D7 46 48 ; Map ID #$3F: Cave to Rhone 6F ; indirect data load target (via $8213) 0x009537|$02:$9527:14 18 48 E0 B9 E0 D4 BF 2C 6B D0 D7 C4 BD D7 01 AF 87 71 52 90 64 55 7D B3 5E 9D 17 D0 CF AE 94 63 25 7D 74 DF 08 6D C9 5E 7A 31 EA C3 EE 3E C9 4E 08 CB 80 DF 82 67 D9 9F 5E E1 BE 13 3E CB 65 9A A9 15 E9 67 05 F3 42 7B 8D 11 CB 7C D4 F7 46 11 10 F1 5D C0 21 CB 10 E4 00 70 C8 39 F1 A7 47 07 87 D4 8F 68 93 4E 10 E2 58 B2 B0 B5 9E AA 47 EE 28 F6 90 9D D7 51 B4 6B 10 02 38 AC F7 1E A8 1E 48 28 94 67 35 D8 6B D8 94 B8 AF 8E 90 B5 E4 73 DD C6 09 58 4B 08 21 AF C9 DA 53 48 9D 53 35 17 1B EC 30 0E 17 86 E1 D0 ED CF 31 FB 73 48 65 9D 3E 13 ; Map ID #$2C: Lake Cave B1 ; indirect data load target (via $817B) 0x0095EA|$02:$95DA:10 10 48 07 B3 E1 1D F7 A0 20 67 DD 00 B4 86 78 82 2D 41 01 E0 14 15 22 8A 08 37 E6 14 3C 13 C5 1A 2E 37 47 1E 2A 72 F2 E5 CC 29 CE 83 A5 24 1D 84 85 FE 5B C0 1E 82 4C 78 32 BC 49 E5 F9 F6 92 9C 8C D7 F8 56 0A 44 24 F4 68 21 C3 2B F2 27 03 D1 00 53 56 23 C1 4A CD F7 F8 3C 26 6D 9D EB A0 3C ; Map ID #$2D: Lake Cave B2 ; indirect data load target (via $8183) 0x00964B|$02:$963B:0E 10 48 E2 80 E0 00 6B 40 08 78 F3 C3 4B AB D4 32 72 A8 9C 7E 2F 82 D1 C9 3A 21 51 B7 F2 78 6D FC 9E ED 91 4C 1A 97 F1 9E B7 C3 5E C6 7E FB C6 92 7A 3C 96 CF 2F 1B AD F2 D6 04 F2 62 A4 39 D0 93 71 28 2D E9 C3 29 52 16 A0 A0 05 B8 58 D7 9A 75 C2 74 CB AD F1 1B 1D F6 A3 54 1E 3F 1F AB E3 FA 5F 22 03 ; Map ID #$2B: Cave to Hamlin ; indirect data load target (via $8173) 0x0096AF|$02:$969F:06 16 48 E0 41 DF 09 39 83 F0 A1 41 D0 00 03 F8 0C 08 F3 3C F3 98 96 C8 01 40 1A 03 08 DE 80 80 ; Map ID #$2E: Sea Cave B1 ; indirect data load target (via $818B) 0x0096CF|$02:$96BF:0E 0E 48 07 AA A5 15 22 82 80 05 2C 94 1C 03 A9 44 C1 40 3C 5B E2 A9 05 1D 21 AB 9C 13 9D 11 CF 20 A1 06 37 E2 81 EF F0 0B A3 E3 41 AD 00 B1 2A B7 C1 09 D1 D3 C9 A8 8F 1E 19 C2 85 1B 89 06 33 1A 00 5C 76 3E F0 A9 C3 A1 14 B7 93 32 78 18 10 31 4D CF 91 DE 3B 20 10 ; Map ID #$2F: Sea Cave B2 ; indirect data load target (via $8193) 0x009727|$02:$9717:12 14 48 07 AB D8 04 00 00 20 00 04 01 8A 90 5A 82 A1 69 02 D2 11 6A 5A 10 87 80 08 07 40 35 5F 15 31 C2 CE 9E 67 4E 34 00 4E 43 27 1A F7 1A 30 E3 16 21 AD 13 C7 9C 3E 5A 79 A7 B8 88 A9 CA 51 4E 6C 22 FE 6C 0C 5E 02 F0 65 4E 20 07 38 24 B2 F3 FA 59 D3 39 5D 53 57 C7 D0 78 EF 07 DB DB 1F 54 E2 BC 27 8E 09 88 8B A3 B6 F9 4E 14 D1 31 22 90 6D AB 17 49 96 5C ED 05 91 75 91 55 63 99 02 98 CE BD 27 E8 90 DE 35 06 BD 12 64 4E 82 31 8B F9 0F 34 E7 6C DB A1 75 BF 39 E7 A0 20 ; Map ID #$30: Sea Cave B3-1 ; indirect data load target (via $819B) 0x0097C4|$02:$97B4:0A 08 48 E0 9E 84 25 94 A2 92 9E 49 F0 6F A0 4E 1E 8F C5 86 20 BC 52 7C 12 A9 67 88 C2 80 4E 49 E9 21 AB D0 81 ; Map ID #$31: Sea Cave B3-2 ; indirect data load target (via $81A3) 0x0097E9|$02:$97D9:10 10 48 E2 BE 42 0A 0E 08 84 05 00 54 78 6E 45 5A 86 7B DE 39 12 14 5A 9B F9 EE 17 90 4F C7 B5 BF 33 E5 2C 2B 20 9E 08 66 6F C0 14 00 55 25 95 B2 C6 7B E6 F9 79 71 29 67 65 8C F1 08 08 08 47 EC BA B6 CE 6C A0 98 D7 DC 43 8D 0A 6F 0A 65 F2 56 9F E4 CD 56 E9 17 A9 D1 21 07 67 D2 41 79 EF B8 95 FF A7 8D 01 ; Map ID #$37: Cave to Rhone B1 ; indirect data load target (via $81D3) 0x00984F|$02:$983F:0A 0A 48 E0 45 D8 27 27 43 9A E1 17 B0 52 6E ; Map ID #$38: Cave to Rhone 1F ; indirect data load target (via $81DB) 0x00985E|$02:$984E:0C 0C 48 E0 A1 55 95 62 C4 AB 22 59 5B 2F CB 2B 65 59 F3 67 CA 95 BF 25 96 25 5F 26 1F 9B ED 43 C5 B4 FD 5F 7D 0E 39 9E E8 39 76 A3 B3 84 C6 C1 47 94 D8 3C 70 51 31 ; Map ID #$39: Cave to Rhone 2F-1 ; indirect data load target (via $81E3) 0x009895|$02:$9885:1C 06 48 E2 95 50 00 00 04 78 27 04 67 E9 B7 F2 7B C1 9F A6 DF C9 EF 06 7E 9B 7F 27 BC 19 FA 6D FC 9E F0 67 E9 B7 F2 7B C3 C0 73 23 54 F0 04 78 50 15 91 20 CB C3 42 D8 C8 88 34 15 15 6D 3E 07 84 61 B8 96 2E 0E 2B 6B D9 B6 1D 73 57 01 ; Map ID #$3A: Cave to Rhone 2F-2 ; indirect data load target (via $81EB) 0x0098E3|$02:$98D3:1C 06 48 E2 95 50 00 00 04 78 27 04 67 E9 B7 F2 7B C1 9F A6 DF C9 EF 06 7E 9B 7F 27 BC 19 FA 6D FC 9E F0 67 E9 B6 AF BC 79 38 BC A8 87 32 35 4F 1C 07 85 01 59 12 0C BC 34 2D 8C 88 83 41 51 56 D3 E2 F8 96 1B 84 60 60 D5 F5 CD 87 66 DA F8 A0 10 ; Map ID #$3B: Cave to Rhone 2F-3 ; indirect data load target (via $81F3) 0x009934|$02:$9924:0C 0A 48 E0 90 0B 40 BA 79 43 81 46 3F 4F 06 3F 4F 3D 93 8D 1A 9C 50 98 01 E3 F5 72 F1 E1 CF E8 B4 BE 12 65 88 70 A0 1A 09 79 C0 8B 6E A3 43 2D 2C 16 00 79 49 ; Map ID #$3C: Cave to Rhone 3F ; indirect data load target (via $81FB) 0x009969|$02:$9959:14 1C 48 E2 9F 3C 25 8A D1 67 CA 25 94 43 7C 64 B2 A2 B7 E5 94 78 E2 90 0B 07 15 81 86 7D 8B 9E 5C F5 8F 78 17 86 0B 53 75 85 34 4F B4 1C 11 E8 4F 04 4E 86 F4 B9 F6 6F A5 96 37 C5 CF 12 CB 33 D6 C6 C1 F1 65 8C 5F 59 BE 96 5C F5 97 7E 6F A5 84 AE 20 A5 2C A8 B2 CB 38 23 D7 87 7D C7 7E 94 5B C9 4C 96 B7 E2 3D 6D 1D E5 AE 75 D6 05 AA 4C D3 D9 1F 49 34 2C 10 52 20 9E 4E D4 09 50 56 A9 CD 1F B5 19 C9 9F 9A 94 3D 47 DA 52 67 F6 CB E0 FE 41 97 42 B7 1F 7E C3 C2 81 39 16 42 20 46 82 A1 49 D5 33 A6 0A 2E AD 8E 01 97 46 28 4B C4 42 8A 43 C2 A5 8B FA 01 8A C8 BE 59 AC FB E7 36 51 FA 53 9F 99 C8 54 6D 2B 16 65 EC 91 80 FC 00 12 03 8B 8A 42 BB 0D 58 D8 F4 B7 47 D0 34 4C 9B B1 9E F0 4B 82 E4 1E 5E 17 D5 FC 17 C7 CC 98 CD FD 57 D7 4D C4 DF 10 10 ; Map ID #$3D: Cave to Rhone 4F ; indirect data load target (via $8203) 0x009A60|$02:$9A50:10 12 48 E0 42 2E E1 4F FC 00 07 88 27 37 8E F5 DF 3B F4 3B 84 98 78 87 0A F0 89 89 7A 45 C6 BE 23 64 5F 91 F2 16 ; Map ID #$3E: Cave to Rhone 5F ; indirect data load target (via $820B) 0x009A86|$02:$9A76:12 14 48 07 9F BA 85 37 C0 00 A0 DF 0D F0 05 00 03 7C A6 F8 37 C3 7D D1 DD 04 E8 14 6F CD F4 F4 A2 6A 55 6C 26 0B 1B E4 5B B7 6E 6C BD BF 9C F3 76 A4 D0 78 A0 00 73 8E 71 E6 B6 00 23 EA 5D 01 A5 4B 53 74 4F DC BA 28 51 9E 0E 61 40 75 4A 75 78 00 00 E0 D0 F0 D1 5D 71 E7 4D 73 FA 46 FE DE 1A EB 36 E5 CC 4F 8E F2 0E 31 1E 34 CF 9A 1F 70 F0 32 74 B2 1C 8C 5A C8 14 10 59 12 62 57 8D 5E 42 81 D0 31 60 0B ; Map ID #$40: Spring of Bravery ; indirect data load target (via $821B) 0x009B0C|$02:$9AFC:12 14 48 01 42 67 35 5A C0 3A F3 9E 31 69 74 83 56 59 4B 2C A0 AD B3 C6 CB 2F 81 B5 3C 1B E2 9A 8B 2F 80 01 40 1B E0 0A 00 F0 45 E9 E5 CF FB C7 83 8A A0 80 59 CA 0C 97 8C EA C3 86 78 B2 A5 4A 96 02 AF 3F E4 75 64 22 84 0B 17 FB 2E 35 27 46 21 C2 CA AC A8 01 78 82 46 B1 0B 14 6D 24 F3 C8 B4 23 B3 02 55 F2 A5 65 0C 67 51 3C 6B 76 2E 66 4B 5F 66 B5 A1 2C 68 89 E5 A2 E0 90 9E 0D 93 BB 7A 9E 34 01 ; Map ID #$43: Cave to Rimuldar ; indirect data load target (via $8233) 0x009B90|$02:$9B80:04 0E 48 E0 45 C8 98 DE 44 22 ; Map ID #$44: Hargon's Castle 2F ; indirect data load target (via $823B) 0x009B9A|$02:$9B8A:0C 0A 48 07 80 20 02 00 40 02 00 E5 0A C2 58 96 12 F8 FA C4 DC 10 A5 3B 41 51 14 6D 01 ; Map ID #$45: Hargon's Castle 3F ; indirect data load target (via $8243) 0x009BB7|$02:$9BA7:0A 0A 48 07 8D C9 56 54 20 04 00 83 12 CA 59 5E 08 1E 3D 79 31 A4 31 29 1D A6 E2 8A 00 C2 7A E3 26 FE FF 42 19 CE A8 1A ; Map ID #$46: Hargon's Castle 4F ; indirect data load target (via $824B) 0x009BDF|$02:$9BCF:0A 0A 48 07 9F 22 55 28 CF 1A 14 02 80 50 6F 8A 7F 8F 2A 4E 11 0C 4A D9 BC 0D 62 AD 60 A0 15 86 5C 0E ; Map ID #$47: Hargon's Castle 5F ; indirect data load target (via $8253) 0x009C01|$02:$9BF1:0C 08 48 07 80 A4 47 3D 48 8F 00 03 AD 2F 80 70 10 8B C7 AE 26 38 87 0A 04 D8 90 A7 C6 89 46 66 2D F2 B0 6D 91 7B 5C 86 ; Map ID #$48: Hargon's Castle 6F ; indirect data load target (via $825B) 0x009C29|$02:$9C19:0E 07 48 07 90 E9 4B 2A CA 59 D0 14 A5 95 65 2C F1 EA C9 B6 21 89 2F 49 49 14 53 8F 51 F2 82 5E 8F 02 ; Map ID #$49: Moon Tower 1F ; indirect data load target (via $8263) 0x009C4B|$02:$9C3B:0C 0C 48 07 81 30 A1 52 28 52 A4 52 A4 52 95 22 8D 78 A7 8A 07 85 9C A1 13 99 73 92 C1 C5 20 F2 62 18 B6 ED BF 6F 45 E0 71 40 A8 29 C1 39 10 72 F4 E1 7C AB 44 78 D6 48 B1 29 10 E1 4C 0F D0 02 90 65 1A 26 AF B3 00 A2 ; Map ID #$4A: Moon Tower 2F ; indirect data load target (via $826B) 0x009C93|$02:$9C83:0C 0C 48 07 89 A5 A2 94 0A 48 52 8A 91 55 22 95 BE 0A 91 4A A9 14 57 8A 29 D5 CB 12 F3 3A BC 88 17 C9 8B 68 79 F8 F0 EC 8B 82 D6 77 90 E9 C1 38 50 92 F1 20 85 87 4E 23 CC B2 C5 95 60 88 22 60 B0 34 00 9C 19 56 99 B3 6A 00 37 ; Map ID #$4B: Moon Tower 3F ; indirect data load target (via $8273) 0x009CDE|$02:$9CCE:0A 0A 48 E2 A1 82 8A 57 82 C4 28 20 DA 3E 1A 7A 45 73 00 F1 E4 B1 9B 62 6B 77 45 C5 94 E1 40 17 12 1E 29 10 89 0A 9E BA CA C7 C1 06 AF 46 03 ; Map ID #$4C: Moon Tower 4F ; indirect data load target (via $827B) 0x009D0D|$02:$9CFD:08 08 48 E2 98 45 3C 15 AA 75 5A 0D FC 09 1E F2 D8 AF 1F AE 91 33 BB 88 63 58 EC 50 DF 26 4F C3 67 2C 09 ; Map ID #$4D: Moon Tower 5F ; indirect data load target (via $8283) 0x009D30|$02:$9D20:06 06 48 E2 92 45 3C D3 5A 78 28 44 B9 E5 33 F7 DE 3D 9C E2 68 10 A5 4A 34 34 46 4E 98 26 ; Map ID #$4E: Moon Tower 6F ; indirect data load target (via $828B) 0x009D4E|$02:$9D3E:06 04 48 07 8B AA 13 C9 A4 7A C6 44 ; Map ID #$4F: Moon Tower 7F ; indirect data load target (via $8293) 0x009D5A|$02:$9D4A:04 04 48 07 56 87 D1 74 29 3A ; Map ID #$50: Lighthouse 1F ; indirect data load target (via $829B) 0x009D64|$02:$9D54:16 16 48 E0 90 40 5C F3 58 0F B0 6A 1E F0 00 0A 6B 03 EC 18 DF 8A 3D BE F0 1A 81 E0 0A 6B 7E 03 5A 37 D0 3E 1E 78 00 05 01 58 FA 31 80 35 2E 2B D6 12 AA E1 2A AE 12 AA E1 9F BF EF 7B C5 F7 90 79 39 5E BD D7 1C 98 B9 E0 A7 0A 8A 73 11 7C 55 06 BF 6B 22 51 EE B0 69 1D 7E 03 ; Map ID #$51: Lighthouse 2F ; indirect data load target (via $82A3) 0x009DBF|$02:$9DAF:12 12 48 E2 94 70 0A 0E 96 A2 B8 1D 00 21 00 38 0B 0F 05 1D 16 94 BC CF 12 02 44 4E 9C 60 40 63 05 33 DF 61 2F B9 A6 8B 48 31 2D 5F 0C 2D F2 D6 2C 8C FA 68 24 5B 86 7D F7 86 7A D3 C3 0B 7D E3 CE D9 CB 5D 6B E2 60 3C 45 9A B4 E7 02 E5 7C 7C BC 2C A7 0A F2 9F 20 E2 38 92 B2 85 53 37 D0 28 F4 8B AE 4F BE C6 AB 9D 29 2D 2E 55 46 ED 5E F3 04 10 53 32 62 4D A4 84 96 EE 3A AA 71 83 0B E2 FC 65 9E B3 BE AF E5 DC 97 63 80 AF ; Map ID #$52: Lighthouse 3F ; indirect data load target (via $82AB) 0x009E4B|$02:$9E3B:10 10 48 E2 88 13 B4 12 C6 A3 CE E7 40 51 CD F8 20 3C 08 DA EA 28 8D 08 C0 2D ED 34 90 43 7E 0A 0E 4A D4 96 BB 20 49 A4 B5 7D DF 08 0A 73 F4 90 8A E1 F1 78 33 58 FC B8 78 7E 03 A7 6F 5D FF AB EC 13 F9 F0 3B DC 94 DB 29 8E 17 03 D9 08 2A 12 CF 36 9C 2D 0D 6C 9F 4C 14 88 B0 49 B5 7D C5 69 FA 8E B2 53 19 03 57 06 35 A5 66 3B 6F 4B 60 CF F0 00 53 ; Map ID #$53: Lighthouse 4F ; indirect data load target (via $82B3) 0x009EBE|$02:$9EAE:0E 0E 48 E2 B0 04 B2 93 A0 71 04 95 66 96 55 9E 63 E8 78 20 04 25 C0 D5 91 3E 58 A4 AB 61 2D 5F 25 E0 B8 BB F0 95 BE 22 EF B9 C0 38 E5 2D 74 CC 24 F2 61 D8 B6 3D B0 71 7D 48 F4 8D 8F 96 F0 4B D0 14 E7 5F AE 42 87 AB A3 89 48 51 B8 94 27 D1 A0 C6 64 4F 9E 4C C1 5E 95 86 C0 AC C1 23 C1 C0 6B 58 A0 0B ; Map ID #$54: Lighthouse 5F ; indirect data load target (via $82BB) 0x009F22|$02:$9F12:0E 0E 48 E2 83 21 CC 3A 89 4E BB 0A D8 7C 29 09 2A C2 1C 2D 96 12 AC F0 25 67 70 70 82 5B 10 96 F2 A4 A3 64 F8 62 5A BE 68 7A 0E A6 54 E8 9D 29 6F 28 E8 24 E2 91 E3 C3 70 0C 7B 6F DE F9 B2 69 1A 6E A5 DA 76 45 E1 71 92 9C CC FE 09 D7 0A B2 AD 13 04 50 58 46 84 9B 05 0F 57 47 12 84 90 A7 22 8B 80 C5 7A DE 3C 06 ; Map ID #$55: Lighthouse 6F ; indirect data load target (via $82C3) 0x009F8A|$02:$9F7A:0A 0E 48 04 85 B2 73 C0 8F 3C 7F 92 C2 58 96 13 8B 91 45 2B 96 14 10 04 B0 84 2D 22 A1 3C 7C 5E ED A7 66 98 91 B2 43 1C 48 31 89 14 28 15 51 F4 6A 83 8C F2 9E 14 2C FD 14 36 09 ; Map ID #$56: Lighthouse 7F ; indirect data load target (via $82CB) 0x009FC5|$02:$9FB5:0A 0A 48 07 98 4B 09 62 5E 5D 26 F9 62 58 4B 12 C7 E4 30 F9 D1 E2 B2 DD 1E D1 36 84 30 A2 DF A5 1B 12 DE CA BB 11 13 ; Map ID #$57: Lighthouse 8F ; indirect data load target (via $82D3) 0x009FEC|$02:$9FDC:08 08 48 07 91 56 25 EB 75 89 7F 03 1B 5F FF E0 7D 63 29 4A D1 46 D2 5D ; Map ID #$58: Wind Tower 1F ; indirect data load target (via $82DB) 0x00A004|$02:$9FF4:0C 0C 48 07 84 84 10 C3 7D EE 66 13 7C 6F C2 58 97 9C 24 B0 81 84 BE 04 10 9B EF 26 17 9B 6F 45 E0 0A 4E ; Map ID #$59: Wind Tower 2F ; indirect data load target (via $82E3) 0x00A027|$02:$A017:0C 0C 48 07 95 E5 85 34 DF 9E 14 DF 02 CA 69 9E 57 80 A6 99 EA F1 BE 14 F2 60 18 DE B0 3D BF 42 C2 CB 8C 94 9B ; Map ID #$5A: Wind Tower 3F ; indirect data load target (via $82EB) 0x00A04C|$02:$A03C:0C 0C 48 07 88 E0 04 30 DF 4F 0C 25 A3 7E 02 58 60 9B E7 84 13 7D E2 79 38 4C 9B 43 1E B3 88 60 05 D8 CA 44 ; Map ID #$5B: Wind Tower 4F ; indirect data load target (via $82F3) 0x00A070|$02:$A060:0A 0A 48 07 97 E9 BE 28 29 AD 7B C2 CA B8 6F CA B2 81 5E 79 38 1D 5E CE 2C 79 5D 6F 40 64 ; Map ID #$5C: Wind Tower 5F ; indirect data load target (via $82FB) 0x00A08E|$02:$A07E:0A 0A 48 07 8D 4A 52 83 7C 52 E7 90 8A A2 5D 17 CA 1E 3D 56 B3 BD E3 26 C7 46 42 6F ; Map ID #$5D: Wind Tower 6F ; indirect data load target (via $8303) 0x00A0AA|$02:$A09A:0A 0A 48 E0 81 C4 CF 5C F1 9E B2 E7 8C F5 DF 97 3C 67 AC B9 E7 2C 97 FC 78 9C 07 68 9B EE 06 AF 47 B8 1E B7 4A 32 28 ; Map ID #$5E: Wind Tower 7F ; indirect data load target (via $830B) 0x00A0D1|$02:$A0C1:06 06 48 E0 98 9D 12 E2 C7 8F 03 37 6B 5B 24 98 24 27 ; Map ID #$5F: Wind Tower 8F ; indirect data load target (via $8313) 0x00A0E3|$02:$A0D3:06 06 48 07 82 5C 8C E8 77 24 3F 1F 2B 73 64 79 C5 DB 29 09 ; Map ID #$60: Dragon Horn South 1F ; indirect data load target (via $831B) 0x00A0F7|$02:$A0E7:08 08 48 02 F8 C0 C7 FF 3D DE 4B 02 58 12 C0 96 7F 6E AE 97 51 3D 48 4C ; Map ID #$61: Dragon Horn South 2F ; indirect data load target (via $8323) 0x00A10F|$02:$A0FF:08 08 48 E1 52 B4 15 AA 96 52 CA 59 E2 F8 C0 C7 FF 27 A8 FC C6 4D ; Map ID #$62: Dragon Horn South 3F ; indirect data load target (via $832B) 0x00A125|$02:$A115:08 08 48 E1 52 B4 15 AA 96 52 CA 59 E2 F8 FF C7 C0 1F 99 3D 48 4D ; Map ID #$63: Dragon Horn South 4F ; indirect data load target (via $8333) 0x00A13B|$02:$A12B:08 08 48 E1 52 B4 15 AA 96 52 CA 59 E3 F3 27 A8 BF F1 F0 3E 04 4D ; Map ID #$64: Dragon Horn South 5F ; indirect data load target (via $833B) 0x00A151|$02:$A141:08 08 48 E1 52 B4 15 AA 96 52 CA 59 E2 F8 FF C7 C0 1F 99 3D 48 4D ; Map ID #$65: Dragon Horn South 6F ; indirect data load target (via $8343) 0x00A167|$02:$A157:06 06 48 07 8C 8B 29 65 2C AF 16 2F 1E F0 F5 46 40 ; Map ID #$66: Dragon Horn North 1F ; indirect data load target (via $834B) 0x00A178|$02:$A168:08 08 48 02 81 D4 0A 05 02 F9 E1 14 B2 C2 59 61 2C B0 96 5F 27 59 08 ; Map ID #$67: Dragon Horn North 2F ; indirect data load target (via $8353) 0x00A18F|$02:$A17F:08 08 48 40 49 D8 F7 B8 96 58 4B 2C 25 96 12 CF 26 E0 F8 C6 4D ; Map ID #$68: Dragon Horn North 3F ; indirect data load target (via $835B) 0x00A1A4|$02:$A194:08 08 48 40 49 D8 F7 B8 96 58 4B 2C 25 96 12 CF 26 E0 F8 C6 4D ; Map ID #$69: Dragon Horn North 4F ; indirect data load target (via $8363) 0x00A1B9|$02:$A1A9:08 08 48 40 49 D8 F7 B8 96 58 4B 2C 25 96 12 CF 1F 19 37 08 4D ; Map ID #$6A: Dragon Horn North 5F ; indirect data load target (via $836B) 0x00A1CE|$02:$A1BE:08 08 48 40 49 D8 F7 B8 96 58 4B 2C 25 96 12 CF 1F 19 37 08 4D ; Map ID #$6B: Dragon Horn North 6F ; indirect data load target (via $8373) 0x00A1E3|$02:$A1D3:08 08 48 40 49 D8 F7 B8 96 58 4B 2C 25 96 12 CF 1F 19 37 08 4D ; Map ID #$6C: Dragon Horn North 7F ; indirect data load target (via $837B) 0x00A1F8|$02:$A1E8:08 08 48 02 8F 14 0A 05 EF 95 F3 D7 EB 2F 77 A5 96 12 CB 09 65 9E 3D A1 90 ; Map ID #$6D: Moonbrooke (prologue) ; indirect data load target (via $86D7) 0x00A211|$02:$A201:14 14 C2 00 2A F8 00 00 0E 95 C0 EC 42 5D F0 FC 18 52 24 42 78 6A 42 05 53 C2 51 F5 49 7C 2D 8E 00 94 D0 78 01 41 40 82 05 50 81 A2 50 14 68 9A 78 CF 2A C1 46 F9 44 A9 E1 BE 59 65 11 01 E8 60 BE 10 67 81 2F F5 B0 75 DC 1D 3E 87 32 43 CD 47 D1 E3 A1 BA 78 FC 9B 92 CB 69 BD 3A 67 0A F6 91 9C 88 4E F8 31 96 4C 10 ; Save Point ID #$00: Midenhall 2F ; external indirect data load target (via $06:$BFA9) ; indirect data load target 0x00A279|$02:$A269:81 D6 3C ; Save Point ID #$01: Cannock ; external indirect data load target (via $06:$BFAB) 0x00A27C|$02:$A26C:81 A0 11 ; Save Point ID #$02: Tantegel ; external indirect data load target (via $06:$BFAD) 0x00A27F|$02:$A26F:81 3A 2E ; Save Point ID #$03: Osterfair ; external indirect data load target (via $06:$BFAF) 0x00A282|$02:$A272:81 D6 8E ; Save Point ID #$04: Beran ; external indirect data load target (via $06:$BFB1) 0x00A285|$02:$A275:81 23 C0 ; Save Point ID #$05: Rhone Shrine ; external indirect data load target (via $06:$BFB3) 0x00A288|$02:$A278:81 8A 9B ; Save Point ID #$06: Hamlin ; external indirect data load target (via $06:$BFB5) 0x00A28B|$02:$A27B:81 7D 56 ; warp points (map ID, X-pos, Y-pos); other end is same index in $03:$BD13 ; external indirect data load target (via $0F:$D7EA) ; indirect data load target 0x00A28E|$02:$A27E:81 D6 3B 0x00A291|$02:$A281:81 A8 32 0x00A294|$02:$A284:81 A0 10 0x00A297|$02:$A287:81 7D 55 0x00A29A|$02:$A28A:81 62 6F 0x00A29D|$02:$A28D:81 1D 37 0x00A2A0|$02:$A290:81 3A 2D 0x00A2A3|$02:$A293:81 D6 8D 0x00A2A6|$02:$A296:81 F0 E9 0x00A2A9|$02:$A299:81 46 85 0x00A2AC|$02:$A29C:81 94 D1 0x00A2AF|$02:$A29F:81 23 C1 ; external indirect data load target (via $06:$BF9D) 0x00A2B2|$02:$A2A2:81 5F A5 0x00A2B5|$02:$A2A5:81 E6 15 ; external indirect data load target (via $06:$BF8F) 0x00A2B8|$02:$A2A8:81 8E 18 0x00A2BB|$02:$A2AB:81 05 2B 0x00A2BE|$02:$A2AE:81 4D 4F 0x00A2C1|$02:$A2B1:81 19 9D 0x00A2C4|$02:$A2B4:81 D0 D8 0x00A2C7|$02:$A2B7:81 8A 9A 0x00A2CA|$02:$A2BA:81 4A 78 0x00A2CD|$02:$A2BD:81 4C 78 0x00A2D0|$02:$A2C0:81 83 C7 0x00A2D3|$02:$A2C3:81 E2 67 0x00A2D6|$02:$A2C6:81 C8 73 0x00A2D9|$02:$A2C9:81 EC EB 0x00A2DC|$02:$A2CC:81 89 1C ; external indirect data load target (via $06:$BF91) 0x00A2DF|$02:$A2CF:81 5D 0C ; external indirect data load target (via $06:$BF93) 0x00A2E2|$02:$A2D2:81 B5 A7 ; external indirect data load target (via $06:$BFA3) 0x00A2E5|$02:$A2D5:81 8B 7B ; external indirect data load target (via $06:$BF95) 0x00A2E8|$02:$A2D8:81 3C 33 ; external indirect data load target (via $06:$BFA1) 0x00A2EB|$02:$A2DB:81 3F 67 ; external indirect data load target (via $06:$BF97) 0x00A2EE|$02:$A2DE:81 73 C5 ; external indirect data load target (via $06:$BF9F) 0x00A2F1|$02:$A2E1:81 47 91 ; external indirect data load target (via $06:$BFA5) 0x00A2F4|$02:$A2E4:81 0C 47 ; external indirect data load target (via $06:$BFA7) 0x00A2F7|$02:$A2E7:81 0D 43 ; external indirect data load target (via $06:$BF9B) 0x00A2FA|$02:$A2EA:81 4F 2D ; external indirect data load target (via $06:$BF99) 0x00A2FD|$02:$A2ED:81 DE 08 0x00A300|$02:$A2F0:81 5F A5 0x00A303|$02:$A2F3:81 8E 1D 0x00A306|$02:$A2F6:81 6D B9 0x00A309|$02:$A2F9:81 4F 30 0x00A30C|$02:$A2FC:01 D5 3B 0x00A30F|$02:$A2FF:01 A7 32 0x00A312|$02:$A302:01 9F 10 0x00A315|$02:$A305:01 7C 55 0x00A318|$02:$A308:01 61 6F 0x00A31B|$02:$A30B:01 1C 37 0x00A31E|$02:$A30E:01 39 2D 0x00A321|$02:$A311:01 D5 8D 0x00A324|$02:$A314:01 EF E9 0x00A327|$02:$A317:01 45 85 0x00A32A|$02:$A31A:01 93 D1 0x00A32D|$02:$A31D:01 22 C1 0x00A330|$02:$A320:01 5E A5 0x00A333|$02:$A323:01 3B 33 0x00A336|$02:$A326:02 03 07 0x00A339|$02:$A329:03 15 02 0x00A33C|$02:$A32C:07 07 05 0x00A33F|$02:$A32F:07 0B 05 0x00A342|$02:$A332:09 0A 0E 0x00A345|$02:$A335:0D 06 04 0x00A348|$02:$A338:0E 05 05 0x00A34B|$02:$A33B:11 01 03 0x00A34E|$02:$A33E:13 07 04 0x00A351|$02:$A341:44 04 0F 0x00A354|$02:$A344:1A 05 07 0x00A357|$02:$A347:23 03 03 0x00A35A|$02:$A34A:24 01 01 0x00A35D|$02:$A34D:25 01 01 0x00A360|$02:$A350:26 01 01 0x00A363|$02:$A353:27 01 01 0x00A366|$02:$A356:28 01 01 0x00A369|$02:$A359:AA 01 01 0x00A36C|$02:$A35C:83 07 0C 0x00A36F|$02:$A35F:A2 02 03 0x00A372|$02:$A362:8F 02 15 0x00A375|$02:$A365:9D 03 02 0x00A378|$02:$A368:9A 05 0A 0x00A37B|$02:$A36B:9E 06 02 0x00A37E|$02:$A36E:9C 07 04 0x00A381|$02:$A371:9E 02 02 0x00A384|$02:$A374:9B 03 03 0x00A387|$02:$A377:9E 04 02 0x00A38A|$02:$A37A:9D 05 02 0x00A38D|$02:$A37D:9D 07 02 0x00A390|$02:$A380:A0 00 01 0x00A393|$02:$A383:95 0C 02 0x00A396|$02:$A386:A1 04 03 0x00A399|$02:$A389:A1 04 03 0x00A39C|$02:$A38C:2C 02 09 0x00A39F|$02:$A38F:2E 04 05 0x00A3A2|$02:$A392:2F 0E 13 0x00A3A5|$02:$A395:2F 02 03 0x00A3A8|$02:$A398:2F 04 07 0x00A3AB|$02:$A39B:2F 02 17 0x00A3AE|$02:$A39E:2F 0C 19 0x00A3B1|$02:$A3A1:2F 16 1D 0x00A3B4|$02:$A3A4:2F 1E 1F 0x00A3B7|$02:$A3A7:2F 1E 23 0x00A3BA|$02:$A3AA:2F 0E 05 0x00A3BD|$02:$A3AD:31 1C 03 0x00A3C0|$02:$A3B0:31 16 0B 0x00A3C3|$02:$A3B3:31 18 19 0x00A3C6|$02:$A3B6:31 0E 03 0x00A3C9|$02:$A3B9:31 06 03 0x00A3CC|$02:$A3BC:31 0C 09 0x00A3CF|$02:$A3BF:31 0E 0B 0x00A3D2|$02:$A3C2:31 10 0D 0x00A3D5|$02:$A3C5:31 08 09 0x00A3D8|$02:$A3C8:31 0A 0B 0x00A3DB|$02:$A3CB:31 0C 0D 0x00A3DE|$02:$A3CE:31 0E 0F 0x00A3E1|$02:$A3D1:31 08 0D 0x00A3E4|$02:$A3D4:31 0A 0F 0x00A3E7|$02:$A3D7:31 0A 1D 0x00A3EA|$02:$A3DA:32 0A 03 0x00A3ED|$02:$A3DD:32 02 0F 0x00A3F0|$02:$A3E0:32 02 21 0x00A3F3|$02:$A3E3:4A 14 05 0x00A3F6|$02:$A3E6:4A 14 15 0x00A3F9|$02:$A3E9:4A 0A 0F 0x00A3FC|$02:$A3EC:4A 02 15 0x00A3FF|$02:$A3EF:4A 04 03 0x00A402|$02:$A3F2:4B 08 0B 0x00A405|$02:$A3F5:4B 04 03 0x00A408|$02:$A3F8:4B 10 03 0x00A40B|$02:$A3FB:4C 04 05 0x00A40E|$02:$A3FE:4C 0A 0D 0x00A411|$02:$A401:4D 04 05 0x00A414|$02:$A404:4D 02 09 0x00A417|$02:$A407:4E 0A 03 0x00A41A|$02:$A40A:4F 04 05 0x00A41D|$02:$A40D:34 08 19 0x00A420|$02:$A410:34 0C 07 0x00A423|$02:$A413:34 04 03 0x00A426|$02:$A416:34 02 05 0x00A429|$02:$A419:34 16 19 0x00A42C|$02:$A41C:35 02 09 0x00A42F|$02:$A41F:35 0E 03 0x00A432|$02:$A422:35 0A 0B 0x00A435|$02:$A425:35 02 19 0x00A438|$02:$A428:35 14 1D 0x00A43B|$02:$A42B:36 02 03 0x00A43E|$02:$A42E:36 0A 07 0x00A441|$02:$A431:36 10 03 0x00A444|$02:$A434:51 0C 0D 0x00A447|$02:$A437:51 14 0D 0x00A44A|$02:$A43A:51 14 15 0x00A44D|$02:$A43D:51 0C 15 0x00A450|$02:$A440:52 1E 01 0x00A453|$02:$A443:52 1C 09 0x00A456|$02:$A446:52 1E 17 0x00A459|$02:$A449:52 14 0F 0x00A45C|$02:$A44C:52 10 1B 0x00A45F|$02:$A44F:52 0A 1B 0x00A462|$02:$A452:52 02 01 0x00A465|$02:$A455:53 14 15 0x00A468|$02:$A458:53 16 1B 0x00A46B|$02:$A45B:53 02 0F 0x00A46E|$02:$A45E:53 04 0B 0x00A471|$02:$A461:54 1A 01 0x00A474|$02:$A464:54 1A 0F 0x00A477|$02:$A467:54 16 11 0x00A47A|$02:$A46A:54 00 01 0x00A47D|$02:$A46D:54 04 05 0x00A480|$02:$A470:54 02 17 0x00A483|$02:$A473:55 10 17 0x00A486|$02:$A476:55 12 1B 0x00A489|$02:$A479:55 04 0B 0x00A48C|$02:$A47C:55 10 03 0x00A48F|$02:$A47F:55 10 0F 0x00A492|$02:$A482:56 00 03 0x00A495|$02:$A485:56 04 05 0x00A498|$02:$A488:56 02 11 0x00A49B|$02:$A48B:56 00 13 0x00A49E|$02:$A48E:57 06 0B 0x00A4A1|$02:$A491:38 06 0F 0x00A4A4|$02:$A494:38 14 03 0x00A4A7|$02:$A497:38 0A 15 0x00A4AA|$02:$A49A:38 0E 0D 0x00A4AD|$02:$A49D:3B 06 03 0x00A4B0|$02:$A4A0:3B 06 0D 0x00A4B3|$02:$A4A3:3B 14 11 0x00A4B6|$02:$A4A6:3C 0E 21 0x00A4B9|$02:$A4A9:3C 02 2B 0x00A4BC|$02:$A4AC:3D 02 21 0x00A4BF|$02:$A4AF:3D 0A 21 0x00A4C2|$02:$A4B2:3D 12 21 0x00A4C5|$02:$A4B5:3D 1A 21 0x00A4C8|$02:$A4B8:3E 0E 1D 0x00A4CB|$02:$A4BB:3E 20 0D 0x00A4CE|$02:$A4BE:3E 12 0F 0x00A4D1|$02:$A4C1:3E 12 19 0x00A4D4|$02:$A4C4:3E 20 05 0x00A4D7|$02:$A4C7:3F 12 15 0x00A4DA|$02:$A4CA:59 06 13 0x00A4DD|$02:$A4CD:59 0C 0B 0x00A4E0|$02:$A4D0:59 16 01 0x00A4E3|$02:$A4D3:5A 00 01 0x00A4E6|$02:$A4D6:5A 08 03 0x00A4E9|$02:$A4D9:5A 0A 0F 0x00A4EC|$02:$A4DC:5B 02 05 0x00A4EF|$02:$A4DF:5B 0A 09 0x00A4F2|$02:$A4E2:5B 00 11 0x00A4F5|$02:$A4E5:5C 04 09 0x00A4F8|$02:$A4E8:5C 08 09 0x00A4FB|$02:$A4EB:5C 08 13 0x00A4FE|$02:$A4EE:5C 12 13 0x00A501|$02:$A4F1:5D 0A 09 0x00A504|$02:$A4F4:5D 0E 07 0x00A507|$02:$A4F7:5E 02 05 0x00A50A|$02:$A4FA:5E 06 03 0x00A50D|$02:$A4FD:5E 00 01 0x00A510|$02:$A500:5E 04 09 0x00A513|$02:$A503:5E 08 07 0x00A516|$02:$A506:5F 04 05 0x00A519|$02:$A509:61 06 0D 0x00A51C|$02:$A50C:62 06 0D 0x00A51F|$02:$A50F:63 06 0D 0x00A522|$02:$A512:64 06 0D 0x00A525|$02:$A515:65 06 07 0x00A528|$02:$A518:67 06 09 0x00A52B|$02:$A51B:68 06 09 0x00A52E|$02:$A51E:69 06 09 0x00A531|$02:$A521:6A 06 09 0x00A534|$02:$A524:6B 06 09 0x00A537|$02:$A527:6C 04 07 0x00A53A|$02:$A52A:45 0E 09 0x00A53D|$02:$A52D:46 02 05 0x00A540|$02:$A530:47 14 07 0x00A543|$02:$A533:48 02 07 0x00A546|$02:$A536:17 0D 0B ; pointers to per-map NPC setup (X-pos, Y-pos, ???, sprite ID, dialogue [not string] ID) ; index corresponds to map ID ; indexed data load target (from $B1D6) ; external indexed data load target (from $0F:$E527) 0x00A549|$02:$A539:30 ; indexed data load target (from $B1DB) ; external indexed data load target (from $0F:$E52C) 0x00A54A|$02:$A53A: A6 ; $02:$A630; Map ID #$00: Fake Midenhall 0x00A54B|$02:$A53B:00 00 ; $02:$0000; Map ID #$01: World Map 0x00A54D|$02:$A53D:1B A6 ; $02:$A61B; Map ID #$02: Midenhall 2F 0x00A54F|$02:$A53F:30 A6 ; $02:$A630; Map ID #$03: Midenhall 1F 0x00A551|$02:$A541:77 A6 ; $02:$A677; Map ID #$04: Midenhall B1 0x00A553|$02:$A543:87 A6 ; $02:$A687; Map ID #$05: Leftwyne 0x00A555|$02:$A545:CE A6 ; $02:$A6CE; Map ID #$06: Cannock 0x00A557|$02:$A547:1F A7 ; $02:$A71F; Map ID #$07: Hamlin 0x00A559|$02:$A549:6B A7 ; $02:$A76B; Map ID #$08: Hamlin Waterway 0x00A55B|$02:$A54B:76 A7 ; $02:$A776; Map ID #$09: Moonbrooke 0x00A55D|$02:$A54D:86 A7 ; $02:$A786; Map ID #$0A: Moonbrooke B1 0x00A55F|$02:$A54F:8C A7 ; $02:$A78C; Map ID #$0B: Lianport 0x00A561|$02:$A551:E2 A7 ; $02:$A7E2; Map ID #$0C: Tantegel 0x00A563|$02:$A553:29 A8 ; $02:$A829; Map ID #$0D: Tantegel Town 2F 0x00A565|$02:$A555:2F A8 ; $02:$A82F; Map ID #$0E: Tantegel Castle 2F 0x00A567|$02:$A557:35 A8 ; $02:$A835; Map ID #$0F: Osterfair 0x00A569|$02:$A559:81 A8 ; $02:$A881; Map ID #$10: Zahan 0x00A56B|$02:$A55B:D2 A8 ; $02:$A8D2; Map ID #$11: Tuhn 0x00A56D|$02:$A55D:00 00 ; $02:$0000; Map ID #$12: Tuhn Watergate 0x00A56F|$02:$A55F:19 A9 ; $02:$A919; Map ID #$13: Wellgarth 0x00A571|$02:$A561:29 A9 ; $02:$A929; Map ID #$14: Wellgarth Underground 0x00A573|$02:$A563:7A A9 ; $02:$A97A; Map ID #$15: Beran 0x00A575|$02:$A565:D5 A9 ; $02:$A9D5; Map ID #$16: Hargon's Castle 1F 0x00A577|$02:$A567:F9 A9 ; $02:$A9F9; Map ID #$17: Hargon's Castle 7F 0x00A579|$02:$A569:09 AA ; $02:$AA09; Map ID #$18: Charlock Castle B8 0x00A57B|$02:$A56B:0F AA ; $02:$AA0F; Map ID #$19: Shrine NW of Midenhall 0x00A57D|$02:$A56D:15 AA ; $02:$AA15; Map ID #$1A: Shrine SW of Cannock 0x00A57F|$02:$A56F:25 AA ; $02:$AA25; Map ID #$1B: Shrine NW of Lianport 0x00A581|$02:$A571:2B AA ; $02:$AA2B; Map ID #$1C: Shrine SE of Rimuldar 0x00A583|$02:$A573:31 AA ; $02:$AA31; Map ID #$1D: Shrine NW of Beran 0x00A585|$02:$A575:37 AA ; $02:$AA37; Map ID #$1E: Shrine NW of Zahan 0x00A587|$02:$A577:3D AA ; $02:$AA3D; Map ID #$1F: Rhone Shrine 0x00A589|$02:$A579:48 AA ; $02:$AA48; Map ID #$20: Shrine SW of Moonbrooke 0x00A58B|$02:$A57B:4E AA ; $02:$AA4E; Map ID #$21: Rhone Cave Shrine 0x00A58D|$02:$A57D:59 AA ; $02:$AA59; Map ID #$22: Shrine S of Midenhall 0x00A58F|$02:$A57F:00 00 ; $02:$0000; Map ID #$23: Rubiss' Shrine B1 0x00A591|$02:$A581:00 00 ; $02:$0000; Map ID #$24: Rubiss' Shrine B2 0x00A593|$02:$A583:00 00 ; $02:$0000; Map ID #$25: Rubiss' Shrine B3 0x00A595|$02:$A585:00 00 ; $02:$0000; Map ID #$26: Rubiss' Shrine B4 0x00A597|$02:$A587:00 00 ; $02:$0000; Map ID #$27: Rubiss' Shrine B5 0x00A599|$02:$A589:00 00 ; $02:$0000; Map ID #$28: Rubiss' Shrine B6 0x00A59B|$02:$A58B:D5 AA ; $02:$AAD5; Map ID #$29: Rubiss' Shrine B7 0x00A59D|$02:$A58D:00 00 ; $02:$0000; Map ID #$2A: Shrine W of Zahan 0x00A59F|$02:$A58F:00 00 ; $02:$0000; Map ID #$2B: Cave to Hamlin 0x00A5A1|$02:$A591:00 00 ; $02:$0000; Map ID #$2C: Lake Cave B1 0x00A5A3|$02:$A593:00 00 ; $02:$0000; Map ID #$2D: Lake Cave B2 0x00A5A5|$02:$A595:00 00 ; $02:$0000; Map ID #$2E: Sea Cave B1 0x00A5A7|$02:$A597:A7 AA ; $02:$AAA7; Map ID #$2F: Sea Cave B2 0x00A5A9|$02:$A599:00 00 ; $02:$0000; Map ID #$30: Sea Cave B3-1 0x00A5AB|$02:$A59B:00 00 ; $02:$0000; Map ID #$31: Sea Cave B3-2 0x00A5AD|$02:$A59D:00 00 ; $02:$0000; Map ID #$32: Sea Cave B4 0x00A5AF|$02:$A59F:B2 AA ; $02:$AAB2; Map ID #$33: Sea Cave B5 0x00A5B1|$02:$A5A1:00 00 ; $02:$0000; Map ID #$34: Charlock Castle B1/B2 0x00A5B3|$02:$A5A3:00 00 ; $02:$0000; Map ID #$35: Charlock Castle B3/B4-1/B5-1 0x00A5B5|$02:$A5A5:00 00 ; $02:$0000; Map ID #$36: Charlock Castle B4-2/B5-2/B6 0x00A5B7|$02:$A5A7:00 00 ; $02:$0000; Map ID #$37: Cave to Rhone B1 0x00A5B9|$02:$A5A9:00 00 ; $02:$0000; Map ID #$38: Cave to Rhone 1F 0x00A5BB|$02:$A5AB:00 00 ; $02:$0000; Map ID #$39: Cave to Rhone 2F-1 0x00A5BD|$02:$A5AD:00 00 ; $02:$0000; Map ID #$3A: Cave to Rhone 2F-2 0x00A5BF|$02:$A5AF:00 00 ; $02:$0000; Map ID #$3B: Cave to Rhone 2F-3 0x00A5C1|$02:$A5B1:00 00 ; $02:$0000; Map ID #$3C: Cave to Rhone 3F 0x00A5C3|$02:$A5B3:00 00 ; $02:$0000; Map ID #$3D: Cave to Rhone 4F 0x00A5C5|$02:$A5B5:00 00 ; $02:$0000; Map ID #$3E: Cave to Rhone 5F 0x00A5C7|$02:$A5B7:00 00 ; $02:$0000; Map ID #$3F: Cave to Rhone 6F 0x00A5C9|$02:$A5B9:64 AA ; $02:$AA64; Map ID #$40: Spring of Bravery 0x00A5CB|$02:$A5BB:00 00 ; $02:$0000; Map ID #$41: unused? 0x00A5CD|$02:$A5BD:00 00 ; $02:$0000; Map ID #$42: unused? 0x00A5CF|$02:$A5BF:00 00 ; $02:$0000; Map ID #$43: Cave to Rimuldar 0x00A5D1|$02:$A5C1:00 00 ; $02:$0000; Map ID #$44: Hargon's Castle 2F 0x00A5D3|$02:$A5C3:00 00 ; $02:$0000; Map ID #$45: Hargon's Castle 3F 0x00A5D5|$02:$A5C5:00 00 ; $02:$0000; Map ID #$46: Hargon's Castle 4F 0x00A5D7|$02:$A5C7:00 00 ; $02:$0000; Map ID #$47: Hargon's Castle 5F 0x00A5D9|$02:$A5C9:00 00 ; $02:$0000; Map ID #$48: Hargon's Castle 6F 0x00A5DB|$02:$A5CB:A1 AA ; $02:$AAA1; Map ID #$49: Moon Tower 1F 0x00A5DD|$02:$A5CD:00 00 ; $02:$0000; Map ID #$4A: Moon Tower 2F 0x00A5DF|$02:$A5CF:00 00 ; $02:$0000; Map ID #$4B: Moon Tower 3F 0x00A5E1|$02:$A5D1:00 00 ; $02:$0000; Map ID #$4C: Moon Tower 4F 0x00A5E3|$02:$A5D3:00 00 ; $02:$0000; Map ID #$4D: Moon Tower 5F 0x00A5E5|$02:$A5D5:00 00 ; $02:$0000; Map ID #$4E: Moon Tower 6F 0x00A5E7|$02:$A5D7:00 00 ; $02:$0000; Map ID #$4F: Moon Tower 7F 0x00A5E9|$02:$A5D9:00 00 ; $02:$0000; Map ID #$50: Lighthouse 1F 0x00A5EB|$02:$A5DB:86 AA ; $02:$AA86; Map ID #$51: Lighthouse 2F 0x00A5ED|$02:$A5DD:CF AA ; $02:$AACF; Map ID #$52: Lighthouse 3F 0x00A5EF|$02:$A5DF:C9 AA ; $02:$AAC9; Map ID #$53: Lighthouse 4F 0x00A5F1|$02:$A5E1:C3 AA ; $02:$AAC3; Map ID #$54: Lighthouse 5F 0x00A5F3|$02:$A5E3:BD AA ; $02:$AABD; Map ID #$55: Lighthouse 6F 0x00A5F5|$02:$A5E5:7B AA ; $02:$AA7B; Map ID #$56: Lighthouse 7F 0x00A5F7|$02:$A5E7:9B AA ; $02:$AA9B; Map ID #$57: Lighthouse 8F 0x00A5F9|$02:$A5E9:00 00 ; $02:$0000; Map ID #$58: Wind Tower 1F 0x00A5FB|$02:$A5EB:6F AA ; $02:$AA6F; Map ID #$59: Wind Tower 2F 0x00A5FD|$02:$A5ED:00 00 ; $02:$0000; Map ID #$5A: Wind Tower 3F 0x00A5FF|$02:$A5EF:00 00 ; $02:$0000; Map ID #$5B: Wind Tower 4F 0x00A601|$02:$A5F1:00 00 ; $02:$0000; Map ID #$5C: Wind Tower 5F 0x00A603|$02:$A5F3:00 00 ; $02:$0000; Map ID #$5D: Wind Tower 6F 0x00A605|$02:$A5F5:00 00 ; $02:$0000; Map ID #$5E: Wind Tower 7F 0x00A607|$02:$A5F7:00 00 ; $02:$0000; Map ID #$5F: Wind Tower 8F 0x00A609|$02:$A5F9:75 AA ; $02:$AA75; Map ID #$60: Dragon Horn South 1F 0x00A60B|$02:$A5FB:00 00 ; $02:$0000; Map ID #$61: Dragon Horn South 2F 0x00A60D|$02:$A5FD:00 00 ; $02:$0000; Map ID #$62: Dragon Horn South 3F 0x00A60F|$02:$A5FF:00 00 ; $02:$0000; Map ID #$63: Dragon Horn South 4F 0x00A611|$02:$A601:00 00 ; $02:$0000; Map ID #$64: Dragon Horn South 5F 0x00A613|$02:$A603:00 00 ; $02:$0000; Map ID #$65: Dragon Horn South 6F 0x00A615|$02:$A605:00 00 ; $02:$0000; Map ID #$66: Dragon Horn North 1F 0x00A617|$02:$A607:00 00 ; $02:$0000; Map ID #$67: Dragon Horn North 2F 0x00A619|$02:$A609:00 00 ; $02:$0000; Map ID #$68: Dragon Horn North 3F 0x00A61B|$02:$A60B:00 00 ; $02:$0000; Map ID #$69: Dragon Horn North 4F 0x00A61D|$02:$A60D:00 00 ; $02:$0000; Map ID #$6A: Dragon Horn North 5F 0x00A61F|$02:$A60F:00 00 ; $02:$0000; Map ID #$6B: Dragon Horn North 6F 0x00A621|$02:$A611:00 00 ; $02:$0000; Map ID #$6C: Dragon Horn North 7F 0x00A623|$02:$A613:EA AA ; $02:$AAEA; Map ID #$6D: Moonbrooke (prologue) 0x00A625|$02:$A615:4F AB ; $02:$AB4F; Map ID #$6E: Midenhall 1F (prologue) 0x00A627|$02:$A617:69 AB ; $02:$AB69; Map ID #$6F: World Map at Moonbrooke (prologue) 0x00A629|$02:$A619:83 AB ; $02:$AB83; Map ID #$70: World Map at Midenhall (prologue) ; Map ID #$02: Midenhall 2F ; indirect data load target (via $A53D) 0x00A62B|$02:$A61B:07 05 12 0B 9F 0x00A630|$02:$A620:03 03 02 03 9D 0x00A635|$02:$A625:04 07 02 0A 9E 0x00A63A|$02:$A62A:03 07 00 FF 00 ; indirect data load target 0x00A63F|$02:$A62F:FF ; Map IDs #$00/#$03: Fake Midenhall/Midenhall 1F ; indirect data load target (via $A539, $A53F) 0x00A640|$02:$A630:0E 09 12 07 8E 0x00A645|$02:$A635:16 0E 13 0A 8F 0x00A64A|$02:$A63A:03 06 12 07 2A 0x00A64F|$02:$A63F:0C 16 10 09 30 0x00A654|$02:$A644:0A 06 13 06 2C 0x00A659|$02:$A649:0D 04 12 0A 2F 0x00A65E|$02:$A64E:05 13 12 0C 8D 0x00A663|$02:$A653:11 0A 13 0C 2D 0x00A668|$02:$A658:02 02 01 05 29 0x00A66D|$02:$A65D:05 0B 02 0B 2B 0x00A672|$02:$A662:0A 14 01 06 1C 0x00A677|$02:$A667:0D 0F 01 0A 2E 0x00A67C|$02:$A66C:15 13 03 06 0A 0x00A681|$02:$A671:10 02 03 03 D7 ; indirect data load target 0x00A686|$02:$A676:FF ; Map ID #$04: Midenhall B1 ; indirect data load target (via $A541) 0x00A687|$02:$A677:00 03 10 08 A0 0x00A68C|$02:$A67C:05 01 02 0A 31 0x00A691|$02:$A681:01 08 00 05 D9 ; indirect data load target 0x00A696|$02:$A686:FF ; Map ID #$05: Leftwyne ; indirect data load target (via $A543) 0x00A697|$02:$A687:05 03 12 06 14 0x00A69C|$02:$A68C:05 0F 10 09 38 0x00A6A1|$02:$A691:04 06 11 0A 95 0x00A6A6|$02:$A696:0C 13 13 0A 35 0x00A6AB|$02:$A69B:0F 05 10 0C 36 0x00A6B0|$02:$A6A0:09 0C 13 07 32 0x00A6B5|$02:$A6A5:03 0A 12 0B 34 0x00A6BA|$02:$A6AA:13 0A 10 0C 33 0x00A6BF|$02:$A6AF:09 04 01 06 28 0x00A6C4|$02:$A6B4:13 04 02 05 27 0x00A6C9|$02:$A6B9:04 13 01 06 1D 0x00A6CE|$02:$A6BE:13 0F 03 06 0B 0x00A6D3|$02:$A6C3:16 16 01 08 37 0x00A6D8|$02:$A6C8:12 12 02 01 01 ; indirect data load target 0x00A6DD|$02:$A6CD:FF ; Map ID #$06: Cannock ; indirect data load target (via $A545) 0x00A6DE|$02:$A6CE:02 06 11 0A 39 0x00A6E3|$02:$A6D3:16 02 13 07 A2 0x00A6E8|$02:$A6D8:06 0F 12 0B 40 0x00A6ED|$02:$A6DD:13 13 11 08 3D 0x00A6F2|$02:$A6E2:09 14 11 07 3F 0x00A6F7|$02:$A6E7:14 16 12 0C 3E 0x00A6FC|$02:$A6EC:03 04 02 03 A1 0x00A701|$02:$A6F1:11 01 02 0A 93 0x00A706|$02:$A6F6:07 05 00 0A 3A 0x00A70B|$02:$A6FB:0B 09 02 0B A3 0x00A710|$02:$A700:16 07 02 05 27 0x00A715|$02:$A705:14 09 00 04 00 0x00A71A|$02:$A70A:17 09 00 04 00 0x00A71F|$02:$A70F:01 0F 01 06 0C 0x00A724|$02:$A714:18 0F 03 0A 3C 0x00A729|$02:$A719:02 17 01 06 1E ; indirect data load target 0x00A72E|$02:$A71E:FF ; Map ID #$07: Hamlin ; indirect data load target (via $A547) 0x00A72F|$02:$A71F:0C 02 11 09 02 0x00A734|$02:$A724:08 0F 11 07 91 0x00A739|$02:$A729:0C 0B 10 0C 42 0x00A73E|$02:$A72E:0C 15 11 08 44 0x00A743|$02:$A733:15 08 13 0C 96 0x00A748|$02:$A738:12 13 11 0A 43 0x00A74D|$02:$A73D:00 00 02 0A 94 0x00A752|$02:$A742:05 04 02 0B 41 0x00A757|$02:$A747:05 05 00 04 00 0x00A75C|$02:$A74C:13 03 02 05 27 0x00A761|$02:$A751:12 0A 03 06 28 0x00A766|$02:$A756:03 11 01 06 0D 0x00A76B|$02:$A75B:15 0F 02 06 15 0x00A770|$02:$A760:16 15 03 06 1F 0x00A775|$02:$A765:0F 01 02 0B 05 ; indirect data load target 0x00A77A|$02:$A76A:FF ; Map ID #$08: Hamlin Waterway ; indirect data load target (via $A549) 0x00A77B|$02:$A76B:03 01 13 05 A5 0x00A780|$02:$A770:05 01 02 05 A5 ; indirect data load target 0x00A785|$02:$A775:FF ; Map ID #$09: Moonbrooke ; indirect data load target (via $A54B) 0x00A786|$02:$A776:03 06 11 04 45 0x00A78B|$02:$A77B:11 05 10 04 A6 0x00A790|$02:$A780:08 12 10 04 46 ; indirect data load target 0x00A795|$02:$A785:FF ; Map ID #$0A: Moonbrooke B1 ; indirect data load target (via $A54D) 0x00A796|$02:$A786:00 06 00 0A A7 ; indirect data load target 0x00A79B|$02:$A78B:FF ; Map ID #$0B: Lianport ; indirect data load target (via $A54F) 0x00A79C|$02:$A78C:0C 05 13 0C 48 0x00A7A1|$02:$A791:0B 15 10 0A 4B 0x00A7A6|$02:$A796:0E 0D 10 08 AB 0x00A7AB|$02:$A79B:01 15 10 07 AC 0x00A7B0|$02:$A7A0:09 0C 10 0C 4A 0x00A7B5|$02:$A7A5:10 13 13 07 4C 0x00A7BA|$02:$A7AA:04 04 03 05 00 0x00A7BF|$02:$A7AF:03 05 00 05 00 0x00A7C4|$02:$A7B4:03 04 02 07 AA 0x00A7C9|$02:$A7B9:10 07 02 0B A8 0x00A7CE|$02:$A7BE:08 03 02 06 16 0x00A7D3|$02:$A7C3:05 0B 01 06 20 0x00A7D8|$02:$A7C8:12 0D 03 06 28 0x00A7DD|$02:$A7CD:17 0E 02 06 A9 0x00A7E2|$02:$A7D2:05 12 02 0B 27 0x00A7E7|$02:$A7D7:18 14 03 06 0E 0x00A7EC|$02:$A7DC:13 05 00 0D 00 ; indirect data load target 0x00A7F1|$02:$A7E1:FF ; Map ID #$0C: Tantegel ; indirect data load target (via $A551) 0x00A7F2|$02:$A7E2:16 02 10 0A 4E 0x00A7F7|$02:$A7E7:17 0A 13 0C 4F 0x00A7FC|$02:$A7EC:08 0A 10 0C 4D 0x00A801|$02:$A7F1:12 0E 12 06 98 0x00A806|$02:$A7F6:13 09 11 07 51 0x00A80B|$02:$A7FB:04 04 02 06 17 0x00A810|$02:$A800:0C 02 03 07 97 0x00A815|$02:$A805:0C 07 02 0B AD 0x00A81A|$02:$A80A:1B 06 02 05 AF 0x00A81F|$02:$A80F:03 0D 01 06 0F 0x00A824|$02:$A814:0B 10 00 06 21 0x00A829|$02:$A819:17 10 03 0A 50 0x00A82E|$02:$A81E:1C 0F 03 0B AE 0x00A833|$02:$A823:1C 0A 03 05 27 ; indirect data load target 0x00A838|$02:$A828:FF ; Map ID #$0D: Tantegel Town 2F ; indirect data load target (via $A553) 0x00A839|$02:$A829:02 02 02 03 52 ; indirect data load target 0x00A83E|$02:$A82E:FF ; Map ID #$0E: Tantegel Castle 2F ; indirect data load target (via $A555) 0x00A83F|$02:$A82F:02 05 11 0A 53 ; indirect data load target 0x00A844|$02:$A834:FF ; Map ID #$0F: Osterfair ; indirect data load target (via $A557) 0x00A845|$02:$A835:07 04 02 0A 58 0x00A84A|$02:$A83A:12 10 13 0C 59 0x00A84F|$02:$A83F:03 0E 11 06 10 0x00A854|$02:$A844:09 14 12 08 5A 0x00A859|$02:$A849:08 10 11 0C 5C 0x00A85E|$02:$A84E:08 09 01 09 B3 0x00A863|$02:$A853:0C 05 02 04 00 0x00A868|$02:$A858:0D 06 02 07 55 0x00A86D|$02:$A85D:0E 05 02 03 B0 0x00A872|$02:$A862:0F 06 02 07 56 0x00A877|$02:$A867:10 05 02 04 00 0x00A87C|$02:$A86C:04 08 02 0B B1 0x00A881|$02:$A871:13 0A 01 08 57 0x00A886|$02:$A876:06 15 01 06 18 0x00A88B|$02:$A87B:11 12 03 05 54 ; indirect data load target 0x00A890|$02:$A880:FF ; Map ID #$10: Zahan ; indirect data load target (via $A559) 0x00A891|$02:$A881:08 08 11 0B 67 0x00A896|$02:$A886:10 0C 13 05 65 0x00A89B|$02:$A88B:0A 0D 10 07 64 0x00A8A0|$02:$A890:04 12 10 07 62 0x00A8A5|$02:$A895:13 12 12 07 63 0x00A8AA|$02:$A89A:12 08 03 09 B4 0x00A8AF|$02:$A89F:00 00 02 08 5D 0x00A8B4|$02:$A8A4:09 02 02 04 00 0x00A8B9|$02:$A8A9:0F 02 02 04 00 0x00A8BE|$02:$A8AE:03 08 01 07 11 0x00A8C3|$02:$A8B3:0C 09 02 07 5E 0x00A8C8|$02:$A8B8:05 0C 03 06 66 0x00A8CD|$02:$A8BD:15 0A 03 07 22 0x00A8D2|$02:$A8C2:0E 10 00 07 5F 0x00A8D7|$02:$A8C7:0B 12 01 07 60 0x00A8DC|$02:$A8CC:0D 13 03 05 61 ; indirect data load target 0x00A8E1|$02:$A8D1:FF ; Map ID #$11: Tuhn ; indirect data load target (via $A55B) 0x00A8E2|$02:$A8D2:12 0A 13 09 6C 0x00A8E7|$02:$A8D7:03 15 10 0C 6A 0x00A8EC|$02:$A8DC:00 0E 12 07 69 0x00A8F1|$02:$A8E1:0C 18 12 0A 6F 0x00A8F6|$02:$A8E6:0C 14 13 07 6E 0x00A8FB|$02:$A8EB:09 1F 13 0C 6D 0x00A900|$02:$A8F0:12 01 02 08 6B 0x00A905|$02:$A8F5:0A 0D 01 06 12 0x00A90A|$02:$A8FA:11 0C 02 0C 23 0x00A90F|$02:$A8FF:11 11 03 0B 70 0x00A914|$02:$A904:05 16 02 0B B5 0x00A919|$02:$A909:11 19 01 0B 68 0x00A91E|$02:$A90E:05 1D 03 06 19 0x00A923|$02:$A913:10 1D 02 05 27 ; indirect data load target 0x00A928|$02:$A918:FF ; Map ID #$13: Wellgarth ; indirect data load target (via $A55F) 0x00A929|$02:$A919:05 08 11 09 72 0x00A92E|$02:$A91E:03 04 02 04 00 0x00A933|$02:$A923:02 05 03 0C 71 ; indirect data load target 0x00A938|$02:$A928:FF ; Map ID #$14: Wellgarth Underground ; indirect data load target (via $A561) 0x00A939|$02:$A929:01 03 11 0B 75 0x00A93E|$02:$A92E:02 0D 12 05 77 0x00A943|$02:$A933:0C 06 12 07 03 0x00A948|$02:$A938:05 17 12 07 78 0x00A94D|$02:$A93D:01 08 10 08 25 0x00A952|$02:$A942:0E 11 10 0C 79 0x00A957|$02:$A947:0B 0C 13 08 99 0x00A95C|$02:$A94C:08 01 02 06 1A 0x00A961|$02:$A951:0E 01 02 0B 73 0x00A966|$02:$A956:17 01 02 0C B6 0x00A96B|$02:$A95B:15 05 02 0A 74 0x00A970|$02:$A960:0B 09 03 06 24 0x00A975|$02:$A965:08 10 01 06 28 0x00A97A|$02:$A96A:14 10 02 05 27 0x00A97F|$02:$A96F:00 13 01 06 12 0x00A984|$02:$A974:11 13 02 0A 7A ; indirect data load target 0x00A989|$02:$A979:FF ; Map ID #$15: Beran ; indirect data load target (via $A563) 0x00A98A|$02:$A97A:06 0B 12 05 9A 0x00A98F|$02:$A97F:16 0C 10 05 B9 0x00A994|$02:$A984:0E 0C 13 0A 80 0x00A999|$02:$A989:13 17 11 0C 84 0x00A99E|$02:$A98E:05 0E 11 07 81 0x00A9A3|$02:$A993:17 14 12 08 1B 0x00A9A8|$02:$A998:0E 12 11 0B 82 0x00A9AD|$02:$A99D:17 16 10 07 26 0x00A9B2|$02:$A9A2:02 01 02 0B C0 0x00A9B7|$02:$A9A7:08 00 02 07 7C 0x00A9BC|$02:$A9AC:0D 06 02 05 27 0x00A9C1|$02:$A9B1:10 03 02 08 7D 0x00A9C6|$02:$A9B6:14 02 02 0A 7E 0x00A9CB|$02:$A9BB:14 0D 01 06 7F 0x00A9D0|$02:$A9C0:03 11 01 06 13 0x00A9D5|$02:$A9C5:08 16 03 0A 92 0x00A9DA|$02:$A9CA:0D 16 01 06 28 0x00A9DF|$02:$A9CF:15 15 01 0A 83 ; indirect data load target 0x00A9E4|$02:$A9D4:FF ; Map ID #$16: Hargon's Castle 1F ; indirect data load target (via $A565) 0x00A9E5|$02:$A9D5:07 14 00 04 88 0x00A9EA|$02:$A9DA:0C 16 11 04 85 0x00A9EF|$02:$A9DF:0F 13 13 04 86 0x00A9F4|$02:$A9E4:13 14 00 04 89 0x00A9F9|$02:$A9E9:0D 10 11 04 87 0x00A9FE|$02:$A9EE:0C 0F 02 05 BA 0x00AA03|$02:$A9F3:0E 0F 02 05 BA ; indirect data load target 0x00AA08|$02:$A9F8:FF ; Map ID #$17: Hargon's Castle 7F ; indirect data load target (via $A567) 0x00AA09|$02:$A9F9:06 04 02 04 00 0x00AA0E|$02:$A9FE:07 04 02 05 BB 0x00AA13|$02:$AA03:08 04 02 04 00 ; indirect data load target 0x00AA18|$02:$AA08:FF ; Map ID #$18: Charlock Castle B8 ; indirect data load target (via $A569) 0x00AA19|$02:$AA09:0A 10 02 05 BC ; indirect data load target 0x00AA1E|$02:$AA0E:FF ; Map ID #$19: Shrine NW of Midenhall ; indirect data load target (via $A56B) 0x00AA1F|$02:$AA0F:05 05 03 05 9B ; indirect data load target 0x00AA24|$02:$AA14:FF ; Map ID #$1A: Shrine SW of Cannock ; indirect data load target (via $A56D) 0x00AA25|$02:$AA15:05 01 12 0B 9C 0x00AA2A|$02:$AA1A:02 04 00 0A BD 0x00AA2F|$02:$AA1F:05 04 00 0A BE ; indirect data load target 0x00AA34|$02:$AA24:FF ; Map ID #$1B: Shrine NW of Lianport ; indirect data load target (via $A56F) 0x00AA35|$02:$AA25:04 01 11 0B 8A ; indirect data load target 0x00AA3A|$02:$AA2A:FF ; Map ID #$1C: Shrine SE of Rimuldar ; indirect data load target (via $A571) 0x00AA3B|$02:$AA2B:04 04 03 0B BF ; indirect data load target 0x00AA40|$02:$AA30:FF ; Map ID #$1D: Shrine NW of Beran ; indirect data load target (via $A573) 0x00AA41|$02:$AA31:04 03 02 0B 7B ; indirect data load target 0x00AA46|$02:$AA36:FF ; Map ID #$1E: Shrine NW of Zahan ; indirect data load target (via $A575) 0x00AA47|$02:$AA37:03 03 02 04 00 ; indirect data load target 0x00AA4C|$02:$AA3C:FF ; Map ID #$1F: Rhone Shrine ; indirect data load target (via $A577) 0x00AA4D|$02:$AA3D:04 02 02 05 C1 0x00AA52|$02:$AA42:04 06 03 07 8B ; indirect data load target 0x00AA57|$02:$AA47:FF ; Map ID #$20: Shrine SW of Moonbrooke ; indirect data load target (via $A579) 0x00AA58|$02:$AA48:04 04 00 05 C2 ; indirect data load target 0x00AA5D|$02:$AA4D:FF ; Map ID #$21: Rhone Cave Shrine ; indirect data load target (via $A57B) 0x00AA5E|$02:$AA4E:00 07 10 05 49 0x00AA63|$02:$AA53:02 02 01 0B 8C ; indirect data load target 0x00AA68|$02:$AA58:FF ; Map ID #$22: Shrine S of Midenhall ; indirect data load target (via $A57D) 0x00AA69|$02:$AA59:07 01 02 0B 47 0x00AA6E|$02:$AA5E:07 02 00 04 00 ; indirect data load target 0x00AA73|$02:$AA63:FF ; Map ID #$40: Spring of Bravery ; indirect data load target (via $A5B9) 0x00AA74|$02:$AA64:21 0C 03 08 CD 0x00AA79|$02:$AA69:09 0A 02 0B D0 ; indirect data load target 0x00AA7E|$02:$AA6E:FF ; Map ID #$59: Wind Tower 2F ; indirect data load target (via $A5EB) 0x00AA7F|$02:$AA6F:16 02 00 0A C3 ; indirect data load target 0x00AA84|$02:$AA74:FF ; Map ID #$60: Dragon Horn South 1F ; indirect data load target (via $A5F9) 0x00AA85|$02:$AA75:06 03 02 06 CE ; indirect data load target 0x00AA8A|$02:$AA7A:FF ; Map ID #$56: Lighthouse 7F ; indirect data load target (via $A5E5) 0x00AA8B|$02:$AA7B:0E 0A 02 0B D1 0x00AA90|$02:$AA80:0E 04 02 05 00 ; indirect data load target 0x00AA95|$02:$AA85:FF ; Map ID #$51: Lighthouse 2F ; indirect data load target (via $A5DB) 0x00AA96|$02:$AA86:22 1F 02 0B D8 0x00AA9B|$02:$AA8B:1D 1C 02 FF 00 0x00AAA0|$02:$AA90:1F 1C 02 FF 00 0x00AAA5|$02:$AA95:1F 1E 03 FF 00 ; indirect data load target 0x00AAAA|$02:$AA9A:FF ; Map ID #$57: Lighthouse 8F ; indirect data load target (via $A5E7) 0x00AAAB|$02:$AA9B:0A 0F 02 0A D6 ; indirect data load target 0x00AAB0|$02:$AAA0:FF ; Map ID #$49: Moon Tower 1F ; indirect data load target (via $A5CB) 0x00AAB1|$02:$AAA1:12 04 02 0B C4 ; indirect data load target 0x00AAB6|$02:$AAA6:FF ; Map ID #$2F: Sea Cave B2 ; indirect data load target (via $A597) 0x00AAB7|$02:$AAA7:0D 02 02 0A CA 0x00AABC|$02:$AAAC:09 1E 03 0A CF ; indirect data load target 0x00AAC1|$02:$AAB1:FF ; Map ID #$33: Sea Cave B5 ; indirect data load target (via $A59F) 0x00AAC2|$02:$AAB2:11 0B 03 05 D3 0x00AAC7|$02:$AAB7:14 0A 03 FF 00 ; indirect data load target 0x00AACC|$02:$AABC:FF ; Map ID #$55: Lighthouse 6F ; indirect data load target (via $A5E3) 0x00AACD|$02:$AABD:01 19 02 0B D1 ; indirect data load target 0x00AAD2|$02:$AAC2:FF ; Map ID #$54: Lighthouse 5F ; indirect data load target (via $A5E1) 0x00AAD3|$02:$AAC3:19 17 00 0B D1 ; indirect data load target 0x00AAD8|$02:$AAC8:FF ; Map ID #$53: Lighthouse 4F ; indirect data load target (via $A5DF) 0x00AAD9|$02:$AAC9:1A 13 02 0B D1 ; indirect data load target 0x00AADE|$02:$AACE:FF ; Map ID #$52: Lighthouse 3F ; indirect data load target (via $A5DD) 0x00AADF|$02:$AACF:14 1E 01 0B D1 ; indirect data load target 0x00AAE4|$02:$AAD4:FF ; Map ID #$29: Rubiss' Shrine B7 ; indirect data load target (via $A58B) 0x00AAE5|$02:$AAD5:02 02 00 FF 00 0x00AAEA|$02:$AADA:04 02 00 FF 00 0x00AAEF|$02:$AADF:02 04 00 FF 00 0x00AAF4|$02:$AAE4:04 04 00 FF 00 ; indirect data load target 0x00AAF9|$02:$AAE9:FF ; Map ID #$6D: Moonbrooke (prologue) ; indirect data load target (via $A613) 0x00AAFA|$02:$AAEA:03 02 03 FF 00 0x00AAFF|$02:$AAEF:09 64 02 01 00 0x00AB04|$02:$AAF4:08 0A 02 02 00 0x00AB09|$02:$AAF9:0B 0B 02 0A 00 0x00AB0E|$02:$AAFE:02 13 02 0A 00 0x00AB13|$02:$AB03:13 0B 01 05 00 0x00AB18|$02:$AB08:64 64 02 05 00 0x00AB1D|$02:$AB0D:64 64 00 05 00 0x00AB22|$02:$AB12:0A 02 01 FF 00 0x00AB27|$02:$AB17:12 02 03 FF 00 0x00AB2C|$02:$AB1C:64 64 02 05 00 0x00AB31|$02:$AB21:64 64 02 05 00 0x00AB36|$02:$AB26:64 64 02 05 00 0x00AB3B|$02:$AB2B:64 64 02 05 00 0x00AB40|$02:$AB30:64 64 02 05 00 0x00AB45|$02:$AB35:64 64 02 05 00 0x00AB4A|$02:$AB3A:64 64 00 05 00 0x00AB4F|$02:$AB3F:10 12 00 0A 00 0x00AB54|$02:$AB44:11 12 00 0A 00 0x00AB59|$02:$AB49:02 02 01 0A 00 ; indirect data load target 0x00AB5E|$02:$AB4E:FF ; Map ID #$6E: Midenhall 1F (prologue) ; indirect data load target (via $A615) 0x00AB5F|$02:$AB4F:0F 17 00 0A 00 0x00AB64|$02:$AB54:0D 0F 01 0A 00 0x00AB69|$02:$AB59:11 0F 03 0A 00 0x00AB6E|$02:$AB5E:0A 14 01 06 00 0x00AB73|$02:$AB63:15 13 03 06 00 ; indirect data load target 0x00AB78|$02:$AB68:FF ; Map ID #$6F: World Map at Moonbrooke (prologue) ; indirect data load target (via $A617) 0x00AB79|$02:$AB69:61 6E 00 FF 00 0x00AB7E|$02:$AB6E:62 6E 00 FF 00 0x00AB83|$02:$AB73:61 6F 00 FF 00 0x00AB88|$02:$AB78:62 6F 00 FF 00 0x00AB8D|$02:$AB7D:63 6F 01 0A 00 ; indirect data load target 0x00AB92|$02:$AB82:FF ; Map ID #$70: World Map at Midenhall (prologue) ; indirect data load target (via $A619) 0x00AB93|$02:$AB83:CF 38 01 0A 00 ; indirect data load target 0x00AB98|$02:$AB88:FF ; data -> code ; external control flow target (from $0F:$E4AD) 0x00AB99|$02:$AB89:A5 0C LDA $0C ; save $0C-$11 on the stack 0x00AB9B|$02:$AB8B:48 PHA 0x00AB9C|$02:$AB8C:A5 0D LDA $0D 0x00AB9E|$02:$AB8E:48 PHA 0x00AB9F|$02:$AB8F:A5 0E LDA $0E 0x00ABA1|$02:$AB91:48 PHA 0x00ABA2|$02:$AB92:A5 0F LDA $0F 0x00ABA4|$02:$AB94:48 PHA 0x00ABA5|$02:$AB95:A5 10 LDA $10 0x00ABA7|$02:$AB97:48 PHA 0x00ABA8|$02:$AB98:A5 11 LDA $11 0x00ABAA|$02:$AB9A:48 PHA ; call to code in a different bank ($0F:$C1DC) 0x00ABAB|$02:$AB9B:20 DC C1 JSR $C1DC ; set $6007 = #$00, set $00 = #$01, wait for interrupt, set $00 = #$FF 0x00ABAE|$02:$AB9E:A5 23 LDA $23 ; map pointer, low byte 0x00ABB0|$02:$ABA0:85 0C STA $0C 0x00ABB2|$02:$ABA2:A5 24 LDA $24 ; map pointer, high byte 0x00ABB4|$02:$ABA4:85 0D STA $0D 0x00ABB6|$02:$ABA6:20 77 B0 JSR $B077 ; read the first 3 bytes of map data, initialize the map width, map height, map buffer index bit width, tile ID bit width and $6158 (unused?); leaves $0C-$0D pointing at map data byte 3 0x00ABB9|$02:$ABA9:20 BF AB JSR $ABBF 0x00ABBC|$02:$ABAC:68 PLA ; restore $0C-$11 from the stack 0x00ABBD|$02:$ABAD:85 11 STA $11 0x00ABBF|$02:$ABAF:68 PLA 0x00ABC0|$02:$ABB0:85 10 STA $10 0x00ABC2|$02:$ABB2:68 PLA 0x00ABC3|$02:$ABB3:85 0F STA $0F 0x00ABC5|$02:$ABB5:68 PLA 0x00ABC6|$02:$ABB6:85 0E STA $0E 0x00ABC8|$02:$ABB8:68 PLA 0x00ABC9|$02:$ABB9:85 0D STA $0D 0x00ABCB|$02:$ABBB:68 PLA 0x00ABCC|$02:$ABBC:85 0C STA $0C 0x00ABCE|$02:$ABBE:60 RTS ; control flow target (from $ABA9) 0x00ABCF|$02:$ABBF:20 41 AC JSR $AC41 ; load map tiles 0x00ABD2|$02:$ABC2:20 62 AC JSR $AC62 ; switch to map roofing phase and process roofing updates 0x00ABD5|$02:$ABC5:20 C9 AB JSR $ABC9 0x00ABD8|$02:$ABC8:60 RTS ; control flow target (from $ABC5) 0x00ABD9|$02:$ABC9:A5 1F LDA $1F ; some kind of map type (#$00: World Map, #$01: other non-dungeon maps, #$02: maps #$2B - #$43 inclusive, #$03: maps >= #$44, #$FF => game menu) 0x00ABDB|$02:$ABCB:C9 01 CMP #$01 0x00ABDD|$02:$ABCD:F0 01 BEQ $ABD0 ; scan through map and replace Vertical Wall tiles that don't have a Vertical Wall tile with the same roofing below them with Horizontal Wall tiles 0x00ABDF|$02:$ABCF:60 RTS ; scan through map and replace Vertical Wall tiles that don't have a Vertical Wall tile with the same roofing below them with Horizontal Wall tiles ; control flow target (from $ABCD) 0x00ABE0|$02:$ABD0:A9 00 LDA #$00 ; set $0C-$0D to address of map buffer at $7800 0x00ABE2|$02:$ABD2:85 0C STA $0C 0x00ABE4|$02:$ABD4:A9 78 LDA #$78 0x00ABE6|$02:$ABD6:85 0D STA $0D 0x00ABE8|$02:$ABD8:A9 00 LDA #$00 0x00ABEA|$02:$ABDA:85 6D STA $6D ; current row ; process row ; control flow target (from $AC3E) 0x00ABEC|$02:$ABDC:A0 00 LDY #$00 ; current column ; process column ; control flow target (from $AC2B) 0x00ABEE|$02:$ABDE:B1 0C LDA ($0C),Y ; current map tile 0x00ABF0|$02:$ABE0:85 6E STA $6E ; current map tile 0x00ABF2|$02:$ABE2:29 1F AND #$1F ; ignore roofing 0x00ABF4|$02:$ABE4:C9 05 CMP #$05 ; Map Tile ID #$05: Vertical Wall 0x00ABF6|$02:$ABE6:D0 40 BNE $AC28 ; update map co-ordinates 0x00ABF8|$02:$ABE8:A5 6E LDA $6E ; current map tile 0x00ABFA|$02:$ABEA:29 E0 AND #$E0 ; pick out the roofing 0x00ABFC|$02:$ABEC:85 6E STA $6E ; current map tile's roofing 0x00ABFE|$02:$ABEE:A6 6D LDX $6D ; current row 0x00AC00|$02:$ABF0:E8 INX ; next row 0x00AC01|$02:$ABF1:E4 0F CPX $0F ; map height 0x00AC03|$02:$ABF3:90 08 BCC $ABFD ; not processing bottom row of map 0x00AC05|$02:$ABF5:A5 20 LDA $20 ; map exterior border tile ID (#$00 = Road, #$01 = Grass, #$02 = Sand, #$03 = Tree, #$04 = Water, #$05 = Vertical Wall, #$06 = Shrub, #$07 = Horizontal Wall, #$08 = Swamp, ..., #$20 = Ceiling Alternating?, #$21 = Ceiling Down?, #$24 = Black?, #$28 = Blue?) 0x00AC07|$02:$ABF7:C9 05 CMP #$05 ; Map Tile ID #$05: Vertical Wall 0x00AC09|$02:$ABF9:D0 27 BNE $AC22 ; replace Vertical Wall tile with Horizontal Wall tile 0x00AC0B|$02:$ABFB:F0 2B BEQ $AC28 ; update map co-ordinates ; not processing bottom row of map ; control flow target (from $ABF3) 0x00AC0D|$02:$ABFD:A5 0C LDA $0C ; set $72-$73 to current map pos + 1 row 0x00AC0F|$02:$ABFF:18 CLC 0x00AC10|$02:$AC00:65 0E ADC $0E ; map width 0x00AC12|$02:$AC02:85 72 STA $72 0x00AC14|$02:$AC04:A5 0D LDA $0D 0x00AC16|$02:$AC06:69 00 ADC #$00 0x00AC18|$02:$AC08:85 73 STA $73 0x00AC1A|$02:$AC0A:B1 72 LDA ($72),Y ; tile below current map tile 0x00AC1C|$02:$AC0C:85 6F STA $6F ; tile below current map tile 0x00AC1E|$02:$AC0E:29 E0 AND #$E0 ; pick out the roofing 0x00AC20|$02:$AC10:C5 6E CMP $6E ; current map tile's roofing 0x00AC22|$02:$AC12:F0 02 BEQ $AC16 ; tile below current map tile has same roofing 0x00AC24|$02:$AC14:10 12 BPL $AC28 ; update map co-ordinates ; tile below current map tile has same roofing ; control flow target (from $AC12) 0x00AC26|$02:$AC16:A5 6F LDA $6F ; tile below current map tile 0x00AC28|$02:$AC18:29 1F AND #$1F ; ignore the roofing 0x00AC2A|$02:$AC1A:C9 05 CMP #$05 ; Map Tile ID #$05: Vertical Wall 0x00AC2C|$02:$AC1C:F0 0A BEQ $AC28 ; update map co-ordinates 0x00AC2E|$02:$AC1E:C9 07 CMP #$07 ; Map Tile ID #$07: Horizontal Wall 0x00AC30|$02:$AC20:F0 06 BEQ $AC28 ; update map co-ordinates ; replace Vertical Wall tile with Horizontal Wall tile ; control flow target (from $ABF9) 0x00AC32|$02:$AC22:A9 07 LDA #$07 ; Map Tile ID #$07: Horizontal Wall 0x00AC34|$02:$AC24:05 6E ORA $6E ; current map tile's roofing 0x00AC36|$02:$AC26:91 0C STA ($0C),Y ; current map tile ; update map co-ordinates ; control flow target (from $ABE6, $ABFB, $AC14, $AC1C, $AC20) 0x00AC38|$02:$AC28:C8 INY ; current column 0x00AC39|$02:$AC29:C4 0E CPY $0E ; map width 0x00AC3B|$02:$AC2B:90 B1 BCC $ABDE ; process column 0x00AC3D|$02:$AC2D:A5 0C LDA $0C ; add map width to 16-bit $0C-$0D 0x00AC3F|$02:$AC2F:18 CLC 0x00AC40|$02:$AC30:65 0E ADC $0E ; map width 0x00AC42|$02:$AC32:85 0C STA $0C 0x00AC44|$02:$AC34:90 02 BCC $AC38 0x00AC46|$02:$AC36:E6 0D INC $0D ; control flow target (from $AC34) 0x00AC48|$02:$AC38:E6 6D INC $6D ; current row 0x00AC4A|$02:$AC3A:A5 6D LDA $6D ; current row 0x00AC4C|$02:$AC3C:C5 0F CMP $0F ; map height 0x00AC4E|$02:$AC3E:90 9C BCC $ABDC ; process row 0x00AC50|$02:$AC40:60 RTS ; load map tiles ; control flow target (from $ABBF) 0x00AC51|$02:$AC41:20 77 AC JSR $AC77 ; initialize map bit index $614D, map roofing phase flag $614E, and "map stack" index $6156 to #$00 0x00AC54|$02:$AC44:20 83 AC JSR $AC83 ; read 1 tile ID of map data, fill map interior background with that tile ; process next map control code ; control flow target (from $AC73, $AD3C, $AE11, $AE3C, $AE86) 0x00AC57|$02:$AC47:20 C3 AC JSR $ACC3 ; read 2 bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; process map control code in A ; control flow target (from $AD3F) 0x00AC5A|$02:$AC4A:C9 00 CMP #$00 0x00AC5C|$02:$AC4C:F0 0B BEQ $AC59 ; map data 0b00 handler: set current 1x1 or 2x2 block of tiles 0x00AC5E|$02:$AC4E:C9 01 CMP #$01 0x00AC60|$02:$AC50:F0 0A BEQ $AC5C ; map data 0b01 handler: read 2 co-ordinates of map data and depending on roofing phase, fill the map buffer between those two points with the current 1x1 or 2x2 block of tile IDs or update the roofing between those two points 0x00AC62|$02:$AC52:C9 02 CMP #$02 0x00AC64|$02:$AC54:F0 09 BEQ $AC5F ; map data 0b10 handler: read 1 co-ordinate of map data and then start drawing the current tile ID from there, moving around as dictated by map data 0x00AC66|$02:$AC56:4C 36 AE JMP $AE36 ; map data 0b11 handler: read 1 co-ordinate of map data and then depending on roofing phase, either write the current 1x1 or 2x2 block of tile IDs there or update its roofing ; map data 0b00 handler: set current 1x1 or 2x2 block of tiles ; control flow target (from $AC4C) 0x00AC69|$02:$AC59:4C 0D AD JMP $AD0D ; map data 0b00 handler: set the current 1x1 or 2x2 block of tile IDs ; map data 0b01 handler: read 2 co-ordinates of map data and depending on roofing phase, fill the map buffer between those two points with the current 1x1 or 2x2 block of tile IDs or update the roofing between those two points ; control flow target (from $AC50) 0x00AC6C|$02:$AC5C:4C 42 AD JMP $AD42 ; map data 0b01 handler: read 2 co-ordinates of map data and depending on roofing phase, fill the map buffer between those two points with the current 1x1 or 2x2 block of tile IDs or update the roofing between those two points ; map data 0b10 handler: read 1 co-ordinate of map data and then start drawing the current tile ID from there, moving around as dictated by map data ; control flow target (from $AC54) 0x00AC6F|$02:$AC5F:4C 3F AE JMP $AE3F ; map data 0b10 handler: read 1 co-ordinate of map data and then start drawing the current tile ID from there, moving around as dictated by map data ; switch to map roofing phase and process roofing updates ; control flow target (from $ABC2) 0x00AC72|$02:$AC62:A9 FF LDA #$FF 0x00AC74|$02:$AC64:8D 4E 61 STA $614E ; map roofing phase flag 0x00AC77|$02:$AC67:A9 02 LDA #$02 0x00AC79|$02:$AC69:20 CA AC JSR $ACCA ; read A bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AC7C|$02:$AC6C:C9 00 CMP #$00 0x00AC7E|$02:$AC6E:F0 06 BEQ $AC76 ; #$00 => no roofing updates, so skip this phase 0x00AC80|$02:$AC70:8D 57 61 STA $6157 ; map tile ID bit size 0x00AC83|$02:$AC73:20 47 AC JSR $AC47 ; process next map control code ; control flow target (from $AC6E) 0x00AC86|$02:$AC76:60 RTS ; initialize map bit index $614D, map roofing phase flag $614E, and "map stack" index $6156 to #$00 ; control flow target (from $AC41) 0x00AC87|$02:$AC77:A9 00 LDA #$00 0x00AC89|$02:$AC79:8D 4D 61 STA $614D ; map bit index; how many times to LSR #$80 so it lines up with the current map bit 0x00AC8C|$02:$AC7C:8D 4E 61 STA $614E ; map roofing phase flag 0x00AC8F|$02:$AC7F:8D 56 61 STA $6156 ; index to top of "map stack" at $616B for 0b10 handler 0x00AC92|$02:$AC82:60 RTS ; read 1 tile ID of map data, fill map interior background with that tile ; control flow target (from $AC44) 0x00AC93|$02:$AC83:20 A8 AC JSR $ACA8 ; read 1 tile ID of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AC96|$02:$AC86:48 PHA ; map interior background tile ID 0x00AC97|$02:$AC87:A9 00 LDA #$00 ; initialize map buffer address $10-$11 to $7800 0x00AC99|$02:$AC89:85 10 STA $10 ; map buffer address, low byte 0x00AC9B|$02:$AC8B:A9 78 LDA #$78 0x00AC9D|$02:$AC8D:85 11 STA $11 ; map buffer address, high byte 0x00AC9F|$02:$AC8F:68 PLA ; map interior background tile ID 0x00ACA0|$02:$AC90:A4 0F LDY $0F ; map height 0x00ACA2|$02:$AC92:84 6D STY $6D ; number of rows left 0x00ACA4|$02:$AC94:A0 00 LDY #$00 ; control flow target (from $ACA5) 0x00ACA6|$02:$AC96:A6 0E LDX $0E ; map width ; control flow target (from $ACA1) 0x00ACA8|$02:$AC98:91 10 STA ($10),Y ; write map interior background tile ID to buffer 0x00ACAA|$02:$AC9A:E6 10 INC $10 ; INC 16-bit write address 0x00ACAC|$02:$AC9C:D0 02 BNE $ACA0 0x00ACAE|$02:$AC9E:E6 11 INC $11 ; control flow target (from $AC9C) 0x00ACB0|$02:$ACA0:CA DEX ; number of columns left 0x00ACB1|$02:$ACA1:D0 F5 BNE $AC98 0x00ACB3|$02:$ACA3:C6 6D DEC $6D ; number of rows left 0x00ACB5|$02:$ACA5:D0 EF BNE $AC96 0x00ACB7|$02:$ACA7:60 RTS ; read 1 tile ID of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; control flow target (from $AC83, $AD12, $AD2A, $AD30, $AD36) 0x00ACB8|$02:$ACA8:AD 57 61 LDA $6157 ; map tile ID bit size 0x00ACBB|$02:$ACAB:4C CA AC JMP $ACCA ; read A bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; read 1 co-ordinate of map data into $6D-$6E, set $75-$76 to that map buffer address ; control flow target (from $AE36, $AE3F) 0x00ACBE|$02:$ACAE:20 C7 AC JSR $ACC7 ; read 1 co-ordinate of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00ACC1|$02:$ACB1:A9 00 LDA #$00 0x00ACC3|$02:$ACB3:A0 78 LDY #$78 0x00ACC5|$02:$ACB5:A2 6D LDX #$6D 0x00ACC7|$02:$ACB7:20 0A B0 JSR $B00A ; given A, X, and Y, ($00,X-$01,X) = ($00,X-$01,X) + (Y * $100 + A) 0x00ACCA|$02:$ACBA:A5 6D LDA $6D 0x00ACCC|$02:$ACBC:85 75 STA $75 0x00ACCE|$02:$ACBE:A5 6E LDA $6E 0x00ACD0|$02:$ACC0:85 76 STA $76 0x00ACD2|$02:$ACC2:60 RTS ; read 2 bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; control flow target (from $AC47, $AD18) 0x00ACD3|$02:$ACC3:A9 02 LDA #$02 0x00ACD5|$02:$ACC5:D0 03 BNE $ACCA ; read A bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; read 1 co-ordinate of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; control flow target (from $ACAE, $AD42, $AD5A) 0x00ACD7|$02:$ACC7:AD 50 61 LDA $6150 ; map buffer index bit size ; read A bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A ; control flow target (from $AC69, $ACAB, $ACC5, $AE52, $AF1F) 0x00ACDA|$02:$ACCA:AA TAX 0x00ACDB|$02:$ACCB:A9 00 LDA #$00 0x00ACDD|$02:$ACCD:85 6D STA $6D 0x00ACDF|$02:$ACCF:85 6E STA $6E ; control flow target (from $ACD9) 0x00ACE1|$02:$ACD1:20 DE AC JSR $ACDE ; read 1 bit of map data into C, updating read variables as necessary 0x00ACE4|$02:$ACD4:26 6D ROL $6D ; rotate C into 16-bit $6D-$6E 0x00ACE6|$02:$ACD6:26 6E ROL $6E 0x00ACE8|$02:$ACD8:CA DEX 0x00ACE9|$02:$ACD9:D0 F6 BNE $ACD1 0x00ACEB|$02:$ACDB:A5 6D LDA $6D 0x00ACED|$02:$ACDD:60 RTS ; read 1 bit of map data into C, updating read variables as necessary ; control flow target (from $ACD1, $AD1F, $AE48, $AE61, $AE89) 0x00ACEE|$02:$ACDE:A9 80 LDA #$80 0x00ACF0|$02:$ACE0:AC 4D 61 LDY $614D ; map bit index; how many times to LSR #$80 so it lines up with the current map bit ; control flow target (from $ACE7) 0x00ACF3|$02:$ACE3:F0 05 BEQ $ACEA 0x00ACF5|$02:$ACE5:4A LSR 0x00ACF6|$02:$ACE6:88 DEY 0x00ACF7|$02:$ACE7:4C E3 AC JMP $ACE3 ; control flow target (from $ACE3) 0x00ACFA|$02:$ACEA:A0 00 LDY #$00 0x00ACFC|$02:$ACEC:31 0C AND ($0C),Y 0x00ACFE|$02:$ACEE:85 7B STA $7B ; dedicated temporary storage for byte containing current map bit; PHA/PLA would have been better 0x00AD00|$02:$ACF0:EE 4D 61 INC $614D ; map bit index; how many times to LSR #$80 so it lines up with the current map bit 0x00AD03|$02:$ACF3:AD 4D 61 LDA $614D ; map bit index; how many times to LSR #$80 so it lines up with the current map bit 0x00AD06|$02:$ACF6:C9 08 CMP #$08 ; 8 bits per byte 0x00AD08|$02:$ACF8:90 0B BCC $AD05 ; CLC if $7B is #$00, SEC otherwise 0x00AD0A|$02:$ACFA:A9 00 LDA #$00 ; otherwise reset to #$00 and INC 16-bit map data address $0C-$0D 0x00AD0C|$02:$ACFC:8D 4D 61 STA $614D ; map bit index; how many times to LSR #$80 so it lines up with the current map bit 0x00AD0F|$02:$ACFF:E6 0C INC $0C 0x00AD11|$02:$AD01:D0 02 BNE $AD05 ; CLC if $7B is #$00, SEC otherwise 0x00AD13|$02:$AD03:E6 0D INC $0D ; CLC if $7B is #$00, SEC otherwise ; control flow target (from $ACF8, $AD01) 0x00AD15|$02:$AD05:A5 7B LDA $7B ; dedicated temporary storage for byte containing current map bit; PHA/PLA would have been better 0x00AD17|$02:$AD07:F0 02 BEQ $AD0B 0x00AD19|$02:$AD09:38 SEC 0x00AD1A|$02:$AD0A:60 RTS ; control flow target (from $AD07) 0x00AD1B|$02:$AD0B:18 CLC 0x00AD1C|$02:$AD0C:60 RTS ; map data 0b00 handler: set the current 1x1 or 2x2 block of tile IDs ; control flow target (from $AC59) 0x00AD1D|$02:$AD0D:A9 00 LDA #$00 0x00AD1F|$02:$AD0F:8D 4F 61 STA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AD22|$02:$AD12:20 A8 AC JSR $ACA8 ; read 1 tile ID of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD25|$02:$AD15:8D 52 61 STA $6152 ; first tile ID from 0b00 handler 0x00AD28|$02:$AD18:20 C3 AC JSR $ACC3 ; read 2 bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD2B|$02:$AD1B:C9 00 CMP #$00 0x00AD2D|$02:$AD1D:D0 20 BNE $AD3F ; loop to process map control code in A 0x00AD2F|$02:$AD1F:20 DE AC JSR $ACDE ; read 1 bit of map data into C, updating read variables as necessary 0x00AD32|$02:$AD22:90 01 BCC $AD25 ; flag 2x2 block, read 3 tile IDs of map data into $6153-$6155 0x00AD34|$02:$AD24:60 RTS ; RTS to end this map phase ; flag 2x2 block, read 3 tile IDs of map data into $6153-$6155 ; control flow target (from $AD22) 0x00AD35|$02:$AD25:A9 FF LDA #$FF 0x00AD37|$02:$AD27:8D 4F 61 STA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AD3A|$02:$AD2A:20 A8 AC JSR $ACA8 ; read 1 tile ID of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD3D|$02:$AD2D:8D 53 61 STA $6153 ; second tile ID from 0b00 handler 0x00AD40|$02:$AD30:20 A8 AC JSR $ACA8 ; read 1 tile ID of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD43|$02:$AD33:8D 54 61 STA $6154 ; third tile ID from 0b00 handler 0x00AD46|$02:$AD36:20 A8 AC JSR $ACA8 ; read 1 tile ID of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD49|$02:$AD39:8D 55 61 STA $6155 ; fourth tile ID from 0b00 handler 0x00AD4C|$02:$AD3C:4C 47 AC JMP $AC47 ; process next map control code ; loop to process map control code in A ; control flow target (from $AD1D) 0x00AD4F|$02:$AD3F:4C 4A AC JMP $AC4A ; process map control code in A ; map data 0b01 handler: read 2 co-ordinates of map data and depending on roofing phase, fill the map buffer between those two points with the current 1x1 or 2x2 block of tile IDs or update the roofing between those two points ; control flow target (from $AC5C) 0x00AD52|$02:$AD42:20 C7 AC JSR $ACC7 ; read 1 co-ordinate of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD55|$02:$AD45:A5 6D LDA $6D ; useless op: A already contains $6D 0x00AD57|$02:$AD47:85 74 STA $74 ; copy map buffer index from $6D-$6E to $74-$75 0x00AD59|$02:$AD49:A5 6E LDA $6E 0x00AD5B|$02:$AD4B:85 75 STA $75 0x00AD5D|$02:$AD4D:A5 0E LDA $0E ; map width 0x00AD5F|$02:$AD4F:A2 6D LDX #$6D 0x00AD61|$02:$AD51:20 60 B0 JSR $B060 ; given A and X, perform 16-bit division: ($00,X-$01,X) / A = quotient in ($00,X-$01,X), remainder in A 0x00AD64|$02:$AD54:85 70 STA $70 ; start column 0x00AD66|$02:$AD56:A5 6D LDA $6D ; start row 0x00AD68|$02:$AD58:85 71 STA $71 ; start row 0x00AD6A|$02:$AD5A:20 C7 AC JSR $ACC7 ; read 1 co-ordinate of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AD6D|$02:$AD5D:A5 0E LDA $0E ; map width 0x00AD6F|$02:$AD5F:A2 6D LDX #$6D 0x00AD71|$02:$AD61:20 60 B0 JSR $B060 ; given A and X, perform 16-bit division: ($00,X-$01,X) / A = quotient in ($00,X-$01,X), remainder in A 0x00AD74|$02:$AD64:85 72 STA $72 ; end column 0x00AD76|$02:$AD66:A5 6D LDA $6D ; end row 0x00AD78|$02:$AD68:85 73 STA $73 ; end row 0x00AD7A|$02:$AD6A:A9 00 LDA #$00 0x00AD7C|$02:$AD6C:A0 78 LDY #$78 0x00AD7E|$02:$AD6E:A2 74 LDX #$74 0x00AD80|$02:$AD70:20 0A B0 JSR $B00A ; given A, X, and Y, ($00,X-$01,X) = ($00,X-$01,X) + (Y * $100 + A); $74-$75 is now address in map buffer 0x00AD83|$02:$AD73:A5 73 LDA $73 ; end row 0x00AD85|$02:$AD75:38 SEC 0x00AD86|$02:$AD76:E5 71 SBC $71 ; start row 0x00AD88|$02:$AD78:85 71 STA $71 ; difference between row offsets 0x00AD8A|$02:$AD7A:A5 72 LDA $72 ; end column 0x00AD8C|$02:$AD7C:38 SEC 0x00AD8D|$02:$AD7D:E5 70 SBC $70 ; start column 0x00AD8F|$02:$AD7F:85 70 STA $70 ; difference between column offsets 0x00AD91|$02:$AD81:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AD94|$02:$AD84:F0 04 BEQ $AD8A 0x00AD96|$02:$AD86:46 70 LSR $70 ; if flag set, we're writing 2x2 blocks instead of 1x1, so divide the differences by 2 0x00AD98|$02:$AD88:46 71 LSR $71 ; control flow target (from $AD84) 0x00AD9A|$02:$AD8A:E6 70 INC $70 ; convert to number of columns 0x00AD9C|$02:$AD8C:E6 71 INC $71 ; convert to number of rows ; update map buffer ; control flow target (from $AE14) 0x00AD9E|$02:$AD8E:AD 52 61 LDA $6152 ; first tile ID from 0b00 handler 0x00ADA1|$02:$AD91:A6 70 LDX $70 ; number of columns to copy ; update map buffer row ; control flow target (from $ADE3, $ADFD) 0x00ADA3|$02:$AD93:A0 00 LDY #$00 0x00ADA5|$02:$AD95:48 PHA 0x00ADA6|$02:$AD96:AD 4E 61 LDA $614E ; map roofing phase flag 0x00ADA9|$02:$AD99:F0 15 BEQ $ADB0 ; adding base tiles phase ; roofing phase 0x00ADAB|$02:$AD9B:B1 74 LDA ($74),Y ; map data 0x00ADAD|$02:$AD9D:29 1F AND #$1F ; strip off the roof 0x00ADAF|$02:$AD9F:91 74 STA ($74),Y ; map data 0x00ADB1|$02:$ADA1:68 PLA ; tile ID 0x00ADB2|$02:$ADA2:48 PHA ; tile ID 0x00ADB3|$02:$ADA3:0A ASL ; base tiles are at most 5 bits wide, so roofing gets the high 3 bits 0x00ADB4|$02:$ADA4:0A ASL 0x00ADB5|$02:$ADA5:0A ASL 0x00ADB6|$02:$ADA6:0A ASL 0x00ADB7|$02:$ADA7:0A ASL 0x00ADB8|$02:$ADA8:11 74 ORA ($74),Y ; map data; add the roof 0x00ADBA|$02:$ADAA:91 74 STA ($74),Y ; map data 0x00ADBC|$02:$ADAC:68 PLA ; tile ID 0x00ADBD|$02:$ADAD:4C F9 AD JMP $ADF9 ; update the map co-ordinates ; adding base tiles phase ; control flow target (from $AD99) 0x00ADC0|$02:$ADB0:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00ADC3|$02:$ADB3:F0 41 BEQ $ADF6 ; write a 1x1 tile ID and update the map co-ordinates 0x00ADC5|$02:$ADB5:68 PLA ; write the 2x2 block of tile IDs given by $6152-$6155 to the map buffer at ($74),Y 0x00ADC6|$02:$ADB6:AD 52 61 LDA $6152 ; first tile ID from 0b00 handler 0x00ADC9|$02:$ADB9:91 74 STA ($74),Y ; map data 0x00ADCB|$02:$ADBB:20 17 AE JSR $AE17 ; INC 16-bit $74-$75 0x00ADCE|$02:$ADBE:A5 74 LDA $74 ; map data; save map buffer index on the stack 0x00ADD0|$02:$ADC0:48 PHA 0x00ADD1|$02:$ADC1:A5 75 LDA $75 0x00ADD3|$02:$ADC3:48 PHA 0x00ADD4|$02:$ADC4:AD 53 61 LDA $6153 ; second tile ID from 0b00 handler 0x00ADD7|$02:$ADC7:91 74 STA ($74),Y ; map data 0x00ADD9|$02:$ADC9:20 2A AE JSR $AE2A ; add map width $0E to 16-bit $74-$75, i.e. $74-$75 += 1 row 0x00ADDC|$02:$ADCC:AD 55 61 LDA $6155 ; fourth tile ID from 0b00 handler 0x00ADDF|$02:$ADCF:91 74 STA ($74),Y ; map data 0x00ADE1|$02:$ADD1:20 1E AE JSR $AE1E ; DEC 16-bit $74-$75 0x00ADE4|$02:$ADD4:AD 54 61 LDA $6154 ; third tile ID from 0b00 handler 0x00ADE7|$02:$ADD7:91 74 STA ($74),Y ; map data 0x00ADE9|$02:$ADD9:68 PLA ; restore map buffer index from the stack 0x00ADEA|$02:$ADDA:85 75 STA $75 0x00ADEC|$02:$ADDC:68 PLA 0x00ADED|$02:$ADDD:85 74 STA $74 ; map data 0x00ADEF|$02:$ADDF:20 17 AE JSR $AE17 ; INC 16-bit $74-$75 0x00ADF2|$02:$ADE2:CA DEX ; number of columns left to copy 0x00ADF3|$02:$ADE3:D0 AE BNE $AD93 ; update map buffer row 0x00ADF5|$02:$ADE5:A5 0E LDA $0E ; map width 0x00ADF7|$02:$ADE7:38 SEC 0x00ADF8|$02:$ADE8:E5 70 SBC $70 ; number of columns to copy 0x00ADFA|$02:$ADEA:38 SEC 0x00ADFB|$02:$ADEB:E5 70 SBC $70 ; number of columns to copy 0x00ADFD|$02:$ADED:20 2C AE JSR $AE2C ; add A to 16-bit $74-$75 0x00AE00|$02:$ADF0:20 2A AE JSR $AE2A ; add map width $0E to 16-bit $74-$75, i.e. $74-$75 += 1 row 0x00AE03|$02:$ADF3:4C 0D AE JMP $AE0D ; DEC number of rows left to copy, keep going ; write a 1x1 tile ID and update the map co-ordinates ; control flow target (from $ADB3) 0x00AE06|$02:$ADF6:68 PLA 0x00AE07|$02:$ADF7:91 74 STA ($74),Y ; map data ; update the map co-ordinates ; control flow target (from $ADAD) 0x00AE09|$02:$ADF9:20 17 AE JSR $AE17 ; INC 16-bit $74-$75 0x00AE0C|$02:$ADFC:CA DEX ; number of columns left to copy 0x00AE0D|$02:$ADFD:D0 94 BNE $AD93 ; update map buffer row 0x00AE0F|$02:$ADFF:A5 0E LDA $0E ; map width 0x00AE11|$02:$AE01:38 SEC 0x00AE12|$02:$AE02:E5 70 SBC $70 ; number of columns to copy 0x00AE14|$02:$AE04:18 CLC 0x00AE15|$02:$AE05:65 74 ADC $74 0x00AE17|$02:$AE07:85 74 STA $74 ; $74-$75 = $74-$75 + 1 row - number of columns we copied, i.e. original map co-ordinates + 1 row 0x00AE19|$02:$AE09:90 02 BCC $AE0D ; DEC number of rows left to copy, keep going 0x00AE1B|$02:$AE0B:E6 75 INC $75 ; DEC number of rows left to copy, keep going ; control flow target (from $ADF3, $AE09) 0x00AE1D|$02:$AE0D:C6 71 DEC $71 ; number of rows left to copy 0x00AE1F|$02:$AE0F:D0 03 BNE $AE14 ; update map buffer 0x00AE21|$02:$AE11:4C 47 AC JMP $AC47 ; process next map control code ; update map buffer ; control flow target (from $AE0F) 0x00AE24|$02:$AE14:4C 8E AD JMP $AD8E ; update map buffer ; INC 16-bit $74-$75 ; control flow target (from $ADBB, $ADDF, $ADF9) 0x00AE27|$02:$AE17:E6 74 INC $74 0x00AE29|$02:$AE19:D0 02 BNE $AE1D 0x00AE2B|$02:$AE1B:E6 75 INC $75 ; control flow target (from $AE19) 0x00AE2D|$02:$AE1D:60 RTS ; DEC 16-bit $74-$75 ; control flow target (from $ADD1) 0x00AE2E|$02:$AE1E:A5 74 LDA $74 0x00AE30|$02:$AE20:38 SEC 0x00AE31|$02:$AE21:E9 01 SBC #$01 0x00AE33|$02:$AE23:85 74 STA $74 0x00AE35|$02:$AE25:B0 02 BCS $AE29 0x00AE37|$02:$AE27:C6 75 DEC $75 ; control flow target (from $AE25) 0x00AE39|$02:$AE29:60 RTS ; add map width $0E to 16-bit $74-$75, i.e. $74-$75 += 1 row ; control flow target (from $ADC9, $ADF0) 0x00AE3A|$02:$AE2A:A5 0E LDA $0E ; map width ; add A to 16-bit $74-$75 ; control flow target (from $ADED) 0x00AE3C|$02:$AE2C:18 CLC 0x00AE3D|$02:$AE2D:65 74 ADC $74 0x00AE3F|$02:$AE2F:85 74 STA $74 0x00AE41|$02:$AE31:90 02 BCC $AE35 0x00AE43|$02:$AE33:E6 75 INC $75 ; control flow target (from $AE31) 0x00AE45|$02:$AE35:60 RTS ; map data 0b11 handler: read 1 co-ordinate of map data and then depending on roofing phase, either write the current 1x1 or 2x2 block of tile IDs there or update its roofing ; control flow target (from $AC56) 0x00AE46|$02:$AE36:20 AE AC JSR $ACAE ; read 1 co-ordinate of map data into $6D-$6E, set $75-$76 to that map buffer address 0x00AE49|$02:$AE39:20 26 AF JSR $AF26 ; depending on roofing phase, either write the current 1x1 or 2x2 block of tile IDs to ($6D) or update the roofing of the 1x1 or 2x2 block at ($6D) 0x00AE4C|$02:$AE3C:4C 47 AC JMP $AC47 ; process next map control code ; map data 0b10 handler: read 1 co-ordinate of map data and then start drawing the current tile ID from there, moving around as dictated by map data ; control flow target (from $AC5F, $AE66) 0x00AE4F|$02:$AE3F:20 AE AC JSR $ACAE ; read 1 co-ordinate of map data into $6D-$6E, set $75-$76 to that map buffer address 0x00AE52|$02:$AE42:20 26 AF JSR $AF26 ; depending on roofing phase, either write the current 1x1 or 2x2 block of tile IDs to ($6D) or update the roofing of the 1x1 or 2x2 block at ($6D) 0x00AE55|$02:$AE45:20 1D AF JSR $AF1D ; read 2 bits of data into draw direction $6151, updating read variables as necessary ; process next 0b10 control code ; control flow target (from $AE83, $AEB9) 0x00AE58|$02:$AE48:20 DE AC JSR $ACDE ; read 1 bit of map data into C, updating read variables as necessary 0x00AE5B|$02:$AE4B:B0 03 BCS $AE50 ; read 2 bits of map data: if #$00 or #$01, rotate in that direction and draw the current tile ID; if #$02, push to "map stack" then read 1 bit of map data, rotate in that direction, and draw current tile ID; if #$03, read 1 bit of map data and if set, pop from "map stack", else loop to 0b10 handler to start drawing at a new co-ordinate 0x00AE5D|$02:$AE4D:4C B3 AE JMP $AEB3 ; keep drawing in the current direction; update map co-ordinates based on draw direction and depending on roofing phase flag, either update the roofing of the 1x1 or 2x2 block at ($75) or write a 1x1 or 2x2 block of tile IDs to ($75) ; read 2 bits of map data: if #$00 or #$01, rotate in that direction and draw the current tile ID; if #$02, push to "map stack" then read 1 bit of map data, rotate in that direction, and draw current tile ID; if #$03, read 1 bit of map data and if set, pop from "map stack", else loop to 0b10 handler to start drawing at a new co-ordinate ; control flow target (from $AE4B) 0x00AE60|$02:$AE50:A9 02 LDA #$02 0x00AE62|$02:$AE52:20 CA AC JSR $ACCA ; read A bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AE65|$02:$AE55:C9 00 CMP #$00 0x00AE67|$02:$AE57:F0 3E BEQ $AE97 ; turn direction clockwise, move in that direction, and draw current tile ID 0x00AE69|$02:$AE59:C9 01 CMP #$01 0x00AE6B|$02:$AE5B:F0 48 BEQ $AEA5 ; turn direction counter-clockwise, move in that direction, and draw current tile ID 0x00AE6D|$02:$AE5D:C9 02 CMP #$02 0x00AE6F|$02:$AE5F:F0 28 BEQ $AE89 ; push the current map co-ordinates and direction to the "map stack", updating its index, then read 1 bit of map data and if set, rotate direction counter-clockwise, else rotate direction clockwise; either way, move in that direction and draw the current tile ID 0x00AE71|$02:$AE61:20 DE AC JSR $ACDE ; read 1 bit of map data into C, updating read variables as necessary ; useless op; control flow is identical without this 0x00AE74|$02:$AE64:B0 02 BCS $AE68 0x00AE76|$02:$AE66:90 D7 BCC $AE3F ; map data 0b10 handler: read 1 co-ordinate of map data and then start drawing the current tile ID from there, moving around as dictated by map data ; control flow target (from $AE64) 0x00AE78|$02:$AE68:AE 56 61 LDX $6156 ; index to top of "map stack" at $616B for 0b10 handler 0x00AE7B|$02:$AE6B:F0 19 BEQ $AE86 ; popping the bottom of the "map stack" ends the 0b10 control code; loop to process the next map control code 0x00AE7D|$02:$AE6D:CA DEX 0x00AE7E|$02:$AE6E:BD 6B 61 LDA $616B,X ; "map stack" start 0x00AE81|$02:$AE71:8D 51 61 STA $6151 ; draw direction from 0b10 handler 0x00AE84|$02:$AE74:CA DEX 0x00AE85|$02:$AE75:BD 6B 61 LDA $616B,X ; "map stack" start 0x00AE88|$02:$AE78:85 76 STA $76 0x00AE8A|$02:$AE7A:CA DEX 0x00AE8B|$02:$AE7B:BD 6B 61 LDA $616B,X ; "map stack" start 0x00AE8E|$02:$AE7E:85 75 STA $75 0x00AE90|$02:$AE80:8E 56 61 STX $6156 ; index to top of "map stack" at $616B for 0b10 handler 0x00AE93|$02:$AE83:4C 48 AE JMP $AE48 ; process next 0b10 control code ; popping the bottom of the "map stack" ends the 0b10 control code; loop to process the next map control code ; control flow target (from $AE6B) 0x00AE96|$02:$AE86:4C 47 AC JMP $AC47 ; process next map control code ; push the current map co-ordinates and direction to the "map stack", updating its index, then read 1 bit of map data and if set, rotate direction counter-clockwise, else rotate direction clockwise; either way, move in that direction and draw the current tile ID ; control flow target (from $AE5F) 0x00AE99|$02:$AE89:20 DE AC JSR $ACDE ; read 1 bit of map data into C, updating read variables as necessary 0x00AE9C|$02:$AE8C:90 06 BCC $AE94 ; push the current map co-ordinates and direction to the "map stack", updating its index, then rotate direction clockwise, move in that direction, and draw the current tile ID 0x00AE9E|$02:$AE8E:20 A4 AF JSR $AFA4 ; push the current map co-ordinates and direction to the "map stack" and update its index 0x00AEA1|$02:$AE91:4C A5 AE JMP $AEA5 ; turn direction counter-clockwise, move in that direction, and draw current tile ID ; push the current map co-ordinates and direction to the "map stack", updating its index, then rotate direction clockwise, move in that direction, and draw the current tile ID ; control flow target (from $AE8C) 0x00AEA4|$02:$AE94:20 A4 AF JSR $AFA4 ; push the current map co-ordinates and direction to the "map stack" and update its index ; turn direction clockwise, move in that direction, and draw current tile ID ; control flow target (from $AE57) 0x00AEA7|$02:$AE97:AD 51 61 LDA $6151 ; draw direction from 0b10 handler 0x00AEAA|$02:$AE9A:18 CLC 0x00AEAB|$02:$AE9B:69 01 ADC #$01 0x00AEAD|$02:$AE9D:29 03 AND #$03 0x00AEAF|$02:$AE9F:8D 51 61 STA $6151 ; draw direction from 0b10 handler 0x00AEB2|$02:$AEA2:4C B3 AE JMP $AEB3 ; keep drawing in the current direction; update map co-ordinates based on draw direction and depending on roofing phase flag, either update the roofing of the 1x1 or 2x2 block at ($75) or write a 1x1 or 2x2 block of tile IDs to ($75) ; turn direction counter-clockwise, move in that direction, and draw current tile ID ; control flow target (from $AE5B, $AE91) 0x00AEB5|$02:$AEA5:AD 51 61 LDA $6151 ; draw direction from 0b10 handler 0x00AEB8|$02:$AEA8:38 SEC 0x00AEB9|$02:$AEA9:E9 01 SBC #$01 0x00AEBB|$02:$AEAB:29 03 AND #$03 0x00AEBD|$02:$AEAD:8D 51 61 STA $6151 ; draw direction from 0b10 handler 0x00AEC0|$02:$AEB0:4C B3 AE JMP $AEB3 ; keep drawing in the current direction; update map co-ordinates based on draw direction and depending on roofing phase flag, either update the roofing of the 1x1 or 2x2 block at ($75) or write a 1x1 or 2x2 block of tile IDs to ($75) ; keep drawing in the current direction; update map co-ordinates based on draw direction and depending on roofing phase flag, either update the roofing of the 1x1 or 2x2 block at ($75) or write a 1x1 or 2x2 block of tile IDs to ($75) ; control flow target (from $AE4D, $AEA2, $AEB0) 0x00AEC3|$02:$AEB3:20 BC AE JSR $AEBC ; update map co-ordinates based on draw direction 0x00AEC6|$02:$AEB6:20 67 AF JSR $AF67 ; depending on roofing phase, either write a 1x1 or 2x2 block of tile IDs to ($75) or update the roofing of the 1x1 or 2x2 block at ($75) 0x00AEC9|$02:$AEB9:4C 48 AE JMP $AE48 ; process next 0b10 control code ; update map co-ordinates based on draw direction ; control flow target (from $AEB3) 0x00AECC|$02:$AEBC:AE 51 61 LDX $6151 ; draw direction from 0b10 handler 0x00AECF|$02:$AEBF:F0 08 BEQ $AEC9 ; subtract 1 or 2 rows from $75-$76 depending on whether we're writing 1x1 or 2x2 blocks 0x00AED1|$02:$AEC1:CA DEX 0x00AED2|$02:$AEC2:F0 10 BEQ $AED4 ; add 1 or 2 columns to $75-$76 depending on whether we're writing 1x1 or 2x2 blocks 0x00AED4|$02:$AEC4:CA DEX 0x00AED5|$02:$AEC5:F0 17 BEQ $AEDE ; add 1 or 2 rows to $75-$76 depending on whether we're writing 1x1 or 2x2 blocks 0x00AED7|$02:$AEC7:D0 1F BNE $AEE8 ; subtract 1 or 2 columns from $75-$76 depending on whether we're writing 1x1 or 2x2 blocks ; subtract 1 or 2 rows from $75-$76 depending on whether we're writing 1x1 or 2x2 blocks ; control flow target (from $AEBF) 0x00AED9|$02:$AEC9:20 F2 AE JSR $AEF2 ; subtract map width $0E from 16-bit $75-$76, i.e. $75-$76 -= 1 row 0x00AEDC|$02:$AECC:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AEDF|$02:$AECF:F0 02 BEQ $AED3 ; done updating 0x00AEE1|$02:$AED1:D0 1F BNE $AEF2 ; subtract map width $0E from 16-bit $75-$76, i.e. $75-$76 -= 1 row ; done updating ; control flow target (from $AECF, $AEDA, $AEE4, $AEEE) 0x00AEE3|$02:$AED3:60 RTS ; add 1 or 2 columns to $75-$76 depending on whether we're writing 1x1 or 2x2 blocks ; control flow target (from $AEC2) 0x00AEE4|$02:$AED4:20 FE AE JSR $AEFE ; INC 16-bit $75-$76 0x00AEE7|$02:$AED7:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AEEA|$02:$AEDA:F0 F7 BEQ $AED3 ; done updating 0x00AEEC|$02:$AEDC:D0 20 BNE $AEFE ; INC 16-bit $75-$76 ; add 1 or 2 rows to $75-$76 depending on whether we're writing 1x1 or 2x2 blocks ; control flow target (from $AEC5) 0x00AEEE|$02:$AEDE:20 05 AF JSR $AF05 ; add map width $0E to 16-bit $75-$76, i.e. $75-$76 += 1 row 0x00AEF1|$02:$AEE1:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AEF4|$02:$AEE4:F0 ED BEQ $AED3 ; done updating 0x00AEF6|$02:$AEE6:D0 1D BNE $AF05 ; add map width $0E to 16-bit $75-$76, i.e. $75-$76 += 1 row ; subtract 1 or 2 columns from $75-$76 depending on whether we're writing 1x1 or 2x2 blocks ; control flow target (from $AEC7) 0x00AEF8|$02:$AEE8:20 11 AF JSR $AF11 ; DEC 16-bit $75-$76 0x00AEFB|$02:$AEEB:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AEFE|$02:$AEEE:F0 E3 BEQ $AED3 ; done updating 0x00AF00|$02:$AEF0:D0 1F BNE $AF11 ; DEC 16-bit $75-$76 ; subtract map width $0E from 16-bit $75-$76, i.e. $75-$76 -= 1 row ; control flow target (from $AEC9, $AED1) 0x00AF02|$02:$AEF2:A5 75 LDA $75 0x00AF04|$02:$AEF4:38 SEC 0x00AF05|$02:$AEF5:E5 0E SBC $0E ; map width 0x00AF07|$02:$AEF7:85 75 STA $75 0x00AF09|$02:$AEF9:B0 02 BCS $AEFD 0x00AF0B|$02:$AEFB:C6 76 DEC $76 ; control flow target (from $AEF9, $AF00, $AF0C, $AF18) 0x00AF0D|$02:$AEFD:60 RTS ; INC 16-bit $75-$76 ; control flow target (from $AED4, $AEDC) 0x00AF0E|$02:$AEFE:E6 75 INC $75 0x00AF10|$02:$AF00:D0 FB BNE $AEFD 0x00AF12|$02:$AF02:E6 76 INC $76 0x00AF14|$02:$AF04:60 RTS ; add map width $0E to 16-bit $75-$76, i.e. $75-$76 += 1 row ; control flow target (from $AEDE, $AEE6) 0x00AF15|$02:$AF05:A5 75 LDA $75 0x00AF17|$02:$AF07:18 CLC 0x00AF18|$02:$AF08:65 0E ADC $0E ; map width 0x00AF1A|$02:$AF0A:85 75 STA $75 0x00AF1C|$02:$AF0C:90 EF BCC $AEFD 0x00AF1E|$02:$AF0E:E6 76 INC $76 0x00AF20|$02:$AF10:60 RTS ; DEC 16-bit $75-$76 ; control flow target (from $AEE8, $AEF0) 0x00AF21|$02:$AF11:A5 75 LDA $75 0x00AF23|$02:$AF13:38 SEC 0x00AF24|$02:$AF14:E9 01 SBC #$01 0x00AF26|$02:$AF16:85 75 STA $75 0x00AF28|$02:$AF18:B0 E3 BCS $AEFD 0x00AF2A|$02:$AF1A:C6 76 DEC $76 0x00AF2C|$02:$AF1C:60 RTS ; read 2 bits of data into draw direction $6151, updating read variables as necessary ; control flow target (from $AE45) 0x00AF2D|$02:$AF1D:A9 02 LDA #$02 0x00AF2F|$02:$AF1F:20 CA AC JSR $ACCA ; read A bits of map data into $6D-$6E, updating read variables as necessary and returning $6D in A 0x00AF32|$02:$AF22:8D 51 61 STA $6151 ; draw direction from 0b10 handler 0x00AF35|$02:$AF25:60 RTS ; depending on roofing phase, either write the current 1x1 or 2x2 block of tile IDs to ($6D) or update the roofing of the 1x1 or 2x2 block at ($6D) ; control flow target (from $AE39, $AE42) 0x00AF36|$02:$AF26:AD 52 61 LDA $6152 ; first tile ID from 0b00 handler 0x00AF39|$02:$AF29:A0 00 LDY #$00 0x00AF3B|$02:$AF2B:20 4A AF JSR $AF4A ; depending on roofing phase, either write the tile ID in A to ($6D),Y or update the roofing of ($6D),Y based on A 0x00AF3E|$02:$AF2E:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AF41|$02:$AF31:F0 16 BEQ $AF49 0x00AF43|$02:$AF33:C8 INY 0x00AF44|$02:$AF34:AD 53 61 LDA $6153 ; second tile ID from 0b00 handler 0x00AF47|$02:$AF37:20 4A AF JSR $AF4A ; depending on roofing phase, either write the tile ID in A to ($6D),Y or update the roofing of ($6D),Y based on A 0x00AF4A|$02:$AF3A:A4 0E LDY $0E ; map width 0x00AF4C|$02:$AF3C:AD 54 61 LDA $6154 ; third tile ID from 0b00 handler 0x00AF4F|$02:$AF3F:20 4A AF JSR $AF4A ; depending on roofing phase, either write the tile ID in A to ($6D),Y or update the roofing of ($6D),Y based on A 0x00AF52|$02:$AF42:C8 INY 0x00AF53|$02:$AF43:AD 55 61 LDA $6155 ; fourth tile ID from 0b00 handler 0x00AF56|$02:$AF46:4C 4A AF JMP $AF4A ; depending on roofing phase, either write the tile ID in A to ($6D),Y or update the roofing of ($6D),Y based on A ; control flow target (from $AF31, $AF72) 0x00AF59|$02:$AF49:60 RTS ; depending on roofing phase, either write the tile ID in A to ($6D),Y or update the roofing of ($6D),Y based on A ; control flow target (from $AF2B, $AF37, $AF3F, $AF46) 0x00AF5A|$02:$AF4A:48 PHA ; tile ID 0x00AF5B|$02:$AF4B:AD 4E 61 LDA $614E ; map roofing phase flag 0x00AF5E|$02:$AF4E:F0 13 BEQ $AF63 0x00AF60|$02:$AF50:B1 6D LDA ($6D),Y ; map data 0x00AF62|$02:$AF52:29 1F AND #$1F ; strip off the roof 0x00AF64|$02:$AF54:91 6D STA ($6D),Y ; map data 0x00AF66|$02:$AF56:68 PLA ; tile ID 0x00AF67|$02:$AF57:48 PHA ; tile ID 0x00AF68|$02:$AF58:0A ASL ; base tiles are at most 5 bits wide, so roofing gets the high 3 bits 0x00AF69|$02:$AF59:0A ASL 0x00AF6A|$02:$AF5A:0A ASL 0x00AF6B|$02:$AF5B:0A ASL 0x00AF6C|$02:$AF5C:0A ASL 0x00AF6D|$02:$AF5D:11 6D ORA ($6D),Y ; add the roof 0x00AF6F|$02:$AF5F:91 6D STA ($6D),Y ; map data 0x00AF71|$02:$AF61:68 PLA ; tile ID 0x00AF72|$02:$AF62:60 RTS ; control flow target (from $AF4E) 0x00AF73|$02:$AF63:68 PLA 0x00AF74|$02:$AF64:91 6D STA ($6D),Y 0x00AF76|$02:$AF66:60 RTS ; depending on roofing phase, either write a 1x1 or 2x2 block of tile IDs to ($75) or update the roofing of the 1x1 or 2x2 block at ($75) ; control flow target (from $AEB6) 0x00AF77|$02:$AF67:AD 52 61 LDA $6152 ; first tile ID from 0b00 handler 0x00AF7A|$02:$AF6A:A0 00 LDY #$00 0x00AF7C|$02:$AF6C:20 87 AF JSR $AF87 ; depending on roofing phase, either write the tile ID in A to ($75),Y or update the roofing of ($75),Y based on A 0x00AF7F|$02:$AF6F:AD 4F 61 LDA $614F ; flag for whether 0b00 handler wrote tile IDs to $6153-$6155 0x00AF82|$02:$AF72:F0 D5 BEQ $AF49 0x00AF84|$02:$AF74:C8 INY ; original co-ordinates + 1 column 0x00AF85|$02:$AF75:AD 53 61 LDA $6153 ; second tile ID from 0b00 handler 0x00AF88|$02:$AF78:20 87 AF JSR $AF87 ; depending on roofing phase, either write the tile ID in A to ($75),Y or update the roofing of ($75),Y based on A 0x00AF8B|$02:$AF7B:A4 0E LDY $0E ; map width; original co-ordinates + 1 row 0x00AF8D|$02:$AF7D:AD 54 61 LDA $6154 ; third tile ID from 0b00 handler 0x00AF90|$02:$AF80:20 87 AF JSR $AF87 ; depending on roofing phase, either write the tile ID in A to ($75),Y or update the roofing of ($75),Y based on A 0x00AF93|$02:$AF83:C8 INY ; original co-ordinates + 1 row, + 1 column 0x00AF94|$02:$AF84:AD 55 61 LDA $6155 ; fourth tile ID from 0b00 handler ; depending on roofing phase, either write the tile ID in A to ($75),Y or update the roofing of ($75),Y based on A ; control flow target (from $AF6C, $AF78, $AF80) 0x00AF97|$02:$AF87:48 PHA ; tile ID 0x00AF98|$02:$AF88:AD 4E 61 LDA $614E ; map roofing phase flag 0x00AF9B|$02:$AF8B:F0 13 BEQ $AFA0 ; non-roofing phase: write A to the map at ($75),Y 0x00AF9D|$02:$AF8D:B1 75 LDA ($75),Y ; map data 0x00AF9F|$02:$AF8F:29 1F AND #$1F ; strip off the roof 0x00AFA1|$02:$AF91:91 75 STA ($75),Y ; map data 0x00AFA3|$02:$AF93:68 PLA ; tile ID 0x00AFA4|$02:$AF94:48 PHA ; tile ID 0x00AFA5|$02:$AF95:0A ASL ; base tiles are at most 5 bits wide, so roofing gets the high 3 bits 0x00AFA6|$02:$AF96:0A ASL 0x00AFA7|$02:$AF97:0A ASL 0x00AFA8|$02:$AF98:0A ASL 0x00AFA9|$02:$AF99:0A ASL 0x00AFAA|$02:$AF9A:11 75 ORA ($75),Y ; add the roof 0x00AFAC|$02:$AF9C:91 75 STA ($75),Y ; map data 0x00AFAE|$02:$AF9E:68 PLA ; tile ID 0x00AFAF|$02:$AF9F:60 RTS ; non-roofing phase: write A to the map at ($75),Y ; control flow target (from $AF8B) 0x00AFB0|$02:$AFA0:68 PLA 0x00AFB1|$02:$AFA1:91 75 STA ($75),Y 0x00AFB3|$02:$AFA3:60 RTS ; push the current map co-ordinates and direction to the "map stack" and update its index ; control flow target (from $AE8E, $AE94) 0x00AFB4|$02:$AFA4:AE 56 61 LDX $6156 ; index to top of "map stack" at $616B for 0b10 handler 0x00AFB7|$02:$AFA7:A5 75 LDA $75 0x00AFB9|$02:$AFA9:9D 6B 61 STA $616B,X ; "map stack" start 0x00AFBC|$02:$AFAC:E8 INX 0x00AFBD|$02:$AFAD:A5 76 LDA $76 0x00AFBF|$02:$AFAF:9D 6B 61 STA $616B,X ; "map stack" start 0x00AFC2|$02:$AFB2:E8 INX 0x00AFC3|$02:$AFB3:AD 51 61 LDA $6151 ; draw direction from 0b10 handler 0x00AFC6|$02:$AFB6:9D 6B 61 STA $616B,X ; "map stack" start 0x00AFC9|$02:$AFB9:E8 INX 0x00AFCA|$02:$AFBA:8E 56 61 STX $6156 ; index to top of "map stack" at $616B for 0b10 handler 0x00AFCD|$02:$AFBD:60 RTS 0x00AFCE|$02:$AFBE:A5 0E LDA $0E ; map width 0x00AFD0|$02:$AFC0:18 CLC 0x00AFD1|$02:$AFC1:65 0C ADC $0C 0x00AFD3|$02:$AFC3:85 0C STA $0C 0x00AFD5|$02:$AFC5:90 02 BCC $AFC9 0x00AFD7|$02:$AFC7:E6 0D INC $0D ; control flow target (from $AFC5, $AFD1) 0x00AFD9|$02:$AFC9:60 RTS 0x00AFDA|$02:$AFCA:A5 0C LDA $0C 0x00AFDC|$02:$AFCC:38 SEC 0x00AFDD|$02:$AFCD:E5 0E SBC $0E ; map width 0x00AFDF|$02:$AFCF:85 0C STA $0C 0x00AFE1|$02:$AFD1:B0 F6 BCS $AFC9 0x00AFE3|$02:$AFD3:C6 0D DEC $0D 0x00AFE5|$02:$AFD5:60 RTS 0x00AFE6|$02:$AFD6:48 PHA 0x00AFE7|$02:$AFD7:20 E4 AF JSR $AFE4 0x00AFEA|$02:$AFDA:29 E0 AND #$E0 0x00AFEC|$02:$AFDC:91 6F STA ($6F),Y 0x00AFEE|$02:$AFDE:68 PLA 0x00AFEF|$02:$AFDF:11 6F ORA ($6F),Y 0x00AFF1|$02:$AFE1:91 6F STA ($6F),Y 0x00AFF3|$02:$AFE3:60 RTS ; control flow target (from $AFD7) 0x00AFF4|$02:$AFE4:8A TXA 0x00AFF5|$02:$AFE5:48 PHA 0x00AFF6|$02:$AFE6:A5 0E LDA $0E ; map width 0x00AFF8|$02:$AFE8:85 6F STA $6F 0x00AFFA|$02:$AFEA:A9 00 LDA #$00 0x00AFFC|$02:$AFEC:85 70 STA $70 0x00AFFE|$02:$AFEE:98 TYA 0x00AFFF|$02:$AFEF:A2 6F LDX #$6F 0x00B001|$02:$AFF1:20 15 B0 JSR $B015 ; given A and X, perform 16-bit multiplication: ($00,X-$01,X) = ($00,X-$01,X) * A; A unchanged 0x00B004|$02:$AFF4:A9 00 LDA #$00 0x00B006|$02:$AFF6:A0 78 LDY #$78 0x00B008|$02:$AFF8:A2 6F LDX #$6F 0x00B00A|$02:$AFFA:20 0A B0 JSR $B00A ; given A, X, and Y, ($00,X-$01,X) = ($00,X-$01,X) + (Y * $100 + A) 0x00B00D|$02:$AFFD:68 PLA 0x00B00E|$02:$AFFE:A0 00 LDY #$00 0x00B010|$02:$B000:A2 6F LDX #$6F 0x00B012|$02:$B002:20 0A B0 JSR $B00A ; given A, X, and Y, ($00,X-$01,X) = ($00,X-$01,X) + (Y * $100 + A) 0x00B015|$02:$B005:A0 00 LDY #$00 0x00B017|$02:$B007:B1 6F LDA ($6F),Y 0x00B019|$02:$B009:60 RTS ; given A, X, and Y, ($00,X-$01,X) = ($00,X-$01,X) + (Y * $100 + A) ; control flow target (from $ACB7, $AD70, $AFFA, $B002) 0x00B01A|$02:$B00A:18 CLC 0x00B01B|$02:$B00B:75 00 ADC $00,X 0x00B01D|$02:$B00D:95 00 STA $00,X 0x00B01F|$02:$B00F:98 TYA 0x00B020|$02:$B010:75 01 ADC $01,X 0x00B022|$02:$B012:95 01 STA $01,X 0x00B024|$02:$B014:60 RTS ; given A and X, perform 16-bit multiplication: ($00,X-$01,X) = ($00,X-$01,X) * A; A unchanged ; control flow target (from $AFF1, $B08A, $B0E7) 0x00B025|$02:$B015:38 SEC ; control flow target (from $B061) 0x00B026|$02:$B016:85 7A STA $7A ; remember original A for later 0x00B028|$02:$B018:A5 0C LDA $0C ; save $0C-$11 on the stack 0x00B02A|$02:$B01A:48 PHA 0x00B02B|$02:$B01B:A5 0D LDA $0D 0x00B02D|$02:$B01D:48 PHA 0x00B02E|$02:$B01E:A5 0E LDA $0E 0x00B030|$02:$B020:48 PHA 0x00B031|$02:$B021:A5 0F LDA $0F 0x00B033|$02:$B023:48 PHA 0x00B034|$02:$B024:A5 10 LDA $10 0x00B036|$02:$B026:48 PHA 0x00B037|$02:$B027:A5 11 LDA $11 0x00B039|$02:$B029:48 PHA 0x00B03A|$02:$B02A:8A TXA ; save X on the stack 0x00B03B|$02:$B02B:48 PHA 0x00B03C|$02:$B02C:B5 01 LDA $01,X 0x00B03E|$02:$B02E:85 0D STA $0D 0x00B040|$02:$B030:B5 00 LDA $00,X 0x00B042|$02:$B032:85 0C STA $0C 0x00B044|$02:$B034:A9 00 LDA #$00 0x00B046|$02:$B036:85 0F STA $0F 0x00B048|$02:$B038:A5 7A LDA $7A ; original value of A 0x00B04A|$02:$B03A:85 0E STA $0E 0x00B04C|$02:$B03C:90 25 BCC $B063 ; call to code in a different bank ($0F:$C339) 0x00B04E|$02:$B03E:20 39 C3 JSR $C339 ; 16-bit multiplication: ($10-$11) = ($0C-$0D) * ($0E-$0F); consumes $0C-$0F ; restore X from stack 0x00B051|$02:$B041:68 PLA 0x00B052|$02:$B042:AA TAX ; copy result to $00,X-$01,X 0x00B053|$02:$B043:A5 10 LDA $10 0x00B055|$02:$B045:95 00 STA $00,X 0x00B057|$02:$B047:A5 11 LDA $11 0x00B059|$02:$B049:95 01 STA $01,X ; control flow target (from $B074) 0x00B05B|$02:$B04B:68 PLA ; restore $0C-$11 from the stack 0x00B05C|$02:$B04C:85 11 STA $11 0x00B05E|$02:$B04E:68 PLA 0x00B05F|$02:$B04F:85 10 STA $10 0x00B061|$02:$B051:68 PLA 0x00B062|$02:$B052:85 0F STA $0F 0x00B064|$02:$B054:68 PLA 0x00B065|$02:$B055:85 0E STA $0E 0x00B067|$02:$B057:68 PLA 0x00B068|$02:$B058:85 0D STA $0D 0x00B06A|$02:$B05A:68 PLA 0x00B06B|$02:$B05B:85 0C STA $0C 0x00B06D|$02:$B05D:A5 7A LDA $7A 0x00B06F|$02:$B05F:60 RTS ; given A and X, perform 16-bit division: ($00,X-$01,X) / A = quotient in ($00,X-$01,X), remainder in A ; control flow target (from $AD51, $AD61) 0x00B070|$02:$B060:18 CLC 0x00B071|$02:$B061:90 B3 BCC $B016 ; control flow target (from $B03C) ; call to code in a different bank ($0F:$C360) 0x00B073|$02:$B063:20 60 C3 JSR $C360 ; 16-bit division: ($0C-$0D) / ($0E-$0F) = quotient in ($0C-$0D), remainder in ($10-$11) ; restore X from stack (from $B02A) 0x00B076|$02:$B066:68 PLA 0x00B077|$02:$B067:AA TAX 0x00B078|$02:$B068:A5 0C LDA $0C ; copy quotient to $00,X-$01,X 0x00B07A|$02:$B06A:95 00 STA $00,X 0x00B07C|$02:$B06C:A5 0D LDA $0D 0x00B07E|$02:$B06E:95 01 STA $01,X 0x00B080|$02:$B070:A5 10 LDA $10 0x00B082|$02:$B072:85 7A STA $7A 0x00B084|$02:$B074:4C 4B B0 JMP $B04B ; read the first 3 bytes of map data, initialize the map width, map height, map buffer index bit width, tile ID bit width and $6158 (unused?); leaves $0C-$0D pointing at map data byte 3 ; control flow target (from $ABA6) 0x00B087|$02:$B077:A0 00 LDY #$00 ; initialize map data read index 0x00B089|$02:$B079:84 6E STY $6E ; initialize high byte of multiplicand 0x00B08B|$02:$B07B:B1 0C LDA ($0C),Y ; map width 0x00B08D|$02:$B07D:85 0E STA $0E ; map width 0x00B08F|$02:$B07F:85 6D STA $6D ; low byte of multiplicand 0x00B091|$02:$B081:20 C4 B0 JSR $B0C4 ; INC 16-bit $0C-$0D 0x00B094|$02:$B084:B1 0C LDA ($0C),Y ; map height 0x00B096|$02:$B086:85 0F STA $0F ; map height 0x00B098|$02:$B088:A2 6D LDX #$6D 0x00B09A|$02:$B08A:20 15 B0 JSR $B015 ; given A and X, perform 16-bit multiplication: ($00,X-$01,X) = ($00,X-$01,X) * A; A unchanged 0x00B09D|$02:$B08D:A5 6D LDA $6D ; low byte of map size 0x00B09F|$02:$B08F:38 SEC 0x00B0A0|$02:$B090:E9 01 SBC #$01 0x00B0A2|$02:$B092:85 6D STA $6D 0x00B0A4|$02:$B094:A5 6E LDA $6E ; high byte of map size 0x00B0A6|$02:$B096:E9 00 SBC #$00 ; carry from low byte subtraction 0x00B0A8|$02:$B098:85 6E STA $6E ; $6D-$6E = map size - 1 0x00B0AA|$02:$B09A:A2 10 LDX #$10 ; $6D-$6E is 16 bits ; control flow target (from $B0A3) 0x00B0AC|$02:$B09C:06 6D ASL $6D ; ASL 16-bit $6D-$6E 0x00B0AE|$02:$B09E:26 6E ROL $6E 0x00B0B0|$02:$B0A0:B0 04 BCS $B0A6 0x00B0B2|$02:$B0A2:CA DEX 0x00B0B3|$02:$B0A3:4C 9C B0 JMP $B09C ; loop until we reach a bit that's set ; control flow target (from $B0A0) 0x00B0B6|$02:$B0A6:8E 50 61 STX $6150 ; map buffer index bit size 0x00B0B9|$02:$B0A9:20 C4 B0 JSR $B0C4 ; INC 16-bit $0C-$0D 0x00B0BC|$02:$B0AC:B1 0C LDA ($0C),Y ; map data byte 2 0x00B0BE|$02:$B0AE:AA TAX 0x00B0BF|$02:$B0AF:29 C0 AND #$C0 0x00B0C1|$02:$B0B1:18 CLC 0x00B0C2|$02:$B0B2:2A ROL 0x00B0C3|$02:$B0B3:2A ROL 0x00B0C4|$02:$B0B4:2A ROL 0x00B0C5|$02:$B0B5:69 02 ADC #$02 0x00B0C7|$02:$B0B7:8D 57 61 STA $6157 ; map tile ID bit size 0x00B0CA|$02:$B0BA:8A TXA 0x00B0CB|$02:$B0BB:29 1F AND #$1F 0x00B0CD|$02:$B0BD:8D 58 61 STA $6158 ; low 5 bits of map data byte 2 (unused?) 0x00B0D0|$02:$B0C0:20 C4 B0 JSR $B0C4 ; INC 16-bit $0C-$0D 0x00B0D3|$02:$B0C3:60 RTS ; INC 16-bit $0C-$0D ; control flow target (from $B081, $B0A9, $B0C0) 0x00B0D4|$02:$B0C4:E6 0C INC $0C 0x00B0D6|$02:$B0C6:D0 02 BNE $B0CA 0x00B0D8|$02:$B0C8:E6 0D INC $0D ; control flow target (from $B0C6) 0x00B0DA|$02:$B0CA:60 RTS 0x00B0DB|$02:$B0CB:A0 00 LDY #$00 ; control flow target (from $B10B) 0x00B0DD|$02:$B0CD:84 6F STY $6F 0x00B0DF|$02:$B0CF:B9 1A 05 LDA $051A,Y ; something to do with whether you've opened the chest containing the Shield of Erdrick 0x00B0E2|$02:$B0D2:19 1B 05 ORA $051B,Y 0x00B0E5|$02:$B0D5:F0 2E BEQ $B105 0x00B0E7|$02:$B0D7:B9 1B 05 LDA $051B,Y 0x00B0EA|$02:$B0DA:85 6D STA $6D 0x00B0EC|$02:$B0DC:A9 00 LDA #$00 0x00B0EE|$02:$B0DE:85 6E STA $6E 0x00B0F0|$02:$B0E0:A2 6D LDX #$6D 0x00B0F2|$02:$B0E2:A5 21 LDA $21 ; map width 0x00B0F4|$02:$B0E4:18 CLC 0x00B0F5|$02:$B0E5:69 01 ADC #$01 0x00B0F7|$02:$B0E7:20 15 B0 JSR $B015 ; given A and X, perform 16-bit multiplication: ($00,X-$01,X) = ($00,X-$01,X) * A; A unchanged 0x00B0FA|$02:$B0EA:A5 6E LDA $6E 0x00B0FC|$02:$B0EC:18 CLC 0x00B0FD|$02:$B0ED:69 78 ADC #$78 0x00B0FF|$02:$B0EF:85 6E STA $6E 0x00B101|$02:$B0F1:A4 6F LDY $6F 0x00B103|$02:$B0F3:B9 1A 05 LDA $051A,Y ; something to do with whether you've opened the chest containing the Shield of Erdrick 0x00B106|$02:$B0F6:A8 TAY 0x00B107|$02:$B0F7:B1 6D LDA ($6D),Y 0x00B109|$02:$B0F9:29 1F AND #$1F 0x00B10B|$02:$B0FB:C9 14 CMP #$14 0x00B10D|$02:$B0FD:D0 06 BNE $B105 0x00B10F|$02:$B0FF:B1 6D LDA ($6D),Y 0x00B111|$02:$B101:29 E0 AND #$E0 0x00B113|$02:$B103:91 6D STA ($6D),Y ; control flow target (from $B0D5, $B0FD) 0x00B115|$02:$B105:A4 6F LDY $6F 0x00B117|$02:$B107:C8 INY 0x00B118|$02:$B108:C8 INY 0x00B119|$02:$B109:C0 10 CPY #$10 0x00B11B|$02:$B10B:D0 C0 BNE $B0CD 0x00B11D|$02:$B10D:60 RTS ; indirect control flow target (via $8008) 0x00B11E|$02:$B10E:A9 F2 LDA #$F2 0x00B120|$02:$B110:85 19 STA $19 0x00B122|$02:$B112:A9 F0 LDA #$F0 0x00B124|$02:$B114:85 18 STA $18 ; call to code in a different bank ($0F:$DF62) 0x00B126|$02:$B116:20 62 DF JSR $DF62 ; call to code in a different bank ($0F:$DE00) 0x00B129|$02:$B119:20 00 DE JSR $DE00 0x00B12C|$02:$B11C:A5 07 LDA $07 0x00B12E|$02:$B11E:85 74 STA $74 0x00B130|$02:$B120:48 PHA 0x00B131|$02:$B121:29 1F AND #$1F 0x00B133|$02:$B123:85 73 STA $73 0x00B135|$02:$B125:68 PLA 0x00B136|$02:$B126:29 E0 AND #$E0 0x00B138|$02:$B128:85 72 STA $72 0x00B13A|$02:$B12A:A5 08 LDA $08 0x00B13C|$02:$B12C:48 PHA 0x00B13D|$02:$B12D:29 FC AND #$FC 0x00B13F|$02:$B12F:85 75 STA $75 0x00B141|$02:$B131:68 PLA 0x00B142|$02:$B132:29 03 AND #$03 0x00B144|$02:$B134:4A LSR 0x00B145|$02:$B135:66 72 ROR $72 0x00B147|$02:$B137:4A LSR 0x00B148|$02:$B138:66 72 ROR $72 0x00B14A|$02:$B13A:66 72 ROR $72 0x00B14C|$02:$B13C:46 72 LSR $72 0x00B14E|$02:$B13E:46 72 LSR $72 0x00B150|$02:$B140:60 RTS ; indirect control flow target (via $8002) 0x00B151|$02:$B141:48 PHA ; party leader's direction 0x00B152|$02:$B142:A9 00 LDA #$00 0x00B154|$02:$B144:8D F2 05 STA $05F2 ; probably whether door between you and NPC is open 0x00B157|$02:$B147:8D F3 05 STA $05F3 ; target NPC sprite ID 0x00B15A|$02:$B14A:A5 16 LDA $16 ; current map X-pos (1) 0x00B15C|$02:$B14C:85 0C STA $0C ; target NPC's X-pos 0x00B15E|$02:$B14E:A5 17 LDA $17 ; current map Y-pos (1) 0x00B160|$02:$B150:85 0E STA $0E ; target NPC's Y-pos 0x00B162|$02:$B152:68 PLA ; party leader's direction 0x00B163|$02:$B153:D0 0C BNE $B161 ; branch if not facing up 0x00B165|$02:$B155:C6 0E DEC $0E ; target NPC is (0, -1) relative to party leader's position 0x00B167|$02:$B157:A9 02 LDA #$02 ; make NPC face down 0x00B169|$02:$B159:20 0C B2 JSR $B20C 0x00B16C|$02:$B15C:C6 13 DEC $13 0x00B16E|$02:$B15E:4C 8A B1 JMP $B18A ; control flow target (from $B153) 0x00B171|$02:$B161:C9 01 CMP #$01 0x00B173|$02:$B163:D0 0C BNE $B171 ; branch if not facing right 0x00B175|$02:$B165:E6 0C INC $0C ; target NPC is (+1, 0) relative to party leader's position 0x00B177|$02:$B167:A9 03 LDA #$03 ; make NPC face left 0x00B179|$02:$B169:20 0C B2 JSR $B20C 0x00B17C|$02:$B16C:E6 12 INC $12 0x00B17E|$02:$B16E:4C 8A B1 JMP $B18A ; control flow target (from $B163) 0x00B181|$02:$B171:C9 02 CMP #$02 0x00B183|$02:$B173:D0 0C BNE $B181 ; branch if not facing down 0x00B185|$02:$B175:E6 0E INC $0E ; target NPC is (0, +1) relative to party leader's position 0x00B187|$02:$B177:A9 00 LDA #$00 ; make NPC face up 0x00B189|$02:$B179:20 0C B2 JSR $B20C 0x00B18C|$02:$B17C:E6 13 INC $13 0x00B18E|$02:$B17E:4C 8A B1 JMP $B18A ; control flow target (from $B173) 0x00B191|$02:$B181:C6 0C DEC $0C ; party leader is facing left; target NPC is (-1, 0) relative to party leader's position 0x00B193|$02:$B183:A9 01 LDA #$01 ; make NPC face right 0x00B195|$02:$B185:20 0C B2 JSR $B20C 0x00B198|$02:$B188:C6 12 DEC $12 ; control flow target (from $B15E, $B16E, $B17E, $B287) 0x00B19A|$02:$B18A:A0 00 LDY #$00 ; control flow target (from $B1A8) 0x00B19C|$02:$B18C:B9 54 05 LDA $0554,Y ; NPC #$03 X-pos 0x00B19F|$02:$B18F:C5 12 CMP $12 0x00B1A1|$02:$B191:D0 0E BNE $B1A1 0x00B1A3|$02:$B193:B9 55 05 LDA $0555,Y ; NPC #$03 Y-pos 0x00B1A6|$02:$B196:C5 13 CMP $13 0x00B1A8|$02:$B198:D0 07 BNE $B1A1 0x00B1AA|$02:$B19A:B9 59 05 LDA $0559,Y ; NPC #$03 sprite ID 0x00B1AD|$02:$B19D:C9 FF CMP #$FF 0x00B1AF|$02:$B19F:D0 0B BNE $B1AC ; control flow target (from $B191, $B198) 0x00B1B1|$02:$B1A1:98 TYA 0x00B1B2|$02:$B1A2:18 CLC 0x00B1B3|$02:$B1A3:69 08 ADC #$08 0x00B1B5|$02:$B1A5:A8 TAY 0x00B1B6|$02:$B1A6:C9 A0 CMP #$A0 0x00B1B8|$02:$B1A8:D0 E2 BNE $B18C 0x00B1BA|$02:$B1AA:F0 5C BEQ $B208 ; control flow target (from $B19F) 0x00B1BC|$02:$B1AC:B9 58 05 LDA $0558,Y ; NPC #$03 motion nybble + direction nybble 0x00B1BF|$02:$B1AF:29 F8 AND #$F8 0x00B1C1|$02:$B1B1:05 09 ORA $09 0x00B1C3|$02:$B1B3:99 58 05 STA $0558,Y ; NPC #$03 motion nybble + direction nybble 0x00B1C6|$02:$B1B6:A5 D0 LDA $D0 ; Malroth status flag (#$FF = defeated, #$00 = alive, others = countdown to battle) 0x00B1C8|$02:$B1B8:10 15 BPL $B1CF 0x00B1CA|$02:$B1BA:A5 31 LDA $31 ; current map ID 0x00B1CC|$02:$B1BC:C9 03 CMP #$03 ; Map ID #$03: Midenhall 1F 0x00B1CE|$02:$B1BE:D0 0F BNE $B1CF ; call to code in a different bank ($0F:$FEDA) 0x00B1D0|$02:$B1C0:20 DA FE JSR $FEDA ; parse byte following JSR for bank and pointer index, set $D6-$D7 to $8000,X-$8001,X in selected bank ; code -> data ; indirect data load target 0x00B1D3|$02:$B1C3:49 ; $02:$8012; -> $02:$B351: looks like more NPC data? ; data -> code 0x00B1D4|$02:$B1C4:A5 D6 LDA $D6 0x00B1D6|$02:$B1C6:85 0C STA $0C 0x00B1D8|$02:$B1C8:A5 D7 LDA $D7 0x00B1DA|$02:$B1CA:85 0D STA $0D 0x00B1DC|$02:$B1CC:4C E4 B1 JMP $B1E4 ; control flow target (from $B1B8, $B1BE) 0x00B1DF|$02:$B1CF:A5 31 LDA $31 ; current map ID 0x00B1E1|$02:$B1D1:0A ASL 0x00B1E2|$02:$B1D2:AA TAX 0x00B1E3|$02:$B1D3:AD 50 00 LDA $0050 ; um, okay? 0x00B1E6|$02:$B1D6:BD 39 A5 LDA $A539,X ; pointers to per-map NPC setup (X-pos, Y-pos, ???, sprite ID, dialogue [not string] ID) 0x00B1E9|$02:$B1D9:85 0C STA $0C 0x00B1EB|$02:$B1DB:BD 3A A5 LDA $A53A,X 0x00B1EE|$02:$B1DE:85 0D STA $0D 0x00B1F0|$02:$B1E0:05 0C ORA $0C 0x00B1F2|$02:$B1E2:F0 24 BEQ $B208 ; control flow target (from $B1CC) 0x00B1F4|$02:$B1E4:98 TYA ; set Y = 5 * Y / 8 + 3 0x00B1F5|$02:$B1E5:4A LSR 0x00B1F6|$02:$B1E6:85 0E STA $0E ; Y / 2 0x00B1F8|$02:$B1E8:4A LSR 0x00B1F9|$02:$B1E9:4A LSR ; Y / 8 0x00B1FA|$02:$B1EA:18 CLC 0x00B1FB|$02:$B1EB:65 0E ADC $0E ; Y / 2 + Y / 8 0x00B1FD|$02:$B1ED:18 CLC ; pointless since Y >> 1 + Y >> 3 can't make a carry 0x00B1FE|$02:$B1EE:69 03 ADC #$03 0x00B200|$02:$B1F0:A8 TAY 0x00B201|$02:$B1F1:B1 0C LDA ($0C),Y 0x00B203|$02:$B1F3:8D F3 05 STA $05F3 ; target NPC sprite ID 0x00B206|$02:$B1F6:C8 INY 0x00B207|$02:$B1F7:B1 0C LDA ($0C),Y ; control flow target (from $B20A, $B22E) 0x00B209|$02:$B1F9:48 PHA ; dialogue ID ; call to code in a different bank ($0F:$C1DC) 0x00B20A|$02:$B1FA:20 DC C1 JSR $C1DC ; set $6007 = #$00, set $00 = #$01, wait for interrupt, set $00 = #$FF ; call to code in a different bank ($0F:$CF5E) 0x00B20D|$02:$B1FD:20 5E CF JSR $CF5E 0x00B210|$02:$B200:68 PLA ; dialogue ID 0x00B211|$02:$B201:85 0C STA $0C 0x00B213|$02:$B203:A5 94 LDA $94 ; return bank for various function calls, doubles as index of selected option for multiple-choice menus ; call to code in a different bank ($0F:$C3D5) 0x00B215|$02:$B205:4C D5 C3 JMP $C3D5 ; save A to $05F6, X to $43, and load bank specified by A ; control flow target (from $B1AA, $B1E2) 0x00B218|$02:$B208:A9 00 LDA #$00 0x00B21A|$02:$B20A:F0 ED BEQ $B1F9 ; control flow target (from $B159, $B169, $B179, $B185) 0x00B21C|$02:$B20C:85 09 STA $09 0x00B21E|$02:$B20E:CD 48 05 CMP $0548 ; NPC #$01 ? + direction nybble 0x00B221|$02:$B211:D0 1E BNE $B231 0x00B223|$02:$B213:AD 3A 05 LDA $053A 0x00B226|$02:$B216:CD 42 05 CMP $0542 ; NPC #$00 ? 0x00B229|$02:$B219:D0 08 BNE $B223 0x00B22B|$02:$B21B:AD 3B 05 LDA $053B 0x00B22E|$02:$B21E:CD 43 05 CMP $0543 ; NPC #$00 ? 0x00B231|$02:$B221:F0 0E BEQ $B231 ; control flow target (from $B219) 0x00B233|$02:$B223:AD 49 05 LDA $0549 ; NPC #$01 sprite ID 0x00B236|$02:$B226:C9 01 CMP #$01 0x00B238|$02:$B228:D0 07 BNE $B231 0x00B23A|$02:$B22A:68 PLA 0x00B23B|$02:$B22B:68 PLA 0x00B23C|$02:$B22C:A9 01 LDA #$01 ; control flow target (from $B258, $B25E) 0x00B23E|$02:$B22E:4C F9 B1 JMP $B1F9 ; control flow target (from $B211, $B221, $B228) 0x00B241|$02:$B231:A5 09 LDA $09 0x00B243|$02:$B233:CD 50 05 CMP $0550 ; NPC #$02 ? + direction nybble 0x00B246|$02:$B236:D0 28 BNE $B260 0x00B248|$02:$B238:A8 TAY 0x00B249|$02:$B239:AD 4A 05 LDA $054A ; NPC #$01 scripted motion low byte 0x00B24C|$02:$B23C:D9 8A B2 CMP $B28A,Y 0x00B24F|$02:$B23F:D0 1F BNE $B260 0x00B251|$02:$B241:AD 4B 05 LDA $054B ; NPC #$01 scripted motion high byte 0x00B254|$02:$B244:D9 8E B2 CMP $B28E,Y 0x00B257|$02:$B247:D0 17 BNE $B260 0x00B259|$02:$B249:AD 51 05 LDA $0551 ; NPC #$02 sprite ID 0x00B25C|$02:$B24C:C9 09 CMP #$09 0x00B25E|$02:$B24E:F0 0A BEQ $B25A 0x00B260|$02:$B250:C9 02 CMP #$02 0x00B262|$02:$B252:D0 0C BNE $B260 0x00B264|$02:$B254:68 PLA 0x00B265|$02:$B255:68 PLA 0x00B266|$02:$B256:A9 04 LDA #$04 0x00B268|$02:$B258:D0 D4 BNE $B22E ; control flow target (from $B24E) 0x00B26A|$02:$B25A:68 PLA 0x00B26B|$02:$B25B:68 PLA 0x00B26C|$02:$B25C:A9 02 LDA #$02 0x00B26E|$02:$B25E:D0 CE BNE $B22E ; control flow target (from $B236, $B23F, $B247, $B252) 0x00B270|$02:$B260:A5 0C LDA $0C 0x00B272|$02:$B262:48 PHA 0x00B273|$02:$B263:A5 0E LDA $0E 0x00B275|$02:$B265:48 PHA ; call to code in a different bank ($0F:$DF83) 0x00B276|$02:$B266:20 83 DF JSR $DF83 0x00B279|$02:$B269:68 PLA 0x00B27A|$02:$B26A:85 13 STA $13 0x00B27C|$02:$B26C:68 PLA 0x00B27D|$02:$B26D:85 12 STA $12 0x00B27F|$02:$B26F:A5 1F LDA $1F ; some kind of map type (#$00: World Map, #$01: other non-dungeon maps, #$02: maps #$2B - #$43 inclusive, #$03: maps >= #$44, #$FF => game menu) 0x00B281|$02:$B271:C9 01 CMP #$01 0x00B283|$02:$B273:D0 10 BNE $B285 0x00B285|$02:$B275:A5 0C LDA $0C 0x00B287|$02:$B277:C9 0D CMP #$0D 0x00B289|$02:$B279:F0 04 BEQ $B27F 0x00B28B|$02:$B27B:C9 1A CMP #$1A 0x00B28D|$02:$B27D:D0 06 BNE $B285 ; control flow target (from $B279) 0x00B28F|$02:$B27F:A9 FF LDA #$FF 0x00B291|$02:$B281:8D F2 05 STA $05F2 ; probably whether door between you and NPC is open 0x00B294|$02:$B284:60 RTS ; control flow target (from $B273, $B27D) 0x00B295|$02:$B285:68 PLA 0x00B296|$02:$B286:68 PLA 0x00B297|$02:$B287:4C 8A B1 JMP $B18A ; code -> data ; indexed data load target (from $B23C) 0x00B29A|$02:$B28A:80 0x00B29B|$02:$B28B:70 0x00B29C|$02:$B28C:80 0x00B29D|$02:$B28D:90 ; indexed data load target (from $B244) 0x00B29E|$02:$B28E:7F 0x00B29F|$02:$B28F:6F 0x00B2A0|$02:$B290:5F 0x00B2A1|$02:$B291:6F ; data -> code ; looks like this determines NPC's post-Malroth text ; indirect control flow target (via $8006) 0x00B2A2|$02:$B292:A9 02 LDA #$02 0x00B2A4|$02:$B294:8D 94 00 STA $0094 ; return bank for various function calls, doubles as index of selected option for multiple-choice menus 0x00B2A7|$02:$B297:A5 0C LDA $0C ; save $0C-$0D on the stack 0x00B2A9|$02:$B299:48 PHA 0x00B2AA|$02:$B29A:A5 0D LDA $0D 0x00B2AC|$02:$B29C:48 PHA ; call to code in a different bank ($0F:$EB76) 0x00B2AD|$02:$B29D:20 76 EB JSR $EB76 ; open menu specified by next byte ; code -> data ; indirect data load target 0x00B2B0|$02:$B2A0:04 ; Menu ID #$04: Dialogue window ; data -> code 0x00B2B1|$02:$B2A1:68 PLA ; restore $0C-$0D from the stack 0x00B2B2|$02:$B2A2:85 0D STA $0D 0x00B2B4|$02:$B2A4:68 PLA 0x00B2B5|$02:$B2A5:85 0C STA $0C 0x00B2B7|$02:$B2A7:A5 0C LDA $0C ; dialogue ID; just in case it wasn't already in A, clearly :p 0x00B2B9|$02:$B2A9:C9 45 CMP #$45 0x00B2BB|$02:$B2AB:F0 08 BEQ $B2B5 ; #$45, #$46, and #$A6 (Moonbrooke ghosts) all use the same string 0x00B2BD|$02:$B2AD:C9 46 CMP #$46 0x00B2BF|$02:$B2AF:F0 04 BEQ $B2B5 0x00B2C1|$02:$B2B1:C9 A6 CMP #$A6 0x00B2C3|$02:$B2B3:D0 04 BNE $B2B9 ; control flow target (from $B2AB, $B2AF) 0x00B2C5|$02:$B2B5:A9 AC LDA #$AC ; String ID #$01AC: ‘See a light--that is the pure light of Rubiss rising from the sea[.’][wait][line]‘We thank thee for all that thou hast done[.’][end-FC] 0x00B2C7|$02:$B2B7:D0 74 BNE $B32D ; control flow target (from $B2B3) 0x00B2C9|$02:$B2B9:C9 52 CMP #$52 0x00B2CB|$02:$B2BB:D0 04 BNE $B2C1 0x00B2CD|$02:$B2BD:A9 AE LDA #$AE ; String ID #$01AE: ‘I apologize for deceiving thee. I am the King of this castle. Ha! Ha!’[end-FC] 0x00B2CF|$02:$B2BF:D0 6C BNE $B32D ; control flow target (from $B2BB) 0x00B2D1|$02:$B2C1:C9 B0 CMP #$B0 0x00B2D3|$02:$B2C3:D0 04 BNE $B2C9 0x00B2D5|$02:$B2C5:A9 AF LDA #$AF ; String ID #$01AF: ‘Thou art strong and noble, [name]. Well done[.’][end-FC] 0x00B2D7|$02:$B2C7:D0 64 BNE $B32D ; control flow target (from $B2C3) 0x00B2D9|$02:$B2C9:C9 A1 CMP #$A1 0x00B2DB|$02:$B2CB:D0 0D BNE $B2DA 0x00B2DD|$02:$B2CD:A9 01 LDA #$01 ; Cannock ; call to code in a different bank ($0F:$FC50) 0x00B2DF|$02:$B2CF:20 50 FC JSR $FC50 ; print name of hero given by low 2 bits of A to $6119, terminated by #$FA ; call to code in a different bank ($0F:$FA2E) 0x00B2E2|$02:$B2D2:20 2E FA JSR $FA2E ; display string ID specified by next byte + #$0100 ; code -> data ; indirect data load target 0x00B2E5|$02:$B2D5:B0 ; String ID #$01B0: ‘Once again the line of Erdrick has proven true[.’][wait][line]‘[name], my heir, thou hast gained a great victory, and I am proud of thee[.’][end-FC] ; data -> code 0x00B2E6|$02:$B2D6:A9 BB LDA #$BB ; String ID #$01BB: ‘To thy new duties must thou go now, [name][.’][end-FC] 0x00B2E8|$02:$B2D8:D0 53 BNE $B32D ; control flow target (from $B2CB) 0x00B2EA|$02:$B2DA:C9 A2 CMP #$A2 0x00B2EC|$02:$B2DC:D0 04 BNE $B2E2 0x00B2EE|$02:$B2DE:A9 B1 LDA #$B1 ; String ID #$01B1: ‘Brother, thou hast done well. I shall never doubt thee again[.’][end-FC] 0x00B2F0|$02:$B2E0:D0 4B BNE $B32D ; control flow target (from $B2DC) 0x00B2F2|$02:$B2E2:C9 BC CMP #$BC 0x00B2F4|$02:$B2E4:D0 0A BNE $B2F0 0x00B2F6|$02:$B2E6:A9 00 LDA #$00 ; call to code in a different bank ($0F:$FC50) 0x00B2F8|$02:$B2E8:20 50 FC JSR $FC50 ; print name of hero given by low 2 bits of A to $6119, terminated by #$FA ; call to code in a different bank ($0F:$FA32) 0x00B2FB|$02:$B2EB:20 32 FA JSR $FA32 ; display string ID specified by next byte + #$0200 ; code -> data ; indirect data load target 0x00B2FE|$02:$B2EE:F2 ; String ID #$02F2: ‘Thou hast done well, [name][.’][wait][line]‘Let bygones be bygones and we shall be friends[.’][end-FC] ; data -> code 0x00B2FF|$02:$B2EF:60 RTS ; control flow target (from $B2E4) 0x00B300|$02:$B2F0:C9 01 CMP #$01 0x00B302|$02:$B2F2:D0 07 BNE $B2FB 0x00B304|$02:$B2F4:A9 B3 LDA #$B3 ; String ID #$01B3: [no voice][name] : [line]‘Thou shalt go[.’][end-FC] 0x00B306|$02:$B2F6:48 PHA 0x00B307|$02:$B2F7:A9 01 LDA #$01 ; Cannock 0x00B309|$02:$B2F9:D0 35 BNE $B330 ; control flow target (from $B2F2) 0x00B30B|$02:$B2FB:C9 02 CMP #$02 0x00B30D|$02:$B2FD:D0 07 BNE $B306 0x00B30F|$02:$B2FF:A9 B4 LDA #$B4 ; String ID #$01B4: [no voice][name] : [line]‘What? I seek not the crown[.’][end-FC] 0x00B311|$02:$B301:48 PHA 0x00B312|$02:$B302:A9 02 LDA #$02 ; Moonbrooke 0x00B314|$02:$B304:D0 2A BNE $B330 ; control flow target (from $B2FD) 0x00B316|$02:$B306:AC F3 05 LDY $05F3 ; target NPC sprite ID 0x00B319|$02:$B309:B9 37 B3 LDA $B337,Y 0x00B31C|$02:$B30C:C9 AA CMP #$AA 0x00B31E|$02:$B30E:D0 0A BNE $B31A 0x00B320|$02:$B310:A6 31 LDX $31 ; current map ID 0x00B322|$02:$B312:E0 03 CPX #$03 ; Map ID #$03: Midenhall 1F 0x00B324|$02:$B314:D0 17 BNE $B32D ; everybody in Midenhall says the same thing (except for the hidden person blocking your path to the basement) 0x00B326|$02:$B316:A9 B2 LDA #$B2 ; String ID #$01B2: ‘Now thou art King of Midenhall and must take thy throne!’[end-FC] 0x00B328|$02:$B318:D0 13 BNE $B32D ; control flow target (from $B30E) 0x00B32A|$02:$B31A:C9 FF CMP #$FF 0x00B32C|$02:$B31C:D0 0F BNE $B32D 0x00B32E|$02:$B31E:A5 0D LDA $0D 0x00B330|$02:$B320:A0 05 LDY #$05 ; control flow target (from $B328) 0x00B332|$02:$B322:D9 45 B3 CMP $B345,Y 0x00B335|$02:$B325:F0 03 BEQ $B32A 0x00B337|$02:$B327:88 DEY 0x00B338|$02:$B328:10 F8 BPL $B322 ; control flow target (from $B325) 0x00B33A|$02:$B32A:B9 4B B3 LDA $B34B,Y ; control flow target (from $B2B7, $B2BF, $B2C7, $B2D8, $B2E0, $B314, $B318, $B31C) 0x00B33D|$02:$B32D:48 PHA 0x00B33E|$02:$B32E:A9 00 LDA #$00 ; control flow target (from $B2F9, $B304) ; call to code in a different bank ($0F:$FC50) 0x00B340|$02:$B330:20 50 FC JSR $FC50 ; print name of hero given by low 2 bits of A to $6119, terminated by #$FA 0x00B343|$02:$B333:68 PLA ; call to code in a different bank ($0F:$FA4E) 0x00B344|$02:$B334:4C 4E FA JMP $FA4E ; display string ID specified by A + #$0100 ; code -> data ; indexed data load target (from $B309) 0x00B347|$02:$B337:00 ; Sprite ID $#00: Midenhall; (probably impossible) 0x00B348|$02:$B338:B3 ; Sprite ID $#01: Cannock; String ID #$01B3: [no voice][name] : [line]‘Thou shalt go[.’][end-FC] 0x00B349|$02:$B339:B4 ; Sprite ID $#02: Moonbrooke; String ID #$01B4: [no voice][name] : [line]‘What? I seek not the crown[.’][end-FC] 0x00B34A|$02:$B33A:49 ; Sprite ID $#03: King; String ID #$0149: [end-FC] 0x00B34B|$02:$B33B:00 ; Sprite ID $#04: Flame; (probably impossible) 0x00B34C|$02:$B33C:FF ; Sprite ID $#05: Priest; String ID #$01FF: [end-FC] 0x00B34D|$02:$B33D:A4 ; Sprite ID $#06: Shopkeeper; String ID #$01A4: ‘Thanks to thee, peace has returned[.’][end-FC] 0x00B34E|$02:$B33E:A7 ; Sprite ID $#07: Woman; String ID #$01A7: ‘Oh, it is like a dream--to think that someone had the power to destroy Hargon[.’][end-FC] 0x00B34F|$02:$B33F:A6 ; Sprite ID $#08: Brute; String ID #$01A6: ‘Thou hast done exceedingly well[.’][end-FC] 0x00B350|$02:$B340:AB ; Sprite ID $#09: Dog; String ID #$01AB: ‘Bow-wow-wow[.’][end-FC] 0x00B351|$02:$B341:AA ; Sprite ID $#0A: Guard; String ID #$01AA: ‘Thou art Great Warriors!’[end-FC] 0x00B352|$02:$B342:A4 ; Sprite ID $#0B: Wizard; String ID #$01A4: ‘Thanks to thee, peace has returned[.’][end-FC] 0x00B353|$02:$B343:A5 ; Sprite ID $#0C: Young Man; String ID #$01A5: ‘Hargon doesn't exist anymore, does he?’[end-FC] 0x00B354|$02:$B344:00 ; Sprite ID $#0D: Ship; (probably impossible) ; indexed data load target (from $B322) 0x00B355|$02:$B345:03 0x00B356|$02:$B346:07 0x00B357|$02:$B347:0B 0x00B358|$02:$B348:0F 0x00B359|$02:$B349:13 0x00B35A|$02:$B34A:2B ; indexed data load target (from $B32A) 0x00B35B|$02:$B34B:00 ; (probably impossible) 0x00B35C|$02:$B34C:00 ; (probably impossible) 0x00B35D|$02:$B34D:AD ; String ID #$01AD: ‘Rrrrrr..[.’][end-FC] 0x00B35E|$02:$B34E:A9 ; String ID #$01A9: ‘Hurrah! Hurrah!’[end-FC] 0x00B35F|$02:$B34F:A8 ; String ID #$01A8: ‘The people will be free again, for the evil magic has dissipated like smoke in the wind[.’][end-FC] 0x00B360|$02:$B350:00 ; (probably impossible) ; looks like more NPC data? ; from $02:$B1C3, $0F:$E4EF, $0F:$E4FB via $8012 ; indirect data load target (via $8012) 0x00B361|$02:$B351:0F 02 02 03 00 0x00B366|$02:$B356:0F 06 03 FF 01 0x00B36B|$02:$B35B:0F 06 01 FF 02 0x00B370|$02:$B360:0F 02 02 FF 00 0x00B375|$02:$B365:0E 03 02 0A 03 0x00B37A|$02:$B36A:10 03 02 0A 03 0x00B37F|$02:$B36F:0D 04 01 0A 03 0x00B384|$02:$B374:11 04 03 0A 03 0x00B389|$02:$B379:0D 06 01 0A 03 0x00B38E|$02:$B37E:0D 08 01 0A 03 0x00B393|$02:$B383:11 06 03 0A 03 0x00B398|$02:$B388:11 08 03 0A 03 0x00B39D|$02:$B38D:15 05 00 03 00 ; indirect data load target 0x00B3A2|$02:$B392:FF ; data -> code ; read the next string byte; preserves X and Y ; from $BE03 via $8004 ; indirect control flow target (via $8004) 0x00B3A3|$02:$B393:8A TXA 0x00B3A4|$02:$B394:48 PHA 0x00B3A5|$02:$B395:98 TYA 0x00B3A6|$02:$B396:48 PHA 0x00B3A7|$02:$B397:20 A1 B3 JSR $B3A1 ; read the next string byte 0x00B3AA|$02:$B39A:68 PLA 0x00B3AB|$02:$B39B:A8 TAY 0x00B3AC|$02:$B39C:68 PLA 0x00B3AD|$02:$B39D:AA TAX 0x00B3AE|$02:$B39E:A5 6D LDA $6D 0x00B3B0|$02:$B3A0:60 RTS ; read the next string byte ; control flow target (from $B397) 0x00B3B1|$02:$B3A1:AD D2 60 LDA $60D2 ; read index within current dictionary entry 0x00B3B4|$02:$B3A4:D0 05 BNE $B3AB ; if we're starting to read a new dictionary entry, reset the secondary text table offset 0x00B3B6|$02:$B3A6:A9 00 LDA #$00 0x00B3B8|$02:$B3A8:8D D3 60 STA $60D3 ; secondary text table offset for C0 - C3 tables ; control flow target (from $B3A4, $B3C9, $B3E6) ; call to code in a different bank ($0F:$FE34) 0x00B3BB|$02:$B3AB:20 34 FE JSR $FE34 ; swap in the right text bank, set A to the current dictionary index, swap in bank #$02 0x00B3BE|$02:$B3AE:20 F6 B3 JSR $B3F6 ; given a dictionary index in A, set $6F-$70 to the address of the corresponding dictionary entry 0x00B3C1|$02:$B3B1:AD 8B 60 LDA $608B ; text engine: $608B = dictionary index 0x00B3C4|$02:$B3B4:20 2D B4 JSR $B42D ; given dictionary index in A, set A to length of that dictionary entry 0x00B3C7|$02:$B3B7:CD D2 60 CMP $60D2 ; read index within current dictionary entry 0x00B3CA|$02:$B3BA:F0 02 BEQ $B3BE ; if read index == dictionary entry length, we finished with this entry last time, so reset temp vars, update read vars, and start reading the next entry 0x00B3CC|$02:$B3BC:B0 0E BCS $B3CC ; if read index < dictionary entry length, process current dictionary byte ; control flow target (from $B3BA) 0x00B3CE|$02:$B3BE:A9 00 LDA #$00 0x00B3D0|$02:$B3C0:8D D2 60 STA $60D2 ; read index within current dictionary entry 0x00B3D3|$02:$B3C3:8D D3 60 STA $60D3 ; secondary text table offset for C0 - C3 tables ; call to code in a different bank ($0F:$FDF7) 0x00B3D6|$02:$B3C6:20 F7 FD JSR $FDF7 ; after reading a text token, update the read address in $55-$56 and bit index in $60D6 0x00B3D9|$02:$B3C9:4C AB B3 JMP $B3AB ; loop to read the next byte of dictionary entry ; process current dictionary byte (update secondary text table offset if switch token, increment dictionary read index and return current byte otherwise) ; control flow target (from $B3BC) 0x00B3DC|$02:$B3CC:AC D2 60 LDY $60D2 ; read index within current dictionary entry 0x00B3DF|$02:$B3CF:B1 6F LDA ($6F),Y ; read the current byte of the current dictionary entry 0x00B3E1|$02:$B3D1:C9 C0 CMP #$C0 ; BUG: dictionary values #$C0 - #$CF are treated as table switches, but the offset data only covers #$C0 - #$C4 (and the game only uses #$C0 - #$C3) 0x00B3E3|$02:$B3D3:90 14 BCC $B3E9 ; if not a switch token, increment read index and return current byte of dictionary entry 0x00B3E5|$02:$B3D5:C9 D0 CMP #$D0 0x00B3E7|$02:$B3D7:B0 10 BCS $B3E9 ; if not a switch token, increment read index and return current byte of dictionary entry 0x00B3E9|$02:$B3D9:38 SEC 0x00B3EA|$02:$B3DA:E9 C0 SBC #$C0 ; normalize value to index; could have saved 3 bytes by doing "LDA $B331,Y" instead 0x00B3EC|$02:$B3DC:A8 TAY 0x00B3ED|$02:$B3DD:B9 F1 B3 LDA $B3F1,Y ; secondary text table offsets for C0 - C3 tables 0x00B3F0|$02:$B3E0:8D D3 60 STA $60D3 ; secondary text table offset for C0 - C3 tables ; call to code in a different bank ($0F:$FDF7) 0x00B3F3|$02:$B3E3:20 F7 FD JSR $FDF7 ; after reading a text token, update the read address in $55-$56 and bit index in $60D6 0x00B3F6|$02:$B3E6:4C AB B3 JMP $B3AB ; loop to read the next byte of dictionary entry ; if not a switch token, increment read index and return current byte of dictionary entry ; control flow target (from $B3D3, $B3D7) 0x00B3F9|$02:$B3E9:EE D2 60 INC $60D2 ; read index within current dictionary entry 0x00B3FC|$02:$B3EC:B1 6F LDA ($6F),Y ; re-read the current byte of the current dictionary entry (... but it's already in A) 0x00B3FE|$02:$B3EE:85 6D STA $6D ; stash in $6D since caller needs to pop stuff off the stack 0x00B400|$02:$B3F0:60 RTS ; code -> data ; secondary text table offsets for C0 - C3 tables ; indexed data load target (from $B3DD) 0x00B401|$02:$B3F1:20 0x00B402|$02:$B3F2:40 0x00B403|$02:$B3F3:60 0x00B404|$02:$B3F4:80 0x00B405|$02:$B3F5:A0 ; data -> code ; given a dictionary index in A, set $6F-$70 to the address of the corresponding dictionary entry ; control flow target (from $B3AE) 0x00B406|$02:$B3F6:A8 TAY ; Y = A = dictionary index 0x00B407|$02:$B3F7:AD D2 60 LDA $60D2 ; read index within current dictionary entry 0x00B40A|$02:$B3FA:D0 24 BNE $B420 ; copy dictionary entry pointer to $6F-$70; if read index > 0, we've already done set up, so skip ahead 0x00B40C|$02:$B3FC:AD 2B B4 LDA $B42B ; pointer to dictionary entries 0x00B40F|$02:$B3FF:8D D4 60 STA $60D4 ; low byte of pointer to current dictionary entry 0x00B412|$02:$B402:AD 2C B4 LDA $B42C 0x00B415|$02:$B405:8D D5 60 STA $60D5 ; high byte of pointer to current dictionary entry ; dictionary entry pointer += length of the Y-th dictionary entry ; control flow target (from $B41D) 0x00B418|$02:$B408:88 DEY 0x00B419|$02:$B409:C0 FF CPY #$FF ; Y == #$FF => Y was #$00 => we're done updating the dictionary entry pointer 0x00B41B|$02:$B40B:F0 13 BEQ $B420 ; copy dictionary entry pointer to $6F-$70 0x00B41D|$02:$B40D:98 TYA 0x00B41E|$02:$B40E:20 2D B4 JSR $B42D ; given dictionary index in A, set A to length of that dictionary entry 0x00B421|$02:$B411:18 CLC 0x00B422|$02:$B412:6D D4 60 ADC $60D4 ; low byte of pointer to current dictionary entry 0x00B425|$02:$B415:8D D4 60 STA $60D4 ; low byte of pointer to current dictionary entry 0x00B428|$02:$B418:90 03 BCC $B41D 0x00B42A|$02:$B41A:EE D5 60 INC $60D5 ; high byte of pointer to current dictionary entry ; control flow target (from $B418) 0x00B42D|$02:$B41D:4C 08 B4 JMP $B408 ; dictionary entry pointer += length of the Y-th dictionary entry ; copy dictionary entry pointer to $6F-$70 ; control flow target (from $B3FA, $B40B) 0x00B430|$02:$B420:AD D4 60 LDA $60D4 ; low byte of pointer to current dictionary entry 0x00B433|$02:$B423:85 6F STA $6F 0x00B435|$02:$B425:AD D5 60 LDA $60D5 ; high byte of pointer to current dictionary entry 0x00B438|$02:$B428:85 70 STA $70 0x00B43A|$02:$B42A:60 RTS ; code -> data ; pointer to dictionary entries ; data load target (from $B3FC) 0x00B43B|$02:$B42B:8B ; data load target (from $B402) 0x00B43C|$02:$B42C: B4 ; $02:$B48B; dictionary entries ; data -> code ; given dictionary index in A, set A to length of that dictionary entry ; control flow target (from $B3B4, $B40E) 0x00B43D|$02:$B42D:4A LSR ; 2 lengths per byte; C will say which length we want 0x00B43E|$02:$B42E:AA TAX 0x00B43F|$02:$B42F:BD 3B B4 LDA $B43B,X ; dictionary entry lengths, 1 nybble each 0x00B442|$02:$B432:B0 04 BCS $B438 ; if C set (dictionary index was odd), we want the low byte, otherwise the high byte 0x00B444|$02:$B434:4A LSR 0x00B445|$02:$B435:4A LSR 0x00B446|$02:$B436:4A LSR 0x00B447|$02:$B437:4A LSR ; control flow target (from $B432) 0x00B448|$02:$B438:29 0F AND #$0F 0x00B44A|$02:$B43A:60 RTS ; code -> data ; dictionary entry lengths, 1 nybble each ; indexed data load target (from $B42F) 0x00B44B|$02:$B43B:12 ; length of "[end-FC]", length of ".[end-FC]" 0x00B44C|$02:$B43C:52 ; length of "?’[FD][FD][end-FC]", length of "[.’][end-FC]" 0x00B44D|$02:$B43D:11 ; length of "[end-FF]", length of "y" 0x00B44E|$02:$B43E:11 ; length of "c", length of "o" 0x00B44F|$02:$B43F:11 ; length of "d", length of "e" 0x00B450|$02:$B440:11 ; length of "f", length of "g" 0x00B451|$02:$B441:11 ; length of "h", length of "i" 0x00B452|$02:$B442:11 ; length of "j", length of " " 0x00B453|$02:$B443:11 ; length of "l", length of "m" 0x00B454|$02:$B444:11 ; length of "n", length of "[line]" 0x00B455|$02:$B445:11 ; length of "[.’]", length of "‘" 0x00B456|$02:$B446:11 ; length of "r", length of "s" 0x00B457|$02:$B447:11 ; length of "t", length of "u" 0x00B458|$02:$B448:11 ; length of "a", length of "w" 0x00B459|$02:$B449:11 ; length of [switch to C0 table], length of [switch to C1 table] 0x00B45A|$02:$B44A:11 ; length of [switch to C2 table], length of [switch to C3 table] 0x00B45B|$02:$B44B:11 ; length of "A", length of "B" 0x00B45C|$02:$B44C:21 ; length of "Ca", length of "D" 0x00B45D|$02:$B44D:11 ; length of "E", length of "F" 0x00B45E|$02:$B44E:11 ; length of "G", length of "H" 0x00B45F|$02:$B44F:11 ; length of "I", length of "J" 0x00B460|$02:$B450:41 ; length of "King", length of "L" 0x00B461|$02:$B451:A1 ; length of "Moonbrooke", length of "N" 0x00B462|$02:$B452:11 ; length of "O", length of "[item]" 0x00B463|$02:$B453:46 ; length of "The ", length of "Rhone " 0x00B464|$02:$B454:11 ; length of "S", length of ";" 0x00B465|$02:$B455:11 ; length of "U", length of "”" 0x00B466|$02:$B456:F1 ; length of "Water Flying Cl", length of "C" 0x00B467|$02:$B457:11 ; length of "Y", length of "Z" 0x00B468|$02:$B458:18 ; length of "x", length of "Village " 0x00B469|$02:$B459:11 ; length of "z", length of "[F9]" 0x00B46A|$02:$B45A:11 ; length of "‟", length of "K" 0x00B46B|$02:$B45B:11 ; length of "v", length of "q" 0x00B46C|$02:$B45C:31 ; length of "’[wait][line]", length of "R" 0x00B46D|$02:$B45D:12 ; length of ".", length of "[FD][FD]" 0x00B46E|$02:$B45E:11 ; length of "P", length of "b" 0x00B46F|$02:$B45F:11 ; length of "T", length of "!" 0x00B470|$02:$B460:11 ; length of "[sun]", length of "[star]" 0x00B471|$02:$B461:11 ; length of "[moon]", length of "W" 0x00B472|$02:$B462:11 ; length of "k", length of "p" 0x00B473|$02:$B463:11 ; length of "?", length of "," 0x00B474|$02:$B464:12 ; length of "[cardinal #]", length of "[..][..]" 0x00B475|$02:$B465:11 ; length of ":", length of "'" 0x00B476|$02:$B466:11 ; length of "-", length of "’" 0x00B477|$02:$B467:11 ; length of "[spell]", length of "[monster(s)]" 0x00B478|$02:$B468:11 ; length of "[no voice]", length of "[wait]" 0x00B479|$02:$B469:11 ; length of "M", length of "[name]" 0x00B47A|$02:$B46A:11 ; length of "[number]", length of "[FD]" 0x00B47B|$02:$B46B:94 ; length of "Thou hast", length of "hest" 0x00B47C|$02:$B46C:94 ; length of "Midenhall", length of "hou " 0x00B47D|$02:$B46D:44 ; length of " of ", length of " is " 0x00B47E|$02:$B46E:95 ; length of " thou has", length of " and " 0x00B47F|$02:$B46F:55 ; length of "to th", length of " thee" 0x00B480|$02:$B470:33 ; length of "ast", length of " do" 0x00B481|$02:$B471:47 ; length of "hat ", length of " shall " 0x00B482|$02:$B472:57 ; length of " was ", length of "hou has" 0x00B483|$02:$B473:55 ; length of "d the", length of " has " 0x00B484|$02:$B474:33 ; length of "gon", length of ".[wait][line]" 0x00B485|$02:$B475:68 ; length of " have ", length of "come to " 0x00B486|$02:$B476:35 ; length of "ing", length of " hast" 0x00B487|$02:$B477:84 ; length of "ost thou", length of "this" 0x00B488|$02:$B478:86 ; length of " of the ", length of "Hargon" 0x00B489|$02:$B479:75 ; length of "in the ", length of "thing" 0x00B48A|$02:$B47A:35 ; length of "he ", length of " with" 0x00B48B|$02:$B47B:86 ; length of "reasure ", length of "‘Hast " 0x00B48C|$02:$B47C:74 ; length of "Erdrick", length of "come" 0x00B48D|$02:$B47D:78 ; length of "ere is ", length of "Welcome " 0x00B48E|$02:$B47E:56 ; length of "rince", length of " great" 0x00B48F|$02:$B47F:37 ; length of "arr", length of " for th" 0x00B490|$02:$B480:E3 ; length of "piece[(s)] of gold", length of "[.’][wait][line]" 0x00B491|$02:$B481:44 ; length of "But ", length of "here" 0x00B492|$02:$B482:43 ; length of "can ", length of "ove" 0x00B493|$02:$B483:33 ; length of "hee", length of "not" 0x00B494|$02:$B484:33 ; length of "for", length of "one" 0x00B495|$02:$B485:44 ; length of " any", length of " to " 0x00B496|$02:$B486:AF ; length of "descendant", length of "Roge Fastfinger" 0x00B497|$02:$B487:33 ; length of "all", length of "thy" 0x00B498|$02:$B488:2A ; length of "‘W", length of "thank thee" 0x00B499|$02:$B489:34 ; length of " it", length of " tha" 0x00B49A|$02:$B48A:64 ; length of " thou ", length of " the" ; dictionary entries ; indirect data load target (via $B42B) 0x00B49B|$02:$B48B:FC ; "[end-FC]" 0x00B49C|$02:$B48C:6B FC ; ".[end-FC]" 0x00B49E|$02:$B48E:6E 66 FD FD FC ; "?’[FD][FD][end-FC]" 0x00B4A3|$02:$B493:68 FC ; "[.’][end-FC]" 0x00B4A5|$02:$B495:FF ; "[end-FF]" 0x00B4A6|$02:$B496:22 ; "y" 0x00B4A7|$02:$B497:0C ; "c" 0x00B4A8|$02:$B498:18 ; "o" 0x00B4A9|$02:$B499:0D ; "d" 0x00B4AA|$02:$B49A:0E ; "e" 0x00B4AB|$02:$B49B:0F ; "f" 0x00B4AC|$02:$B49C:10 ; "g" 0x00B4AD|$02:$B49D:11 ; "h" 0x00B4AE|$02:$B49E:12 ; "i" 0x00B4AF|$02:$B49F:13 ; "j" 0x00B4B0|$02:$B4A0:5F ; " " 0x00B4B1|$02:$B4A1:15 ; "l" 0x00B4B2|$02:$B4A2:16 ; "m" 0x00B4B3|$02:$B4A3:17 ; "n" 0x00B4B4|$02:$B4A4:FE ; "[line]" 0x00B4B5|$02:$B4A5:68 ; "[.’]" 0x00B4B6|$02:$B4A6:65 ; "‘" 0x00B4B7|$02:$B4A7:1B ; "r" 0x00B4B8|$02:$B4A8:1C ; "s" 0x00B4B9|$02:$B4A9:1D ; "t" 0x00B4BA|$02:$B4AA:1E ; "u" 0x00B4BB|$02:$B4AB:0A ; "a" 0x00B4BC|$02:$B4AC:20 ; "w" 0x00B4BD|$02:$B4AD:C0 ; [switch to C0 table] 0x00B4BE|$02:$B4AE:C1 ; [switch to C1 table] 0x00B4BF|$02:$B4AF:C2 ; [switch to C2 table] 0x00B4C0|$02:$B4B0:C3 ; [switch to C3 table] ; C0 table 0x00B4C1|$02:$B4B1:24 ; "A" 0x00B4C2|$02:$B4B2:25 ; "B" 0x00B4C3|$02:$B4B3:26 0A ; "Ca" 0x00B4C5|$02:$B4B5:27 ; "D" 0x00B4C6|$02:$B4B6:28 ; "E" 0x00B4C7|$02:$B4B7:29 ; "F" 0x00B4C8|$02:$B4B8:2A ; "G" 0x00B4C9|$02:$B4B9:2B ; "H" 0x00B4CA|$02:$B4BA:2C ; "I" 0x00B4CB|$02:$B4BB:2D ; "J" 0x00B4CC|$02:$B4BC:2E 12 17 10 ; "King" 0x00B4D0|$02:$B4C0:2F ; "L" 0x00B4D1|$02:$B4C1:30 18 18 17 0B 1B 18 18 14 0E ; "Moonbrooke" 0x00B4DB|$02:$B4CB:31 ; "N" 0x00B4DC|$02:$B4CC:32 ; "O" 0x00B4DD|$02:$B4CD:F7 ; "[item]" 0x00B4DE|$02:$B4CE:37 11 0E 5F ; "The " 0x00B4E2|$02:$B4D2:35 11 18 17 0E 5F ; "Rhone " 0x00B4E8|$02:$B4D8:36 ; "S" 0x00B4E9|$02:$B4D9:70 ; ";" 0x00B4EA|$02:$B4DA:38 ; "U" 0x00B4EB|$02:$B4DB:62 ; "”" 0x00B4EC|$02:$B4DC:3A 0A 1D 0E 1B 5F 29 15 22 12 17 10 5F 26 15 ; "Water Flying Cl" 0x00B4FB|$02:$B4EB:26 ; "C" 0x00B4FC|$02:$B4EC:3C ; "Y" 0x00B4FD|$02:$B4ED:3D ; "Z" 0x00B4FE|$02:$B4EE:21 ; "x" 0x00B4FF|$02:$B4EF:39 12 15 15 0A 10 0E 5F ; "Village " 0x00B507|$02:$B4F7:23 ; "z" 0x00B508|$02:$B4F8:F9 ; "[item-F9]" 0x00B509|$02:$B4F9:64 ; "‟" 0x00B50A|$02:$B4FA:2E ; "K" ; C1 table 0x00B50B|$02:$B4FB:1F ; "v" 0x00B50C|$02:$B4FC:1A ; "q" 0x00B50D|$02:$B4FD:66 FB FE ; "’[wait][line]" 0x00B510|$02:$B500:35 ; "R" 0x00B511|$02:$B501:6B ; "." 0x00B512|$02:$B502:FD FD ; "[FD][FD]" 0x00B514|$02:$B504:33 ; "P" 0x00B515|$02:$B505:0B ; "b" 0x00B516|$02:$B506:37 ; "T" 0x00B517|$02:$B507:6F ; "!" 0x00B518|$02:$B508:5A ; "[sun]" 0x00B519|$02:$B509:5B ; "[star]" 0x00B51A|$02:$B50A:5C ; "[moon]" 0x00B51B|$02:$B50B:3A ; "W" 0x00B51C|$02:$B50C:14 ; "k" 0x00B51D|$02:$B50D:19 ; "p" 0x00B51E|$02:$B50E:6E ; "?" 0x00B51F|$02:$B50F:69 ; "," 0x00B520|$02:$B510:F4 ; "[cardinal #]" 0x00B521|$02:$B511:75 75 ; "[..][..]" 0x00B523|$02:$B513:74 ; ":" 0x00B524|$02:$B514:67 ; "'" 0x00B525|$02:$B515:6A ; "-" 0x00B526|$02:$B516:66 ; "’" 0x00B527|$02:$B517:F6 ; "[spell]" 0x00B528|$02:$B518:F3 ; "[monster(s)]" 0x00B529|$02:$B519:60 ; "[no voice]" 0x00B52A|$02:$B51A:FB ; "[wait]" 0x00B52B|$02:$B51B:30 ; "M" 0x00B52C|$02:$B51C:F8 ; "[name]" 0x00B52D|$02:$B51D:F5 ; "[number]" 0x00B52E|$02:$B51E:FD ; "[FD]" ; C2 table 0x00B52F|$02:$B51F:37 11 18 1E 5F 11 0A 1C 1D ; "Thou hast" 0x00B538|$02:$B528:11 0E 1C 1D ; "hest" 0x00B53C|$02:$B52C:30 12 0D 0E 17 11 0A 15 15 ; "Midenhall" 0x00B545|$02:$B535:11 18 1E 5F ; "hou " 0x00B549|$02:$B539:5F 18 0F 5F ; " of " 0x00B54D|$02:$B53D:5F 12 1C 5F ; " is " 0x00B551|$02:$B541:5F 1D 11 18 1E 5F 11 0A 1C ; " thou has" 0x00B55A|$02:$B54A:5F 0A 17 0D 5F ; " and " 0x00B55F|$02:$B54F:1D 18 5F 1D 11 ; "to th" 0x00B564|$02:$B554:5F 1D 11 0E 0E ; " thee" 0x00B569|$02:$B559:0A 1C 1D ; "ast" 0x00B56C|$02:$B55C:5F 0D 18 ; " do" 0x00B56F|$02:$B55F:11 0A 1D 5F ; "hat " 0x00B573|$02:$B563:5F 1C 11 0A 15 15 5F ; " shall " 0x00B57A|$02:$B56A:5F 20 0A 1C 5F ; " was " 0x00B57F|$02:$B56F:11 18 1E 5F 11 0A 1C ; "hou has" 0x00B586|$02:$B576:0D 5F 1D 11 0E ; "d the" 0x00B58B|$02:$B57B:5F 11 0A 1C 5F ; " has " 0x00B590|$02:$B580:10 18 17 ; "gon" 0x00B593|$02:$B583:6B FB FE ; ".[wait][line]" 0x00B596|$02:$B586:5F 11 0A 1F 0E 5F ; " have " 0x00B59C|$02:$B58C:0C 18 16 0E 5F 1D 18 5F ; "come to " 0x00B5A4|$02:$B594:12 17 10 ; "ing" 0x00B5A7|$02:$B597:5F 11 0A 1C 1D ; " hast" 0x00B5AC|$02:$B59C:18 1C 1D 5F 1D 11 18 1E ; "ost thou" 0x00B5B4|$02:$B5A4:1D 11 12 1C ; "this" 0x00B5B8|$02:$B5A8:5F 18 0F 5F 1D 11 0E 5F ; " of the " 0x00B5C0|$02:$B5B0:2B 0A 1B 10 18 17 ; "Hargon" 0x00B5C6|$02:$B5B6:12 17 5F 1D 11 0E 5F ; "in the " 0x00B5CD|$02:$B5BD:1D 11 12 17 10 ; "thing" 0x00B5D2|$02:$B5C2:11 0E 5F ; "he " 0x00B5D5|$02:$B5C5:5F 20 12 1D 11 ; " with" ; C3 table 0x00B5DA|$02:$B5CA:1B 0E 0A 1C 1E 1B 0E 5F ; "reasure " 0x00B5E2|$02:$B5D2:65 2B 0A 1C 1D 5F ; "‘Hast " 0x00B5E8|$02:$B5D8:28 1B 0D 1B 12 0C 14 ; "Erdrick" 0x00B5EF|$02:$B5DF:0C 18 16 0E ; "come" 0x00B5F3|$02:$B5E3:0E 1B 0E 5F 12 1C 5F ; "ere is " 0x00B5FA|$02:$B5EA:3A 0E 15 0C 18 16 0E 5F ; "Welcome " 0x00B602|$02:$B5F2:1B 12 17 0C 0E ; "rince" 0x00B607|$02:$B5F7:5F 10 1B 0E 0A 1D ; " great" 0x00B60D|$02:$B5FD:0A 1B 1B ; "arr" 0x00B610|$02:$B600:5F 0F 18 1B 5F 1D 11 ; " for th" 0x00B617|$02:$B607:19 12 0E 0C 0E F2 5F 18 0F 5F 10 18 15 0D ; "piece[(s)] of gold" 0x00B625|$02:$B615:68 FB FE ; "[.’][wait][line]" 0x00B628|$02:$B618:25 1E 1D 5F ; "But " 0x00B62C|$02:$B61C:11 0E 1B 0E ; "here" 0x00B630|$02:$B620:0C 0A 17 5F ; "can " 0x00B634|$02:$B624:18 1F 0E ; "ove" 0x00B637|$02:$B627:11 0E 0E ; "hee" 0x00B63A|$02:$B62A:17 18 1D ; "not" 0x00B63D|$02:$B62D:0F 18 1B ; "for" 0x00B640|$02:$B630:18 17 0E ; "one" 0x00B643|$02:$B633:5F 0A 17 22 ; " any" 0x00B647|$02:$B637:5F 1D 18 5F ; " to " 0x00B64B|$02:$B63B:0D 0E 1C 0C 0E 17 0D 0A 17 1D ; "descendant" 0x00B655|$02:$B645:35 18 10 0E 5F 29 0A 1C 1D 0F 12 17 10 0E 1B ; "Roge Fastfinger" 0x00B664|$02:$B654:0A 15 15 ; "all" 0x00B667|$02:$B657:1D 11 22 ; "thy" 0x00B66A|$02:$B65A:65 3A ; "‘W" 0x00B66C|$02:$B65C:1D 11 0A 17 14 5F 1D 11 0E 0E ; "thank thee" 0x00B676|$02:$B666:5F 12 1D ; " it" 0x00B679|$02:$B669:5F 1D 11 0A ; " tha" 0x00B67D|$02:$B66D:5F 1D 11 18 1E 5F ; " thou " 0x00B683|$02:$B673:5F 1D 11 0E ; " the" ; data -> code ; CLC if end of word, SEC otherwise ; from $0F:$FB4D, $0F:$FB7D, $0F:$FBD9 via $800A ; indirect control flow target (via $800A) 0x00B687|$02:$B677:C9 FA CMP #$FA 0x00B689|$02:$B679:B0 0A BCS $B685 ; CLC to indicate end of word; any control code >= #$FA counts as a word ender 0x00B68B|$02:$B67B:C9 60 CMP #$60 ; [no voice] 0x00B68D|$02:$B67D:F0 06 BEQ $B685 ; CLC to indicate end of word 0x00B68F|$02:$B67F:C9 5F CMP #$5F ; [space] 0x00B691|$02:$B681:F0 02 BEQ $B685 ; CLC to indicate end of word 0x00B693|$02:$B683:38 SEC ; SEC to indicate not end of word 0x00B694|$02:$B684:60 RTS ; CLC to indicate end of word ; control flow target (from $B679, $B67D, $B681) 0x00B695|$02:$B685:18 CLC 0x00B696|$02:$B686:60 RTS ; if menu current column < #$16, CLC and RTS, otherwise do stuff ; from $0F:$FB61, $0F:$FD40 via $800E ; indirect control flow target (via $800E) 0x00B697|$02:$B687:AD 9E 60 LDA $609E ; menu current column 0x00B69A|$02:$B68A:C9 16 CMP #$16 ; width of dialogue box 0x00B69C|$02:$B68C:B0 0A BCS $B698 0x00B69E|$02:$B68E:60 RTS ; handler for control code #$FD ; from $0F:$FBAB via $8000 ; indirect control flow target (via $8000) 0x00B69F|$02:$B68F:20 BA B6 JSR $B6BA ; set menu current column to $7C 0x00B6A2|$02:$B692:4C 9D B6 JMP $B69D ; from $0F:$FB9E, $0F:$FBA6, $0F:$FBB0 via $800C ; indirect control flow target (via $800C) 0x00B6A5|$02:$B695:20 BA B6 JSR $B6BA ; set menu current column to $7C ; control flow target (from $B68C) 0x00B6A8|$02:$B698:CD C8 60 CMP $60C8 ; speech sound effect / auto-indent flag 0x00B6AB|$02:$B69B:F0 1C BEQ $B6B9 ; control flow target (from $B692) 0x00B6AD|$02:$B69D:A6 7D LDX $7D 0x00B6AF|$02:$B69F:E8 INX 0x00B6B0|$02:$B6A0:E0 08 CPX #$08 ; height of dialogue box 0x00B6B2|$02:$B6A2:B0 1C BCS $B6C0 ; control flow target (from $B6C2) 0x00B6B4|$02:$B6A4:AD C7 60 LDA $60C7 0x00B6B7|$02:$B6A7:4A LSR 0x00B6B8|$02:$B6A8:4A LSR 0x00B6B9|$02:$B6A9:49 03 EOR #$03 0x00B6BB|$02:$B6AB:18 CLC 0x00B6BC|$02:$B6AC:65 7D ADC $7D 0x00B6BE|$02:$B6AE:85 7D STA $7D ; control flow target (from $B6E5) 0x00B6C0|$02:$B6B0:AD C8 60 LDA $60C8 ; speech sound effect / auto-indent flag 0x00B6C3|$02:$B6B3:8D 9E 60 STA $609E ; menu current column 0x00B6C6|$02:$B6B6:85 7C STA $7C 0x00B6C8|$02:$B6B8:18 CLC ; control flow target (from $B69B) 0x00B6C9|$02:$B6B9:60 RTS ; set menu current column to $7C ; control flow target (from $B68F, $B695) 0x00B6CA|$02:$B6BA:A5 7C LDA $7C 0x00B6CC|$02:$B6BC:8D 9E 60 STA $609E ; menu current column 0x00B6CF|$02:$B6BF:60 RTS ; control flow target (from $B6A2) 0x00B6D0|$02:$B6C0:A5 8E LDA $8E ; flag for in battle or not (#$FF)? 0x00B6D2|$02:$B6C2:30 E0 BMI $B6A4 0x00B6D4|$02:$B6C4:20 E7 B6 JSR $B6E7 0x00B6D7|$02:$B6C7:AD C7 60 LDA $60C7 0x00B6DA|$02:$B6CA:C9 04 CMP #$04 0x00B6DC|$02:$B6CC:D0 03 BNE $B6D1 0x00B6DE|$02:$B6CE:20 E7 B6 JSR $B6E7 ; control flow target (from $B6CC) 0x00B6E1|$02:$B6D1:A9 13 LDA #$13 0x00B6E3|$02:$B6D3:8D 84 60 STA $6084 0x00B6E6|$02:$B6D6:A9 00 LDA #$00 0x00B6E8|$02:$B6D8:8D 85 60 STA $6085 ; control flow target (from $B6E3) ; call to code in a different bank ($0F:$FCFF) 0x00B6EB|$02:$B6DB:20 FF FC JSR $FCFF 0x00B6EE|$02:$B6DE:AD 84 60 LDA $6084 0x00B6F1|$02:$B6E1:C9 1B CMP #$1B 0x00B6F3|$02:$B6E3:90 F6 BCC $B6DB 0x00B6F5|$02:$B6E5:B0 C9 BCS $B6B0 ; control flow target (from $B6C4, $B6CE) 0x00B6F7|$02:$B6E7:A2 00 LDX #$00 ; control flow target (from $B703) 0x00B6F9|$02:$B6E9:BD 0E 07 LDA $070E,X 0x00B6FC|$02:$B6EC:29 7F AND #$7F 0x00B6FE|$02:$B6EE:C9 76 CMP #$76 0x00B700|$02:$B6F0:B0 0E BCS $B700 0x00B702|$02:$B6F2:48 PHA 0x00B703|$02:$B6F3:BD F8 06 LDA $06F8,X ; start of main dialogue window 0x00B706|$02:$B6F6:29 7F AND #$7F 0x00B708|$02:$B6F8:C9 76 CMP #$76 0x00B70A|$02:$B6FA:68 PLA 0x00B70B|$02:$B6FB:B0 03 BCS $B700 0x00B70D|$02:$B6FD:9D F8 06 STA $06F8,X ; start of main dialogue window ; control flow target (from $B6F0, $B6FB) 0x00B710|$02:$B700:E8 INX 0x00B711|$02:$B701:E0 9A CPX #$9A 0x00B713|$02:$B703:D0 E4 BNE $B6E9 0x00B715|$02:$B705:A9 5F LDA #$5F ; control flow target (from $B70D) 0x00B717|$02:$B707:9D F8 06 STA $06F8,X ; start of main dialogue window 0x00B71A|$02:$B70A:E8 INX 0x00B71B|$02:$B70B:E0 B0 CPX #$B0 0x00B71D|$02:$B70D:D0 F8 BNE $B707 0x00B71F|$02:$B70F:60 RTS ; from $0F:$FBA2 via $8010 ; indirect control flow target (via $8010) 0x00B720|$02:$B710:A9 0F LDA #$0F 0x00B722|$02:$B712:85 03 STA $03 ; game clock? ; control flow target (from $B721) 0x00B724|$02:$B714:20 30 B7 JSR $B730 ; call to code in a different bank ($0F:$C1DC) 0x00B727|$02:$B717:20 DC C1 JSR $C1DC ; set $6007 = #$00, set $00 = #$01, wait for interrupt, set $00 = #$FF ; call to code in a different bank ($0F:$C476) 0x00B72A|$02:$B71A:20 76 C4 JSR $C476 ; read joypad 1 data into $2F 0x00B72D|$02:$B71D:A5 2F LDA $2F ; joypad 1 data 0x00B72F|$02:$B71F:29 F3 AND #$F3 ; ignore Start/Select 0x00B731|$02:$B721:F0 F1 BEQ $B714 0x00B733|$02:$B723:20 3A B7 JSR $B73A 0x00B736|$02:$B726:A9 85 LDA #$85 ; Music ID #$85: single beep SFX ; call to code in a different bank ($0F:$C561) 0x00B738|$02:$B728:20 61 C5 JSR $C561 ; play PCM specified by A (>= #$80 = sound effect [SFX], < #$80 = background music [BGM]) 0x00B73B|$02:$B72B:A9 02 LDA #$02 0x00B73D|$02:$B72D:85 7C STA $7C 0x00B73F|$02:$B72F:60 RTS ; control flow target (from $B714) 0x00B740|$02:$B730:A2 73 LDX #$73 0x00B742|$02:$B732:A5 03 LDA $03 ; game clock? 0x00B744|$02:$B734:29 1F AND #$1F 0x00B746|$02:$B736:C9 10 CMP #$10 0x00B748|$02:$B738:B0 02 BCS $B73C ; control flow target (from $B723) 0x00B74A|$02:$B73A:A2 5F LDX #$5F ; control flow target (from $B738) 0x00B74C|$02:$B73C:86 09 STX $09 0x00B74E|$02:$B73E:A9 10 LDA #$10 0x00B750|$02:$B740:8D 8B 60 STA $608B 0x00B753|$02:$B743:A5 7D LDA $7D 0x00B755|$02:$B745:18 CLC 0x00B756|$02:$B746:69 13 ADC #$13 0x00B758|$02:$B748:8D 8C 60 STA $608C ; call to code in a different bank ($0F:$FE97) 0x00B75B|$02:$B74B:20 97 FE JSR $FE97 ; read byte following JSR, parse it for bank and pointer index, execute ($8000,X) in selected bank, swap back in original bank ; code -> data ; indirect data load target 0x00B75E|$02:$B74E:C1 ; $06:$8002 ; data -> code ; call to code in a different bank ($0F:$C1FA) 0x00B75F|$02:$B74F:4C FA C1 JMP $C1FA ; wait for $02 to not be #$C0, write PPU address in $07-$08 and data in $09 to PPU write buffer at $0300,$02, $01 += 1, $02 += 3, and set $0183 to #$00 ; code -> data ; -> $05:$8000: main script strings, part 1 ; main script pointer table, targets in bank 5 ; external indexed data load target (from $0F:$FA9A) 0x00B762|$02:$B752:00 ; external indexed data load target (from $0F:$FA9F) 0x00B763|$02:$B753: 80 ; $05:$8000; main script strings, part 1 0x00B764|$02:$B754:B3 80 ; $05:$80B3; main script strings #$0010 - #$001F 0x00B766|$02:$B756:77 81 ; $05:$8177; main script strings #$0020 - #$002F 0x00B768|$02:$B758:9B 82 ; $05:$829B; main script strings #$0030 - #$003F 0x00B76A|$02:$B75A:D6 83 ; $05:$83D6; main script strings #$0040 - #$004F 0x00B76C|$02:$B75C:20 85 ; $05:$8520; main script strings #$0050 - #$005F 0x00B76E|$02:$B75E:28 86 ; $05:$8628; main script strings #$0060 - #$006F 0x00B770|$02:$B760:0D 88 ; $05:$880D; main script strings #$0070 - #$007F 0x00B772|$02:$B762:EF 8C ; $05:$8CEF; main script strings #$0080 - #$008F 0x00B774|$02:$B764:F0 8E ; $05:$8EF0; main script strings #$0090 - #$009F 0x00B776|$02:$B766:FA 8E ; $05:$8EFA; main script strings #$00A0 - #$00AF 0x00B778|$02:$B768:04 8F ; $05:$8F04; main script strings #$00B0 - #$00BF 0x00B77A|$02:$B76A:0E 8F ; $05:$8F0E; main script strings #$00C0 - #$00CF 0x00B77C|$02:$B76C:18 8F ; $05:$8F18; main script strings #$00D0 - #$00DF 0x00B77E|$02:$B76E:22 8F ; $05:$8F22; main script strings #$00E0 - #$00EF 0x00B780|$02:$B770:2C 8F ; $05:$8F2C; main script strings #$00F0 - #$00FF 0x00B782|$02:$B772:36 8F ; $05:$8F36; main script strings #$0100 - #$010F 0x00B784|$02:$B774:3F 90 ; $05:$903F; main script strings #$0110 - #$011F 0x00B786|$02:$B776:43 91 ; $05:$9143; main script strings #$0120 - #$012F 0x00B788|$02:$B778:9C 92 ; $05:$929C; main script strings #$0130 - #$013F 0x00B78A|$02:$B77A:F9 93 ; $05:$93F9; main script strings #$0140 - #$014F 0x00B78C|$02:$B77C:1E 95 ; $05:$951E; main script strings #$0150 - #$015F 0x00B78E|$02:$B77E:AB 96 ; $05:$96AB; main script strings #$0160 - #$016F 0x00B790|$02:$B780:EF 97 ; $05:$97EF; main script strings #$0170 - #$017F 0x00B792|$02:$B782:41 99 ; $05:$9941; main script strings #$0180 - #$018F 0x00B794|$02:$B784:DC 9A ; $05:$9ADC; main script strings #$0190 - #$019F 0x00B796|$02:$B786:0B 9D ; $05:$9D0B; main script strings #$01A0 - #$01AF 0x00B798|$02:$B788:94 9E ; $05:$9E94; main script strings #$01B0 - #$01BF 0x00B79A|$02:$B78A:51 A0 ; $05:$A051; main script strings #$01C0 - #$01CF 0x00B79C|$02:$B78C:5B A0 ; $05:$A05B; main script strings #$01D0 - #$01DF 0x00B79E|$02:$B78E:65 A0 ; $05:$A065; main script strings #$01E0 - #$01EF 0x00B7A0|$02:$B790:6F A0 ; $05:$A06F; main script strings #$01F0 - #$01FF 0x00B7A2|$02:$B792:79 A0 ; $05:$A079; main script strings #$0200 - #$020F 0x00B7A4|$02:$B794:AF A2 ; $05:$A2AF; main script strings #$0210 - #$021F 0x00B7A6|$02:$B796:7E A6 ; $05:$A67E; main script strings #$0220 - #$022F 0x00B7A8|$02:$B798:78 A9 ; $05:$A978; main script strings #$0230 - #$023F 0x00B7AA|$02:$B79A:4A AC ; $05:$AC4A; main script strings #$0240 - #$024F 0x00B7AC|$02:$B79C:17 AF ; $05:$AF17; main script strings #$0250 - #$025F 0x00B7AE|$02:$B79E:23 B1 ; $05:$B123; main script strings #$0260 - #$026F 0x00B7B0|$02:$B7A0:EF B2 ; $05:$B2EF; main script strings #$0270 - #$027F 0x00B7B2|$02:$B7A2:3E B5 ; $05:$B53E; main script strings #$0280 - #$028F 0x00B7B4|$02:$B7A4:61 B7 ; $05:$B761; main script strings #$0290 - #$029F 0x00B7B6|$02:$B7A6:4F B9 ; $05:$B94F; main script strings #$02A0 - #$02AF 0x00B7B8|$02:$B7A8:C3 BB ; $05:$BBC3; main script strings #$02B0 - #$02BF 0x00B7BA|$02:$B7AA:DA BD ; $05:$BDDA; main script strings #$02C0 - #$02CF 0x00B7BC|$02:$B7AC:AE BF ; $05:$BFAE; main script strings #$02D0 - #$02DF ; main script pointer table, targets in bank 2 0x00B7BE|$02:$B7AE:7E B9 ; $02:$B97E; main script strings #$02E0 - #$02EF 0x00B7C0|$02:$B7B0:97 BB ; $02:$BB97; main script strings #$02F0 - #$02FF ; main script part 2; $B7B2-$B97D is overflow from bank 5 ; external indirect data load target (via $0F:$FE32) ; indirect data load target 0x00B7C2|$02:$B7B2:DF B4 EB A0 4D BB 17 F4 F9 C3 E2 57 C0 E7 8F 9D 7C 1E 09 97 D7 FD 36 10 FF 98 98 75 EF 8A 45 5E 18 E7 47 62 F5 9C E8 E9 27 C0 42 0F E2 1F F7 61 30 87 93 E2 E3 CC C7 BD 03 9E 3E 76 35 D7 26 4F E9 CA FB 9E 29 FC DF B6 1D F7 8A 61 04 A1 F0 6F 5C 97 A9 B7 60 EB D4 33 58 ED 6E FC 1C EF E9 F4 8E 92 7D 6A 5E 63 E6 08 7B 13 0E BD E9 D1 98 F3 E1 89 B0 EB C0 33 B1 7D CF E3 3D 47 CC 90 F8 95 F0 39 E3 D8 F8 F8 F7 B8 34 EF B5 BB F9 8D 5A 5D 8B F0 73 FD 75 E2 3C DD A7 5D 02 7C 97 E9 FC B1 F0 CE C5 FD 3E 71 FE 3F 6D 84 1F 8D 75 C9 7E 1B 14 FD 75 E9 A0 9D 5D 2F F8 DF D3 E8 DD 73 DB 27 E9 E8 D1 5E 7B 3E E7 1D 79 23 DA C5 E9 27 C4 3D 9A E8 13 2E D7 0F 53 64 DB B1 28 FF 1E 54 E3 A4 9F 4D 04 EA E9 7F 4E 97 F5 FA C3 53 2C 0E BC 3A 61 03 F4 93 E2 3B 5E 81 2F 76 6F 87 A9 B2 6D D8 94 7D 75 E4 92 9F F7 1F FB FA FF 9A F7 7E D3 AB 5D FE C8 EB CB E6 D7 4D FB 17 F1 0F D4 5E A3 E6 48 EA 7A 2A F3 09 BF 62 FE 21 FA 8B FF 7F 1F ED F1 71 EF 6F 58 4D 97 AC 25 FD 72 4A 3E EE BF 66 3C 36 79 4F 8E A4 57 FB B7 E9 27 C9 25 2F 8A 5F A5 E9 B2 7C 35 84 D8 75 E2 3B 58 BE E7 B5 8B C9 BF 88 7E DB 08 3F F1 F2 FF DC 7E 91 3D 92 3A F2 47 F1 B0 F6 27 56 43 F5 D3 9F 38 7C 4A FD EA C9 BF D7 5E 01 FD 3B 70 F4 F3 5D 7A 65 76 F4 09 EC 5F 1D 17 A7 4F 62 FE 9F 38 7D F2 66 3D 4D 92 5E 6B 69 58 BC 75 2B B1 BD 7F 53 3E B5 B0 87 FD 8D 75 C9 FF 05 5E A1 30 83 E4 7E 9C E8 2F FB 87 F1 1E A5 CF 04 7F 94 EE C0 0E EC 00 00 ; main script strings #$02E0 - #$02EF ; indirect data load target (via $B7AE) 0x00B98E|$02:$B97E:AF 00 CE C5 FD EF 53 DB 82 BC 43 EE 94 FF B8 F1 B0 F5 68 C9 43 E3 A9 15 E8 D4 96 9B 5F C7 C7 BC BB 27 58 4D F0 F8 35 2F D3 13 A4 0F FA 4C 3E 3E C5 FD EF 53 DB F7 60 AF 20 A3 9E 1D AD DE AD 42 E9 7F 5F AB 69 0D BA 5F 7C B7 09 F4 12 FE 9D 38 C2 6D F5 D7 A8 F0 EE CF E1 F6 4A EC 9C 3E 29 42 21 EB 3D B2 7F B7 DA DD FA 52 B4 DB 5C 7F D3 0E FF 8E EF 63 70 C4 DB F5 43 6F 8C DB A7 FF DF C3 59 3A C3 FD BE C3 A2 AF 07 EC 3F AE 91 F6 FD B0 EF E2 1F A8 8A BC 96 4C C7 EB 28 D1 9B 82 F8 B9 97 E4 B6 F4 1A E9 E0 9E A7 B7 05 7A 86 26 4F E2 3C DC 27 46 67 FE FE BE C7 EB D3 67 D9 37 EB D2 6C 75 3D B8 2B C9 1F C6 C3 FA FB 7D F2 7E 9F 16 AD 98 2B F7 F4 34 F6 EC 5F 16 AD 98 6A 6C F4 F4 09 97 FB 27 FB 7F FB F8 6B 27 58 FA EB F6 63 ED F1 7F 37 A7 A0 4C BE 74 DB FD 93 F8 8E C5 FA 7D CF 63 26 C9 B7 89 8F 7B 92 66 90 7D E1 B1 4F 63 DD CF 4F E9 D3 EB 78 9D 7E 6C 97 C7 50 69 93 FE E1 F2 FC FC DF BE DF 1F D7 5E 21 F7 4C BD 04 BE 47 DF EB 14 A7 0F EF 35 0B 1F 0C EA 7B 70 77 75 F0 1E 84 C1 BD 02 6C 9F 41 FB 3D A0 87 AA C7 8B FB CD 42 C7 C3 3B 5B BD 3D 03 61 F5 D7 86 B2 75 8F 17 1E F7 40 D3 60 F6 2F 8E BB 27 58 4D BF F7 D9 3B D5 91 7F AE BC 47 62 FE 8F 3D 3B 6F 7E C7 D4 DE B0 66 25 0F FE 5F 7C 5B 2B 5C 13 7F 1F 88 7E A2 FE BE C7 CA 3C 4C 7E 03 EE EB C3 1D F2 3E FA 9E DC 1F D2 61 F1 F6 2F EF 7E BA F0 10 87 FB 87 FB 6F C3 2C 9D 61 32 BF EB 8D 75 C9 F1 6C 9F E0 AF 8B 64 9E C5 FF 93 F8 87 EA 3F FB D7 6D 49 17 3C BC 4C 7B DC 1D B5 E9 40 F6 47 D7 5E 0D 2A 4E B0 FF 6F C7 E2 1F B6 C2 0F 5B 7A 04 F9 2F D2 3A 06 99 3D 24 FA D6 C2 1F F2 0E FF 64 55 E9 A0 9D 5D 2F 59 DF 86 58 F9 5B 07 FD 26 1F 1B FA 7D 1B AE EA 7B 7E EC 00 00 00 ; main script strings #$02F0 - #$02FF ; indirect data load target (via $B7B0) 0x00BBA7|$02:$BB97:AF 1D 23 27 C6 C7 FE F5 37 A0 4B CD 64 DF 17 EC 5F 74 A7 AE 79 F3 8F FD EB 39 D0 FD B7 9C D5 91 D8 BF A3 CF 4E DB DF B1 EE E7 B6 1D E8 DA 61 0B BF DC 42 7A FC 32 FE 26 3D EB A7 4F B9 F3 86 78 9E 10 EB D4 78 7A B6 1F 7C D9 30 2B E2 DB DF D6 7F F2 FE 9E DA 6C BA 49 FD 8D C7 8B 9E BF F5 C7 E0 3A F8 1E 5C 92 FD A6 10 EC 5F DE FD 75 E2 D3 87 F4 E5 F4 93 77 F4 E9 7F 4E 5F 49 37 F1 F6 9F 37 A7 4B D5 66 A6 48 B8 EB C4 63 C5 46 A4 B4 D8 F9 BF EB 8B 27 48 7D CF 14 BE C7 D2 2E FD 43 F3 1D 79 0E 2B C4 E0 A5 23 9B AE F4 60 95 61 E7 B2 13 6B FF B8 7C BF 3F 37 AF D5 EE FD 43 F3 1D 79 0B 27 50 7F ED E2 7C 4F 37 D0 D4 DD FA 7E 0F D7 26 5F AF 5F 6F BD EC 6D DE C4 D9 B8 D2 D3 F5 D7 8D 3E DF D3 A5 E7 52 BD FF 27 B1 7B 63 D7 9E F8 4D 87 5E 23 D4 E9 D2 99 3F 7A 6E 3D 6F A5 29 FD 7E 3F AE BC 43 F6 D8 41 F8 B6 90 9F FD FC 3A 61 14 E3 C4 F8 BE 94 BF 07 EB 93 2F F8 DF 43 53 71 D7 C0 7C 8E F5 66 D8 62 6C FE 9F 37 6C 93 7B BF ED E9 1F C3 1C 75 E1 3A 04 C9 FF 6F FD F7 59 26 3D 90 FF E5 E8 4A 51 77 FB 9C 44 7A F4 D9 BA 83 F9 23 58 F0 85 FC 4E 1C F2 3D A9 DD 83 BB AF 46 9C 66 D2 7E D8 99 3D B2 7C 92 94 0E BD E6 8B FF BE 0D 5B 30 FB B1 B2 4B F3 D7 9E 5E 4F 62 FE F6 9D 28 3B BA F0 C7 7C 8F BE C5 FD E8 EB C6 FE 7E 6F 5F AB DD F9 96 1B 07 E9 A8 F4 7A 74 A6 4F B2 64 84 D9 28 FD 71 EF 74 DF 35 EF E2 71 83 E2 1E C4 EA CF D3 E2 7B 63 50 7F 40 76 99 2F 37 F1 EB 3E 29 F4 EB C0 33 B1 7E 19 64 A5 FF B5 FC 4F 8B EB AF 30 9B F6 2F E2 3C D6 26 1D 7F 93 F5 D7 88 7E A2 FE 8F 3D 3B 6F 7E C5 FA 93 F8 49 19 9A 96 13 6E C7 C7 81 E4 B7 E9 67 7F 10 FE BE C7 8B 6E 94 3F E2 FD 58 98 75 EF DB 13 2F FD F8 6C 52 F3 6A 29 FA EB C6 9F 7E 2E 3D EC 36 29 FA EB D1 A4 C9 6F 40 97 C8 FB 7C 4A F3 33 56 8F 8F 12 BE FD 7A 61 0F 13 AF B1 F0 93 61 A7 90 F8 5B 1E 2F B9 E2 9D FD AF F8 EE FD 3F A7 4E B3 86 AB 30 7F 40 76 99 21 AF 01 0D E8 B7 F3 78 87 EF 58 33 1F F7 DB C9 E9 1F C6 9F 6F 59 C6 ; data -> code ; read the next text token and interpolate any variable control codes; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A ; from $0F:$FBF7 via $8014 ; indirect control flow target (via $8014) ; call to code in a different bank ($0F:$FE97) 0x00BE10|$02:$BE00:20 97 FE JSR $FE97 ; read byte following JSR, parse it for bank and pointer index, execute ($8000,X) in selected bank, swap back in original bank ; code -> data ; indirect data load target 0x00BE13|$02:$BE03:42 ; $02:$8004; -> $02:$B393: read the next string byte; preserves X and Y ; data -> code 0x00BE14|$02:$BE04:C9 F3 CMP #$F3 ; "[monster(s)]" 0x00BE16|$02:$BE06:F0 24 BEQ $BE2C ; given monster count in $8F singular monster name in $6119, and monster name length in X, print appropriate singluar/plural monster name to $60F1 0x00BE18|$02:$BE08:C9 F4 CMP #$F4 ; "[cardinal #]" 0x00BE1A|$02:$BE0A:F0 25 BEQ $BE31 ; given monster count in $8F, print corresponding cardinal number to $60F1 0x00BE1C|$02:$BE0C:C9 F5 CMP #$F5 ; "[number]" 0x00BE1E|$02:$BE0E:F0 29 BEQ $BE39 ; print the number stored at $8F-$90 to $60F1 in decimal 0x00BE20|$02:$BE10:C9 F8 CMP #$F8 ; "[name]" 0x00BE22|$02:$BE12:F0 15 BEQ $BE29 ; copy $6119,X to $60F1,X until we read a #$FA 0x00BE24|$02:$BE14:C9 F7 CMP #$F7 ; "[item]" 0x00BE26|$02:$BE16:F0 4B BEQ $BE63 ; print name of item ID in $95 to $60F1 0x00BE28|$02:$BE18:C9 F9 CMP #$F9 ; "[item-F9]" used for getting random direction by crazy fortuneteller and for printing some names of crests 0x00BE2A|$02:$BE1A:F0 0A BEQ $BE26 ; copy [end-FA]-terminated string from $5A to $60F1 0x00BE2C|$02:$BE1C:C9 F2 CMP #$F2 ; "[(s)]" 0x00BE2E|$02:$BE1E:F0 14 BEQ $BE34 ; if $8F-$90 == #$0001, print "s" + [end-FA] to $60F1 and SEC, else LDA [end-FA] and CLC 0x00BE30|$02:$BE20:C9 F6 CMP #$F6 ; "[spell]" 0x00BE32|$02:$BE22:F0 76 BEQ $BE9A ; given spell ID in $95, print spell name to $60F1 0x00BE34|$02:$BE24:18 CLC ; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A 0x00BE35|$02:$BE25:60 RTS ; copy [end-FA]-terminated string from $5A to $60F1 ; control flow target (from $BE1A) 0x00BE36|$02:$BE26:4C AE BE JMP $BEAE ; copy [end-FA]-terminated string from $5A to $60F1 ; copy $6119,X to $60F1,X until we read a #$FA ; control flow target (from $BE12) 0x00BE39|$02:$BE29:4C BC BE JMP $BEBC ; copy $6119,X to $60F1,X until we read a #$FA ; given monster count in $8F singular monster name in $6119, and monster name length in X, print appropriate singluar/plural monster name to $60F1 ; control flow target (from $BE06) ; call to code in a different bank ($0F:$FE97) 0x00BE3C|$02:$BE2C:20 97 FE JSR $FE97 ; read byte following JSR, parse it for bank and pointer index, execute ($8000,X) in selected bank, swap back in original bank ; code -> data ; indirect data load target 0x00BE3F|$02:$BE2F:E2 ; $07:$8004; -> $07:$87F1: given monster count in $8F singular monster name in $6119, and monster name length in X, print appropriate singluar/plural monster name to $60F1 ; data -> code 0x00BE40|$02:$BE30:60 RTS ; given monster count in $8F, print corresponding cardinal number to $60F1 ; control flow target (from $BE0A) 0x00BE41|$02:$BE31:4C F0 BE JMP $BEF0 ; given monster count in $8F, print corresponding cardinal number to $60F1 ; if $8F-$90 == #$0001, print "s" + [end-FA] to $60F1 and SEC, else LDA [end-FA] and CLC ; control flow target (from $BE1E) ; call to code in a different bank ($0F:$FE97) 0x00BE44|$02:$BE34:20 97 FE JSR $FE97 ; read byte following JSR, parse it for bank and pointer index, execute ($8000,X) in selected bank, swap back in original bank ; code -> data ; indirect data load target 0x00BE47|$02:$BE37:E3 ; $07:$8006; -> $07:$87D8: if $8F-$90 == #$0001, print "s" + [end-FA] to $60F1 and SEC, else LDA [end-FA] and CLC ; data -> code 0x00BE48|$02:$BE38:60 RTS ; print the number stored at $8F-$90 to $60F1 in decimal ; control flow target (from $BE0E) 0x00BE49|$02:$BE39:A9 05 LDA #$05 ; 16-bit binary input => at most 5 decimal digit output 0x00BE4B|$02:$BE3B:8D A0 60 STA $60A0 ; maximum string length 0x00BE4E|$02:$BE3E:A5 8F LDA $8F ; copy $8F-$90 to dividend address 0x00BE50|$02:$BE40:85 10 STA $10 0x00BE52|$02:$BE42:A5 90 LDA $90 0x00BE54|$02:$BE44:85 11 STA $11 0x00BE56|$02:$BE46:A9 00 LDA #$00 ; and set dividend byte 2 to #$00 0x00BE58|$02:$BE48:85 12 STA $12 ; call to code in a different bank ($0F:$F17C) 0x00BE5A|$02:$BE4A:20 7C F1 JSR $F17C ; given a 24-bit number N in $10-$12, print its base 10 digits in reverse to $0100 up to maximum string length $60A0 ; call to code in a different bank ($0F:$F18D) 0x00BE5D|$02:$BE4D:20 8D F1 JSR $F18D ; scan through $0100 + maximum string length $60A0 in reverse, replacing zeroes with spaces until the first non-zero or $0100 is reached; leaves X at most significant digit 0x00BE60|$02:$BE50:A0 00 LDY #$00 ; reverse little-endian $0100 into big-endian $60F1 ; control flow target (from $BE5A) 0x00BE62|$02:$BE52:BD 00 01 LDA $0100,X ; string copy buffer start (often referenced as $00FF,X) 0x00BE65|$02:$BE55:99 F1 60 STA $60F1,Y ; start of text variable buffer 0x00BE68|$02:$BE58:C8 INY 0x00BE69|$02:$BE59:CA DEX 0x00BE6A|$02:$BE5A:10 F6 BPL $BE52 ; keep looping until we reach $0100 ; write [end-FA] then RTS ; control flow target (from $BE84, $BEAB) 0x00BE6C|$02:$BE5C:A9 FA LDA #$FA ; [end-FA] 0x00BE6E|$02:$BE5E:99 F1 60 STA $60F1,Y ; start of text variable buffer 0x00BE71|$02:$BE61:38 SEC ; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A 0x00BE72|$02:$BE62:60 RTS ; print name of item ID in $95 to $60F1 ; control flow target (from $BE16) 0x00BE73|$02:$BE63:A9 00 LDA #$00 ; item list is stored in two segments; start with the first one 0x00BE75|$02:$BE65:8D AB 60 STA $60AB ; which list segment we're dealing with 0x00BE78|$02:$BE68:20 87 BE JSR $BE87 ; given item ID in $95, print item name segment to $0100 0x00BE7B|$02:$BE6B:20 CB BE JSR $BECB ; given length of string in $0100 in Y, copy that many bytes from $0100 to $60F1; transfer data from $FF,X to $60F1,Y 0x00BE7E|$02:$BE6E:A9 5F LDA #$5F ; Tile ID #$5F: [space] 0x00BE80|$02:$BE70:99 F1 60 STA $60F1,Y ; start of text variable buffer 0x00BE83|$02:$BE73:C8 INY 0x00BE84|$02:$BE74:98 TYA ; save the current write index for later 0x00BE85|$02:$BE75:48 PHA 0x00BE86|$02:$BE76:EE AB 60 INC $60AB ; which list segment we're dealing with 0x00BE89|$02:$BE79:20 87 BE JSR $BE87 ; given item ID in $95, print item name segment to $0100 0x00BE8C|$02:$BE7C:8C 84 60 STY $6084 ; length of string in $0100 0x00BE8F|$02:$BE7F:68 PLA ; restore write index to Y 0x00BE90|$02:$BE80:A8 TAY 0x00BE91|$02:$BE81:20 D0 BE JSR $BED0 ; given length of string in $0100 in $6084, copy that many bytes from $0100 to $60F1; transfer data from $FF,X to $60F1,Y 0x00BE94|$02:$BE84:4C 5C BE JMP $BE5C ; write [end-FA] then RTS ; given item ID in $95, print item name segment to $0100 ; control flow target (from $BE68, $BE79) 0x00BE97|$02:$BE87:A9 0D LDA #$0D ; max length of item name segment 0x00BE99|$02:$BE89:8D A0 60 STA $60A0 ; maximum string length 0x00BE9C|$02:$BE8C:A9 20 LDA #$20 0x00BE9E|$02:$BE8E:8D AA 60 STA $60AA ; menu format (#$80 = has cursor, #$40 = is linked, #$20 = is single spaced, #$02 = only display equipped items, #$01 = display [left border, equipped] if equipped) 0x00BEA1|$02:$BE91:A5 95 LDA $95 ; ID for [item] and [spell] control codes; item index 0x00BEA3|$02:$BE93:29 3F AND #$3F ; strip off equipped bit ; call to code in a different bank ($0F:$F2A7) 0x00BEA5|$02:$BE95:20 A7 F2 JSR $F2A7 ; print name of item ID in A to $0100 in reverse; depending on settings, possibly update menu's [left border] to [left border, equipped] 0x00BEA8|$02:$BE98:18 CLC 0x00BEA9|$02:$BE99:60 RTS ; given spell ID in $95, print spell name to $60F1 ; control flow target (from $BE22) 0x00BEAA|$02:$BE9A:A9 09 LDA #$09 ; max length of spell name 0x00BEAC|$02:$BE9C:8D A0 60 STA $60A0 ; maximum string length 0x00BEAF|$02:$BE9F:A5 95 LDA $95 ; ID for [item] and [spell] control codes; spell ID ; call to code in a different bank ($0F:$FE97) 0x00BEB1|$02:$BEA1:20 97 FE JSR $FE97 ; read byte following JSR, parse it for bank and pointer index, execute ($8000,X) in selected bank, swap back in original bank ; code -> data ; given spell ID in A, set A to spell name index ; indirect data load target 0x00BEB4|$02:$BEA4:D0 ; $06:$8020; -> $06:$AE4A: given spell ID in A, set A to spell name index ; data -> code ; call to code in a different bank ($0F:$F39F) 0x00BEB5|$02:$BEA5:20 9F F3 JSR $F39F ; given spell name index in A, print spell name to $0100 in reverse, set Y to length of string copied, then load bank specified by $60D7 (set by last call to $F3E2) 0x00BEB8|$02:$BEA8:20 CB BE JSR $BECB ; given length of string in $0100 in Y, copy that many bytes from $0100 to $60F1 0x00BEBB|$02:$BEAB:4C 5C BE JMP $BE5C ; write [end-FA] then RTS ; copy [end-FA]-terminated string from $5A to $60F1 ; control flow target (from $BE26) 0x00BEBE|$02:$BEAE:A2 00 LDX #$00 ; control flow target (from $BEB8) 0x00BEC0|$02:$BEB0:B5 5A LDA $5A,X ; Crest/direction name write buffer start 0x00BEC2|$02:$BEB2:9D F1 60 STA $60F1,X ; start of text variable buffer 0x00BEC5|$02:$BEB5:E8 INX 0x00BEC6|$02:$BEB6:C9 FA CMP #$FA ; [end-FA] 0x00BEC8|$02:$BEB8:D0 F6 BNE $BEB0 0x00BECA|$02:$BEBA:38 SEC ; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A 0x00BECB|$02:$BEBB:60 RTS ; copy $6119,X to $60F1,X until we read a #$FA ; OUT: X = string length + 1 ; from $07:$87F4 via $8016 ; control flow target (from $BE29) ; indirect control flow target (via $8016) 0x00BECC|$02:$BEBC:A2 00 LDX #$00 ; control flow target (from $BEC7) 0x00BECE|$02:$BEBE:BD 19 61 LDA $6119,X ; start of buffer for [monster(s)], [name], maybe more 0x00BED1|$02:$BEC1:9D F1 60 STA $60F1,X ; start of text variable buffer 0x00BED4|$02:$BEC4:E8 INX 0x00BED5|$02:$BEC5:C9 FA CMP #$FA ; [end-FA] 0x00BED7|$02:$BEC7:D0 F5 BNE $BEBE 0x00BED9|$02:$BEC9:38 SEC ; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A 0x00BEDA|$02:$BECA:60 RTS ; given length of string in $0100 in Y, copy that many bytes from $0100 to $60F1 ; control flow target (from $BE6B, $BEA8) 0x00BEDB|$02:$BECB:8C 84 60 STY $6084 ; length of string in $0100 0x00BEDE|$02:$BECE:A0 00 LDY #$00 ; given length of string in $0100 in $6084, copy that many bytes from $0100 to $60F1 ; control flow target (from $BE81) 0x00BEE0|$02:$BED0:AE 84 60 LDX $6084 ; length of string in $0100 0x00BEE3|$02:$BED3:F0 19 BEQ $BEEE ; if no string in $0100, DEY and RTS 0x00BEE5|$02:$BED5:A9 00 LDA #$00 ; number of bytes copied 0x00BEE7|$02:$BED7:85 10 STA $10 ; number of bytes copied 0x00BEE9|$02:$BED9:AE A0 60 LDX $60A0 ; maximum string length ; control flow target (from $BEEB) 0x00BEEC|$02:$BEDC:BD FF 00 LDA $00FF,X ; built-in offset from string copy buffer start at $0100 0x00BEEF|$02:$BEDF:99 F1 60 STA $60F1,Y ; start of text variable buffer 0x00BEF2|$02:$BEE2:CA DEX 0x00BEF3|$02:$BEE3:C8 INY 0x00BEF4|$02:$BEE4:E6 10 INC $10 ; number of bytes copied 0x00BEF6|$02:$BEE6:A5 10 LDA $10 ; number of bytes copied 0x00BEF8|$02:$BEE8:CD 84 60 CMP $6084 ; length of string in $0100 0x00BEFB|$02:$BEEB:D0 EF BNE $BEDC ; if more bytes to copy, copy them 0x00BEFD|$02:$BEED:60 RTS ; control flow target (from $BED3) 0x00BEFE|$02:$BEEE:88 DEY ; undo the space between item segments 0x00BEFF|$02:$BEEF:60 RTS ; given monster count in $8F, print corresponding cardinal number to $60F1 ; control flow target (from $BE31) 0x00BF00|$02:$BEF0:A4 8F LDY $8F ; number of monsters in group 0x00BF02|$02:$BEF2:88 DEY ; count from 0 instead of 1 0x00BF03|$02:$BEF3:84 10 STY $10 0x00BF05|$02:$BEF5:A2 00 LDX #$00 ; read index 0x00BF07|$02:$BEF7:A0 00 LDY #$00 ; write index ; control flow target (from $BF03, $BF09) 0x00BF09|$02:$BEF9:BD 0D BF LDA $BF0D,X ; Monster Counts text 0x00BF0C|$02:$BEFC:99 F1 60 STA $60F1,Y ; start of text variable buffer 0x00BF0F|$02:$BEFF:C8 INY 0x00BF10|$02:$BF00:E8 INX 0x00BF11|$02:$BF01:C9 FA CMP #$FA ; [end-FA] 0x00BF13|$02:$BF03:D0 F4 BNE $BEF9 ; if not end token, keep copying 0x00BF15|$02:$BF05:A0 00 LDY #$00 ; otherwise reset write index 0x00BF17|$02:$BF07:C6 10 DEC $10 ; update required number of end tokens 0x00BF19|$02:$BF09:10 EE BPL $BEF9 ; and if we still need more end tokens, loop 0x00BF1B|$02:$BF0B:38 SEC ; SEC to trigger read of [end-FA]-terminated string from $60F1, CLC to use A 0x00BF1C|$02:$BF0C:60 RTS ; code -> data ; Monster Counts text ; indexed data load target (from $BEF9) 0x00BF1D|$02:$BF0D:32 17 0E FA ; "One" + [end-FA] 0x00BF21|$02:$BF11:37 20 18 FA ; "Two" + [end-FA] 0x00BF25|$02:$BF15:37 11 1B 0E 0E FA ; "Three" + [end-FA] 0x00BF2B|$02:$BF1B:29 18 1E 1B FA ; "Four" + [end-FA] 0x00BF30|$02:$BF20:29 12 1F 0E FA ; "Five" + [end-FA] 0x00BF35|$02:$BF25:36 12 21 FA ; "Six" + [end-FA] 0x00BF39|$02:$BF29:36 0E 1F 0E 17 FA ; "Seven" + [end-FA] 0x00BF3F|$02:$BF2F:28 12 10 11 1D FA ; "Eight" + [end-FA] ; data -> free 0x00BF45|$02:$BF35:FF ; ... skipping $A1 FF bytes 0x00BFE7|$02:$BFD7:FF ; free -> unknown 0x00BFE8|$02:$BFD8:78 ; SEI 0x00BFE9|$02:$BFD9:EE DF BF ; INC $BFDF 0x00BFEA|$02:$BFDA:DF ; INVALID OPCODE 0x00BFEB|$02:$BFDB:BF ; INVALID OPCODE 0x00BFEC|$02:$BFDC:4C 86 FF ; JMP $FF86 0x00BFED|$02:$BFDD:86 FF ; STX $FF 0x00BFEE|$02:$BFDE:FF ; INVALID OPCODE 0x00BFEF|$02:$BFDF:80 ; INVALID OPCODE 0x00BFF0|$02:$BFE0:44 ; INVALID OPCODE 0x00BFF1|$02:$BFE1:52 ; INVALID OPCODE 0x00BFF2|$02:$BFE2:41 47 ; EOR ($47,X) 0x00BFF3|$02:$BFE3:47 ; INVALID OPCODE 0x00BFF4|$02:$BFE4:4F ; INVALID OPCODE 0x00BFF5|$02:$BFE5:4E 20 57 ; LSR $5720 0x00BFF6|$02:$BFE6:20 57 41 ; JSR $4157 0x00BFF7|$02:$BFE7:57 ; INVALID OPCODE 0x00BFF8|$02:$BFE8:41 52 ; EOR ($52,X) 0x00BFF9|$02:$BFE9:52 ; INVALID OPCODE 0x00BFFA|$02:$BFEA:52 ; INVALID OPCODE 0x00BFFB|$02:$BFEB:49 4F ; EOR #$4F 0x00BFFC|$02:$BFEC:4F ; INVALID OPCODE 0x00BFFD|$02:$BFED:52 ; INVALID OPCODE 0x00BFFE|$02:$BFEE:53 ; INVALID OPCODE 0x00BFFF|$02:$BFEF:32 ; INVALID OPCODE 0x00C000|$02:$BFF0:FF ; INVALID OPCODE 0x00C001|$02:$BFF1:FF ; INVALID OPCODE 0x00C002|$02:$BFF2:00 ; BRK 0x00C003|$02:$BFF3:00 ; BRK 0x00C004|$02:$BFF4:48 ; PHA 0x00C005|$02:$BFF5:04 ; INVALID OPCODE 0x00C006|$02:$BFF6:01 0F ; ORA ($0F,X) 0x00C007|$02:$BFF7:0F ; INVALID OPCODE 0x00C008|$02:$BFF8:07 ; INVALID OPCODE 0x00C009|$02:$BFF9:9D D8 BF ; STA $BFD8,X 0x00C00A|$02:$BFFA:D8 ; CLD 0x00C00B|$02:$BFFB:BF ; INVALID OPCODE 0x00C00C|$02:$BFFC:D8 ; CLD 0x00C00D|$02:$BFFD:BF ; INVALID OPCODE 0x00C00E|$02:$BFFE:D8 ; CLD ; unknown -> data 0x00C00F|$02:$BFFF:BF