diff options
| -rw-r--r-- | common/map.asm | 2369 | ||||
| -rw-r--r-- | main.asm | 2367 | 
2 files changed, 2370 insertions, 2366 deletions
| diff --git a/common/map.asm b/common/map.asm new file mode 100644 index 000000000..d4cfe1be9 --- /dev/null +++ b/common/map.asm @@ -0,0 +1,2369 @@ +; Functions dealing with rendering and interacting with maps. + +Function210f: ; 210f +	ld hl, $c7e8 +	ld bc, $0018 +	ld a, $0 +	call ByteFill +	ret +; 211b + +Function211b: ; 211b +	push hl +	ld hl, $dbf7 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	or h +	ld a, [hl] +	jr nz, .asm_2128 +	ld a, $ff + +.asm_2128 +	pop hl +	ret +; 212a + +Function212a: ; 212a +	ld a, [MapGroup] +	ld b, a +	ld a, [MapNumber] +	ld c, a +	xor a +	ld [$dbf7], a +	ld [$dbf8], a +	call Function2147 +	ret c +	ld a, e +	ld [$dbf7], a +	ld a, d +	ld [$dbf8], a +	xor a +	ret +; 2147 + +Function2147: ; 2147 +	push bc +	ld a, [hROMBank] +	push af +	ld a, $13 +	rst Bankswitch + +	ld hl, $501e +.asm_2151 +	push hl +	ld a, [hli] +	cp $ff +	jr z, .asm_2167 +	cp b +	jr nz, .asm_2160 +	ld a, [hli] +	cp c +	jr nz, .asm_2160 +	jr .asm_216a + +.asm_2160 +	pop hl +	ld de, $0004 +	add hl, de +	jr .asm_2151 + +.asm_2167 +	scf +	jr .asm_216d + +.asm_216a +	ld e, [hl] +	inc hl +	ld d, [hl] + +.asm_216d +	pop hl +	pop bc +	ld a, b +	rst Bankswitch + +	pop bc +	ret +; 2173 + +Function2173: ; 2173 +	call Function217a +	call Functiondb1 +	ret +; 217a + +Function217a: ; 217a +	ld a, [hROMBank] +	push af +	ld a, [TilesetBlocksBank] +	rst Bankswitch + +	call Function2198 +	ld a, $60 +	ld hl, TileMap +	ld bc, $0168 +	call ByteFill +	ld a, $13 +	rst Bankswitch + +	call $515b +	pop af +	rst Bankswitch + +	ret +; 2198 + +Function2198: ; 2198 +	ld a, [$d194] +	ld e, a +	ld a, [$d195] +	ld d, a +	ld hl, EnemyMoveAnimation +	ld b, $5 + +.asm_21a5 +	push de +	push hl +	ld c, $6 + +.asm_21a9 +	push de +	push hl +	ld a, [de] +	and a +	jr nz, .asm_21b2 +	ld a, [$d19d] + +.asm_21b2 +	ld e, l +	ld d, h +	add a +	ld l, a +	ld h, $0 +	add hl, hl +	add hl, hl +	add hl, hl +	ld a, [TilesetBlocksAddress] +	add l +	ld l, a +	ld a, [TilesetBlocksAddress + 1] +	adc h +	ld h, a + +rept 3 +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de + +	ld a, e +	add 20 +	ld e, a +	jr nc, .next\@ +	inc d +.next\@ +endr + +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de + +	pop hl +	ld de, $0004 +	add hl, de +	pop de +	inc de +	dec c +	jp nz, .asm_21a9 +	pop hl +	ld de, $0060 +	add hl, de +	pop de +	ld a, [$d19f] +	add $6 +	add e +	ld e, a +	jr nc, .asm_2225 +	inc d + +.asm_2225 +	dec b +	jp nz, .asm_21a5 +	ret +; 222a + +Function222a: ; 222a +	ld a, $fa +	ld [$ff9f], a +	callba Function15363 +	xor a +	ld [$ff9f], a +	ret +; 2238 + +Function2238: ; 2238 +	call Function2252 +	ret nc +	push bc +	callba Function149af +	pop bc +	ret nc +	call Function22a7 +	scf +	ret +; 224a + + + +Function224a: ; 224a +	call Function2252 +	ret nc +	call Function22a7 +	ret +; 2252 + +Function2252: ; 2252 +	callba Function1499a +	ret nc + +	ld a, [hROMBank] +	push af + +	call Function2c52 +	call Function2266 + +	pop de +	ld a, d +	rst Bankswitch +	ret +; 2266 + +Function2266: ; 2266 +	ld a, [MapY] +	sub $4 +	ld e, a +	ld a, [MapX] +	sub $4 +	ld d, a +	ld a, [$dbfb] +	and a +	ret z +	ld c, a +	ld hl, $dbfc +	ld a, [hli] +	ld h, [hl] +	ld l, a +.asm_227e +	push hl +	ld a, [hli] +	cp e +	jr nz, .asm_2289 +	ld a, [hli] +	cp d +	jr nz, .asm_2289 +	jr .asm_2296 + +.asm_2289 +	pop hl +	ld a, $5 +	add l +	ld l, a +	jr nc, .asm_2291 +	inc h + +.asm_2291 +	dec c +	jr nz, .asm_227e +	xor a +	ret + +.asm_2296 +	pop hl +	call Function22a3 +	ret nc +	ld a, [$dbfb] +	inc a +	sub c +	ld c, a +	scf +	ret +; 22a3 + +Function22a3: ; 22a3 +	inc hl +	inc hl +	scf +	ret +; 22a7 + +Function22a7: ; 22a7 +	ld a, [hROMBank] +	push af + +	call Function2c52 +	call Function22b4 + +	pop af +	rst Bankswitch +	scf +	ret +; 22b4 + +Function22b4: ; 22b4 +	push bc +	ld hl, $dbfc +	ld a, [hli] +	ld h, [hl] +	ld l, a +	ld a, c +	dec a +	ld bc, $0005 +	call AddNTimes +	ld bc, $0002 +	add hl, bc +	ld a, [hli] +	cp $ff +	jr nz, .asm_22d0 +	ld hl, $dcac +	ld a, [hli] + +.asm_22d0 +	pop bc +	ld [$d146], a +	ld a, [hli] +	ld [$d147], a +	ld a, [hli] +	ld [$d148], a +	ld a, c +	ld [$d149], a +	ld a, [MapGroup] +	ld [$d14a], a +	ld a, [MapNumber] +	ld [$d14b], a +	scf +	ret +; 22ee + + + +CheckOutdoorMap: ; 22ee +	cp ROUTE +	ret z +	cp TOWN +	ret +; 22f4 + +CheckIndoorMap: ; 22f4 +	cp INDOOR +	ret z +	cp CAVE +	ret z +	cp DUNGEON +	ret z +	cp GATE +	ret +; 2300 + +Function2300: ; 2300 +	cp INDOOR +	ret z +	cp GATE +	ret z +	cp $5 +	ret +; 2309 + + +Function2309: ; 2309 +	call Function2326 +	call Function2c52 +	call Function234f +	xor a +	call Function2336 +	ret +; 2317 + +Function2317: ; 2317 +	call Function2326 +	call Function2c52 +	call Function234f +	ld a, $1 +	call Function2336 +	ret +; 2326 + +Function2326: ; 2326 +	call Function2c3d +	call Function2c1c +	call GetSecondaryMapHeaderPointer +	call Function235c +	call Function2368 +	ret +; 2336 + +Function2336: ; 2336 +	push af +	ld hl, $d1a6 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	inc hl +	inc hl +	call Function23da +	call Function23f1 +	call Function2408 +	pop af +	and a +	ret nz +	call Function241f +	ret +; 234f + +Function234f: ; 234f +	ld hl, $d1a4 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	call Function23ac +	call Function23c3 +	ret +; 235c + +Function235c: ; 235c +	ld de, $d19d +	ld c, $c +.asm_2361 +	ld a, [hli] +	ld [de], a +	inc de +	dec c +	jr nz, .asm_2361 +	ret +; 2368 + +Function2368: ; 2368 +	ld a, $ff +	ld [NorthConnectedMapGroup], a +	ld [SouthConnectedMapGroup], a +	ld [WestConnectedMapGroup], a +	ld [EastConnectedMapGroup], a + +	ld a, [$d1a8] +	ld b, a + +	bit 3, b +	jr z, .asm_2384 +	ld de, NorthMapConnection +	call GetMapConnection + +.asm_2384 +	bit 2, b +	jr z, .asm_238e +	ld de, SouthMapConnection +	call GetMapConnection + +.asm_238e +	bit 1, b +	jr z, .asm_2398 +	ld de, WestMapConnection +	call GetMapConnection + +.asm_2398 +	bit 0, b +	jr z, .asm_23a2 +	ld de, EastMapConnection +	call GetMapConnection + +.asm_23a2 +	ret +; 23a3 + + +GetMapConnection: ; 23a3 +; Load map connection struct at hl into de. +	ld c, SouthMapConnection - NorthMapConnection +.loop +	ld a, [hli] +	ld [de], a +	inc de +	dec c +	jr nz, .loop +	ret +; 23ac + + +Function23ac: ; 23ac +	ld a, [hli] +	ld c, a +	ld [$dc07], a +	ld a, l +	ld [$dc08], a +	ld a, h +	ld [$dc09], a +	ld a, c +	and a +	ret z +	ld bc, $0004 +	call AddNTimes +	ret +; 23c3 + +Function23c3: ; 23c3 +	ld a, [hli] +	ld c, a +	ld [$dc0a], a +	ld a, l +	ld [$dc0b], a +	ld a, h +	ld [$dc0c], a +	ld a, c +	and a +	ret z +	ld bc, $0003 +	call AddNTimes +	ret +; 23da + +Function23da: ; 23da +	ld a, [hli] +	ld c, a +	ld [$dbfb], a +	ld a, l +	ld [$dbfc], a +	ld a, h +	ld [$dbfd], a +	ld a, c +	and a +	ret z +	ld bc, $0005 +	call AddNTimes +	ret +; 23f1 + +Function23f1: ; 23f1 +	ld a, [hli] +	ld c, a +	ld [$dbfe], a +	ld a, l +	ld [$dbff], a +	ld a, h +	ld [$dc00], a +	ld a, c +	and a +	ret z +	ld bc, $0008 +	call AddNTimes +	ret +; 2408 + +Function2408: ; 2408 +	ld a, [hli] +	ld c, a +	ld [$dc01], a +	ld a, l +	ld [$dc02], a +	ld a, h +	ld [$dc03], a +	ld a, c +	and a +	ret z +	ld bc, $0005 +	call AddNTimes +	ret +; 241f + +Function241f: ; 241f +	push hl +	call Function2471 +	pop de +	ld hl, $d72e +	ld a, [de] +	inc de +	ld [$dc04], a +	ld a, e +	ld [$dc05], a +	ld a, d +	ld [$dc06], a +	ld a, [$dc04] +	call Function2457 +	ld a, [$dc04] +	ld c, a +	ld a, $10 +	sub c +	jr z, .asm_2454 +	ld bc, $0001 +	add hl, bc +	ld bc, $0010 +.asm_244a +	ld [hl], $0 +	inc hl +	ld [hl], $ff +	dec hl +	add hl, bc +	dec a +	jr nz, .asm_244a + +.asm_2454 +	ld h, d +	ld l, e +	ret +; 2457 + +Function2457: ; 2457 +	and a +	ret z +	ld c, a +.asm_245a +	push bc +	push hl +	ld a, $ff +	ld [hli], a +	ld b, $d +.asm_2461 +	ld a, [de] +	inc de +	ld [hli], a +	dec b +	jr nz, .asm_2461 +	pop hl +	ld bc, $0010 +	add hl, bc +	pop bc +	dec c +	jr nz, .asm_245a +	ret +; 2471 + +Function2471: ; 2471 +	ld hl, $d4fe +	ld bc, $01e0 +	xor a +	call ByteFill +	ld hl, $d4fe +	ld de, $0028 +	ld c, $c +	xor a +.asm_2484 +	ld [hl], a +	add hl, de +	dec c +	jr nz, .asm_2484 +	ret +; 248a + +Function248a: ; 248a +	call GetMapEventBank +	rst Bankswitch + +	ld hl, $d1a6 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	inc hl +	inc hl +	inc hl +	ld a, [WarpNumber] +	dec a +	ld c, a +	ld b, $0 +	ld a, $5 +	call AddNTimes +	ld a, [hli] +	ld [YCoord], a +	ld a, [hli] +	ld [XCoord], a +	ld a, [hli] +	cp $ff +	jr nz, .asm_24b3 +	call Function24ba + +.asm_24b3 +	ld a, $41 +	ld hl, $486d +	rst FarCall +	ret +; 24ba + +Function24ba: ; 24ba +	ld a, [$d149] +	ld [$dcac], a +	ld a, [$d14a] +	ld [BackupMapGroup], a +	ld a, [$d14b] +	ld [BackupMapNumber], a +	ret +; 24cd + +Function24cd: ; 24cd +	ld hl, OverworldMap +	ld bc, $0514 +	ld a, $0 +	call ByteFill +	call Function24e4 +	call FillMapConnections +	ld a, $1 +	call Function263b +	ret +; 24e4 + + + +Function24e4: ; 24e4 +	ld a, [hROMBank] +	push af +	ld hl, OverworldMap +	ld a, [$d19f] +	ld [hConnectedMapWidth], a +	add $6 +	ld [hConnectionStripLength], a +	ld c, a +	ld b, $0 +	add hl, bc +	add hl, bc +	add hl, bc +	ld c, $3 +	add hl, bc +	ld a, [$d1a0] +	rst Bankswitch + +	ld a, [$d1a1] +	ld e, a +	ld a, [$d1a2] +	ld d, a +	ld a, [$d19e] +	ld b, a +.asm_250c +	push hl +	ld a, [hConnectedMapWidth] +	ld c, a +.asm_2510 +	ld a, [de] +	inc de +	ld [hli], a +	dec c +	jr nz, .asm_2510 +	pop hl +	ld a, [hConnectionStripLength] +	add l +	ld l, a +	jr nc, .asm_251e +	inc h + +.asm_251e +	dec b +	jr nz, .asm_250c +	pop af +	rst Bankswitch + +	ret +; 2524 + + + +FillMapConnections: ; 2524 + +; North +	ld a, [NorthConnectedMapGroup] +	cp $ff +	jr z, .South +	ld b, a +	ld a, [NorthConnectedMapNumber] +	ld c, a +	call GetAnyMapBlockdataBank + +	ld a, [NorthConnectionStripPointer] +	ld l, a +	ld a, [NorthConnectionStripPointer + 1] +	ld h, a +	ld a, [NorthConnectionStripLocation] +	ld e, a +	ld a, [NorthConnectionStripLocation + 1] +	ld d, a +	ld a, [NorthConnectionStripLength] +	ld [hConnectionStripLength], a +	ld a, [NorthConnectedMapWidth] +	ld [hConnectedMapWidth], a +	call FillNorthConnectionStrip + +.South +	ld a, [SouthConnectedMapGroup] +	cp $ff +	jr z, .West +	ld b, a +	ld a, [SouthConnectedMapNumber] +	ld c, a +	call GetAnyMapBlockdataBank + +	ld a, [SouthConnectionStripPointer] +	ld l, a +	ld a, [SouthConnectionStripPointer + 1] +	ld h, a +	ld a, [SouthConnectionStripLocation] +	ld e, a +	ld a, [SouthConnectionStripLocation + 1] +	ld d, a +	ld a, [SouthConnectionStripLength] +	ld [hConnectionStripLength], a +	ld a, [SouthConnectedMapWidth] +	ld [hConnectedMapWidth], a +	call FillSouthConnectionStrip + +.West +	ld a, [WestConnectedMapGroup] +	cp $ff +	jr z, .East +	ld b, a +	ld a, [WestConnectedMapNumber] +	ld c, a +	call GetAnyMapBlockdataBank + +	ld a, [WestConnectionStripPointer] +	ld l, a +	ld a, [WestConnectionStripPointer + 1] +	ld h, a +	ld a, [WestConnectionStripLocation] +	ld e, a +	ld a, [WestConnectionStripLocation + 1] +	ld d, a +	ld a, [WestConnectionStripLength] +	ld b, a +	ld a, [WestConnectedMapWidth] +	ld [hConnectionStripLength], a +	call FillWestConnectionStrip + +.East +	ld a, [EastConnectedMapGroup] +	cp $ff +	jr z, .Done +	ld b, a +	ld a, [EastConnectedMapNumber] +	ld c, a +	call GetAnyMapBlockdataBank + +	ld a, [EastConnectionStripPointer] +	ld l, a +	ld a, [EastConnectionStripPointer + 1] +	ld h, a +	ld a, [EastConnectionStripLocation] +	ld e, a +	ld a, [EastConnectionStripLocation + 1] +	ld d, a +	ld a, [EastConnectionStripLength] +	ld b, a +	ld a, [EastConnectedMapWidth] +	ld [hConnectionStripLength], a +	call FillEastConnectionStrip + +.Done +	ret +; 25d3 + + +FillNorthConnectionStrip: +FillSouthConnectionStrip: ; 25d3 + +	ld c, 3 +.y +	push de + +	push hl +	ld a, [hConnectionStripLength] +	ld b, a +.x +	ld a, [hli] +	ld [de], a +	inc de +	dec b +	jr nz, .x +	pop hl + +	ld a, [hConnectedMapWidth] +	ld e, a +	ld d, 0 +	add hl, de +	pop de + +	ld a, [$d19f] +	add 6 +	add e +	ld e, a +	jr nc, .asm_25f2 +	inc d +.asm_25f2 +	dec c +	jr nz, .y +	ret +; 25f6 + + +FillWestConnectionStrip: +FillEastConnectionStrip: ; 25f6 + +.asm_25f6 +	ld a, [$d19f] +	add 6 +	ld [hConnectedMapWidth], a + +	push de + +	push hl +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hli] +	ld [de], a +	inc de +	pop hl + +	ld a, [hConnectionStripLength] +	ld e, a +	ld d, 0 +	add hl, de +	pop de + +	ld a, [hConnectedMapWidth] +	add e +	ld e, a +	jr nc, .asm_2617 +	inc d +.asm_2617 +	dec b +	jr nz, .asm_25f6 +	ret +; 261b + +Function261b: ; 261b +	ld [$d432], a +	ret +; 261f + + +CallScript: ; 261f +; Call a script at a:hl. + +	ld [ScriptBank], a +	ld a, l +	ld [ScriptPos], a +	ld a, h +	ld [ScriptPos + 1], a + +	ld a, $ff +	ld [ScriptRunning], a + +	scf +	ret +; 2631 + +Function2631: ; 2631 +	ld a, [ScriptRunning] +	and a +	ret nz +	call GetMapEventBank +	jr CallScript +; 263b + +Function263b: ; 263b +	ld b, a +	ld a, [hROMBank] +	push af +	call Function2c52 +	call Function2653 +	jr nc, .done + +	call GetMapEventBank +	ld b, a +	ld d, h +	ld e, l +	call Function2674 + +.done +	pop af +	rst Bankswitch +	ret +; 2653 + +Function2653: ; 2653 +	ld a, [$dc0a] +	ld c, a +	and a +	ret z +	ld hl, $dc0b +	ld a, [hli] +	ld h, [hl] +	ld l, a +	or h +	ret z +	ld de, $0003 +.asm_2664 +	ld a, [hl] +	cp b +	jr z, .asm_266e +	add hl, de +	dec c +	jr nz, .asm_2664 +	xor a +	ret + +.asm_266e +	inc hl +	ld a, [hli] +	ld h, [hl] +	ld l, a +	scf +	ret +; 2674 + +Function2674: ; 2674 +	callba Unknown_0x974f3 +	ld a, [ScriptMode] +	push af +	ld hl, ScriptFlags +	ld a, [hl] +	push af +	set 1, [hl] +	callba Function96c56 +	callba ScriptEvents +	pop af +	ld [ScriptFlags], a +	pop af +	ld [ScriptMode], a +	ret +; 269a + +Function269a: ; 269a +	ld a, [hROMBank] +	push af +	ld a, b +	rst Bankswitch + +	push hl +	call SpeechTextBox +	call Function2e31 +	ld a, 1 +	ld [hOAMUpdate], a +	call Function321c +	pop hl +	call PrintTextBoxText +	xor a +	ld [hOAMUpdate], a +	pop af +	rst Bankswitch + +	ret +; 26b7 + +Function26b7: ; 26b7 +; Call a:de. + +	ld [hBuffer], a +	ld a, [hROMBank] +	push af +	ld a, [hBuffer] +	rst Bankswitch + +	call .de + +	pop af +	rst Bankswitch +	ret + +.de +	push de +	ret +; 26c7 + +Function26c7: ; 26c7 +	ld a, [hROMBank] +	push af +	ld a, b +	rst Bankswitch + +	ld a, c +	call Function19e9 + +	pop hl +	ld a, h +	rst Bankswitch +	ret +; 26d4 + + +GetScriptByte: ; 0x26d4 +; Return byte at ScriptBank:ScriptPos in a. + +	push hl +	push bc +	ld a, [hROMBank] +	push af +	ld a, [ScriptBank] +	rst Bankswitch + +	ld hl, ScriptPos +	ld c, [hl] +	inc hl +	ld b, [hl] + +	ld a, [bc] + +	inc bc +	ld [hl], b +	dec hl +	ld [hl], c + +	ld b, a +	pop af +	rst Bankswitch +	ld a, b +	pop bc +	pop hl +	ret +; 0x26ef + + +ObjectEvent: ; 0x26ef +	jumptextfaceplayer ObjectEventText +; 0x26f2 + +ObjectEventText: +	TX_FAR _ObjectEventText +	db "@" +; 0x26f7 + + +BGEvent: ; 26f7 +	jumptext BGEventText +; 26fa + +BGEventText: ; 26fa +	text_jump UnknownText_0x1c46fc, BANK(UnknownText_0x1c46fc) +	db "@" +; 26ff + + +CoordinatesEvent: ; 26ff +	jumptext CoordinatesEventText +; 2702 + +CoordinatesEventText: ; 2702 +	text_jump UnknownText_0x1c4706, BANK(UnknownText_0x1c4706) +	db "@" +; 2707 + + +Function2707: ; 2707 +	ld a, [hConnectionStripLength] +	ld e, a +	ld d, $0 +	ld hl, $d81e +	add hl, de +	ld a, [hl] +	ret +; 2712 + +Function2712: ; 2712 +	ld a, [hConnectionStripLength] +	ld e, a +	ld d, $0 +	ld hl, $d81e +	add hl, de +	ld [hl], $ff +	ret +; 271e + +Function271e: ; 271e +	ld a, [hConnectionStripLength] +	ld e, a +	ld d, $0 +	ld hl, $d81e +	add hl, de +	ld [hl], $0 +	ret +; 272a + + +Function272a: ; 272a +	ld hl, TileMap +	ld de, BGMapBuffer +	call Function27b7 +	ld c, $28 +	call Functiondbd +	ld a, [$d152] +	ld e, a +	ld a, [$d153] +	ld d, a +	call Function27d3 +	ld a, $1 +	ld [hBGMapUpdate], a +	ret +; 2748 + +Function2748: ; 2748 +	ld hl, $c5e0 +	ld de, BGMapBuffer +	call Function27b7 +	ld c, $28 +	call Functiondbd +	ld a, [$d152] +	ld l, a +	ld a, [$d153] +	ld h, a +	ld bc, $0200 +	add hl, bc +	ld a, h +	and $3 +	or $98 +	ld e, l +	ld d, a +	call Function27d3 +	ld a, $1 +	ld [hBGMapUpdate], a +	ret +; 2771 + +Function2771: ; 2771 +	ld hl, TileMap +	ld de, BGMapBuffer +	call Function27c0 +	ld c, $24 +	call Functiondbd +	ld a, [$d152] +	ld e, a +	ld a, [$d153] +	ld d, a +	call Function27f8 +	ld a, $1 +	ld [hBGMapUpdate], a +	ret +; 278f + +Function278f: ; 278f +	ld hl, $c4b2 +	ld de, BGMapBuffer +	call Function27c0 +	ld c, $24 +	call Functiondbd +	ld a, [$d152] +	ld e, a +	and $e0 +	ld b, a +	ld a, e +	add $12 +	and $1f +	or b +	ld e, a +	ld a, [$d153] +	ld d, a +	call Function27f8 +	ld a, $1 +	ld [hBGMapUpdate], a +	ret +; 27b7 + +Function27b7: ; 27b7 +	ld c, $28 +.asm_27b9 +	ld a, [hli] +	ld [de], a +	inc de +	dec c +	jr nz, .asm_27b9 +	ret +; 27c0 + +Function27c0: ; 27c0 +	ld c, $12 +.asm_27c2 +	ld a, [hli] +	ld [de], a +	inc de +	ld a, [hl] +	ld [de], a +	inc de +	ld a, $13 +	add l +	ld l, a +	jr nc, .asm_27cf +	inc h + +.asm_27cf +	dec c +	jr nz, .asm_27c2 +	ret +; 27d3 + +Function27d3: ; 27d3 +	ld hl, BGMapBufferPtrs +	push de +	call .asm_27df +	pop de +	ld a, $20 +	add e +	ld e, a + +.asm_27df +	ld c, $a +.asm_27e1 +	ld a, e +	ld [hli], a +	ld a, d +	ld [hli], a +	ld a, e +	inc a +	inc a +	and $1f +	ld b, a +	ld a, e +	and $e0 +	or b +	ld e, a +	dec c +	jr nz, .asm_27e1 +	ld a, $14 +	ld [$ffdc], a +	ret +; 27f8 + +Function27f8: ; 27f8 +	ld hl, BGMapBufferPtrs +	ld c, $12 +.asm_27fd +	ld a, e +	ld [hli], a +	ld a, d +	ld [hli], a +	ld a, $20 +	add e +	ld e, a +	jr nc, .asm_280e +	inc d +	ld a, d +	and $3 +	or $98 +	ld d, a + +.asm_280e +	dec c +	jr nz, .asm_27fd +	ld a, $12 +	ld [$ffdc], a +	ret +; 2816 + +Function2816: ; 2816 +	ld hl, BGMapBuffer +	ld bc, $0078 +	xor a +	call ByteFill +	ret +; 2821 + +Function2821: ; 2821 +	ld hl, TilesetAddress +	ld a, [hli] +	ld h, [hl] +	ld l, a +	ld a, [TilesetBank] +	ld e, a +	ld a, [rSVBK] +	push af +	ld a, $6 +	ld [rSVBK], a +	ld a, e +	ld de, $d000 +	call FarDecompress +	ld hl, $d000 +	ld de, VTiles2 +	ld bc, $0600 +	call CopyBytes +	ld a, [rVBK] +	push af +	ld a, $1 +	ld [rVBK], a +	ld hl, $d600 +	ld de, VTiles2 +	ld bc, $0600 +	call CopyBytes +	pop af +	ld [rVBK], a +	pop af +	ld [rSVBK], a +	ld a, [$d199] +	cp $1 +	jr z, .asm_286f +	cp $2 +	jr z, .asm_286f +	cp $4 +	jr z, .asm_286f +	jr .asm_2875 + +.asm_286f +	ld a, $7 +	ld hl, $4000 +	rst FarCall + +.asm_2875 +	xor a +	ld [hTileAnimFrame], a +	ret +; 2879 + +Function2879: ; 2879 +	ld hl, $d194 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	ld de, $dcb9 +	ld c, $5 +	ld b, $6 +.asm_2886 +	push bc +	push hl +.asm_2888 +	ld a, [hli] +	ld [de], a +	inc de +	dec b +	jr nz, .asm_2888 +	pop hl +	ld a, [$d19f] +	add $6 +	ld c, a +	ld b, $0 +	add hl, bc +	pop bc +	dec c +	jr nz, .asm_2886 +	ret +; 289d + +Function289d: ; 289d +	ld hl, $d194 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	ld de, $dcb9 +	ld a, [$d19f] +	add $6 +	ld [hConnectionStripLength], a +	ld a, [$d151] +	and a +	jr z, .asm_28cb +	cp $1 +	jr z, .asm_28c0 +	cp $2 +	jr z, .asm_28d4 +	cp $3 +	jr z, .asm_28da +	ret + +.asm_28c0 +	ld de, $dcbf +	ld a, [hConnectionStripLength] +	ld c, a +	ld b, $0 +	add hl, bc +	jr .asm_28ce + +.asm_28cb +	ld de, $dcb9 + +.asm_28ce +	ld b, $6 +	ld c, $4 +	jr .asm_28f7 + +.asm_28d4 +	ld de, $dcba +	inc hl +	jr .asm_28dd + +.asm_28da +	ld de, $dcb9 + +.asm_28dd +	ld b, $5 +	ld c, $5 +	jr .asm_28f7 + +	ld hl, $d194 +	ld a, [hli] +	ld h, [hl] +	ld l, a +	ld a, [$d19f] +	add $6 +	ld [hConnectionStripLength], a +	ld de, $dcb9 +	ld b, $6 +	ld c, $5 + +.asm_28f7 +	push bc +	push hl +	push de +.asm_28fa +	ld a, [de] +	inc de +	ld [hli], a +	dec b +	jr nz, .asm_28fa +	pop de +	ld a, e +	add $6 +	ld e, a +	jr nc, .asm_2908 +	inc d + +.asm_2908 +	pop hl +	ld a, [hConnectionStripLength] +	ld c, a +	ld b, $0 +	add hl, bc +	pop bc +	dec c +	jr nz, .asm_28f7 +	ret +; 2914 + +Function2914: ; 2914 +	xor a +	ld [TilePermissions], a +	call Function296c +	call Function294d +	ld a, [MapX] +	ld d, a +	ld a, [MapY] +	ld e, a +	call Function2a3c +	ld [StandingTile], a +	call Function29ff +	ret nz +	ld a, [StandingTile] +	and 7 +	ld hl, .data_2945 +	add l +	ld l, a +	ld a, 0 +	adc h +	ld h, a +	ld a, [hl] +	ld hl, TilePermissions +	or [hl] +	ld [hl], a +	ret +; 2945 + +.data_2945 ; 2945 +	db 1, 2, 4, 8, 9, 10, 5, 6 +; 294d + +Function294d: ; 294d +	ld a, [MapX] +	ld d, a +	ld a, [MapY] +	ld e, a +	push de +	inc e +	call Function2a3c +	ld [TileDown], a +	call Function298b +	pop de +	dec e +	call Function2a3c +	ld [TileUp], a +	call Function29a8 +	ret +; 296c + +Function296c: ; 296c +	ld a, [MapX] +	ld d, a +	ld a, [MapY] +	ld e, a +	push de +	dec d +	call Function2a3c +	ld [TileLeft], a +	call Function29e2 +	pop de +	inc d +	call Function2a3c +	ld [TileRight], a +	call Function29c5 +	ret +; 298b + +Function298b: ; 298b +	call Function29ff +	ret nz +	ld a, [TileDown] +	and $7 +	cp $2 +	jr z, .asm_299f +	cp $6 +	jr z, .asm_299f +	cp $7 +	ret nz + +.asm_299f +	ld a, [TilePermissions] +	or $8 +	ld [TilePermissions], a +	ret +; 29a8 + +Function29a8: ; 29a8 +	call Function29ff +	ret nz +	ld a, [TileUp] +	and $7 +	cp $3 +	jr z, .asm_29bc +	cp $4 +	jr z, .asm_29bc +	cp $5 +	ret nz + +.asm_29bc +	ld a, [TilePermissions] +	or $4 +	ld [TilePermissions], a +	ret +; 29c5 + +Function29c5: ; 29c5 +	call Function29ff +	ret nz +	ld a, [TileRight] +	and $7 +	cp $1 +	jr z, .asm_29d9 +	cp $5 +	jr z, .asm_29d9 +	cp $7 +	ret nz + +.asm_29d9 +	ld a, [TilePermissions] +	or $1 +	ld [TilePermissions], a +	ret +; 29e2 + +Function29e2: ; 29e2 +	call Function29ff +	ret nz +	ld a, [TileLeft] +	and $7 +	cp $0 +	jr z, .asm_29f6 +	cp $4 +	jr z, .asm_29f6 +	cp $6 +	ret nz + +.asm_29f6 +	ld a, [TilePermissions] +	or $2 +	ld [TilePermissions], a +	ret +; 29ff + +Function29ff: ; 29ff +	and $f0 +	cp $b0 +	ret z +	cp $c0 +	ret +; 2a07 + + +GetFacingTileCoord: ; 2a07 +; Return map coordinates in (d, e) and tile id in a +; of the tile the player is facing. + +	ld a, [PlayerDirection] +	and %1100 +	srl a +	srl a +	ld l, a +	ld h, 0 +	add hl, hl +	add hl, hl +	ld de, .Directions +	add hl, de + +	ld d, [hl] +	inc hl +	ld e, [hl] +	inc hl + +	ld a, [hli] +	ld h, [hl] +	ld l, a + +	ld a, [MapX] +	add d +	ld d, a +	ld a, [MapY] +	add e +	ld e, a +	ld a, [hl] +	ret + +.Directions +	;   x,  y +	db  0,  1 +	dw TileDown +	db  0, -1 +	dw TileUp +	db -1,  0 +	dw TileLeft +	db  1,  0 +	dw TileRight +; 2a3c + + +Function2a3c: ; 2a3c +	call Function2a66 +	ld a, [hl] +	and a +	jr z, .asm_2a63 +	ld l, a +	ld h, $0 +	add hl, hl +	add hl, hl +	ld a, [TilesetCollisionAddress] +	ld c, a +	ld a, [$d1e1] +	ld b, a +	add hl, bc +	rr d +	jr nc, .asm_2a56 +	inc hl + +.asm_2a56 +	rr e +	jr nc, .asm_2a5c +	inc hl +	inc hl + +.asm_2a5c +	ld a, [TilesetCollisionBank] +	call GetFarByte +	ret + +.asm_2a63 +	ld a, $ff +	ret +; 2a66 + +Function2a66: ; 2a66 +	ld a, [$d19f] +	add $6 +	ld c, a +	ld b, $0 +	ld hl, $c801 +	add hl, bc +	ld a, e +	srl a +	jr z, .asm_2a84 +	and a +.asm_2a78 +	srl a +	jr nc, .asm_2a7d +	add hl, bc + +.asm_2a7d +	sla c +	rl b +	and a +	jr nz, .asm_2a78 + +.asm_2a84 +	ld c, d +	srl c +	ld b, $0 +	add hl, bc +	ret +; 2a8b + + +CheckFacingSign: ; 2a8b +	call GetFacingTileCoord +	ld b, a +	ld a, d +	sub 4 +	ld d, a +	ld a, e +	sub 4 +	ld e, a +	ld a, [$dc01] +	and a +	ret z +	ld c, a +	ld a, [hROMBank] +	push af +	call Function2c52 +	call Function2aaa +	pop hl +	ld a, h +	rst Bankswitch +	ret +; 2aaa + +Function2aaa: ; 2aaa +	ld hl, $dc02 +	ld a, [hli] +	ld h, [hl] +	ld l, a +.asm_2ab0 +	push hl +	ld a, [hli] +	cp e +	jr nz, .asm_2abb +	ld a, [hli] +	cp d +	jr nz, .asm_2abb +	jr .asm_2ac8 + +.asm_2abb +	pop hl +	ld a, 5 +	add l +	ld l, a +	jr nc, .asm_2ac3 +	inc h + +.asm_2ac3 +	dec c +	jr nz, .asm_2ab0 +	xor a +	ret + +.asm_2ac8 +	pop hl +	ld de, EngineBuffer1 +	ld bc, 5 +	call CopyBytes +	scf +	ret +; 2ad4 + +Function2ad4: ; 2ad4 +	ld a, [$dbfe] +	and a +	ret z +	ld c, a +	ld a, [hROMBank] +	push af +	call Function2c52 +	call Function2ae7 +	pop hl +	ld a, h +	rst Bankswitch +	ret +; 2ae7 + +Function2ae7: ; 2ae7 +	ld hl, $dbff +	ld a, [hli] +	ld h, [hl] +	ld l, a +	call Function211b +	ld b, a +	ld a, [MapX] +	sub $4 +	ld d, a +	ld a, [MapY] +	sub $4 +	ld e, a +.asm_2afd +	push hl +	ld a, [hli] +	cp b +	jr z, .asm_2b06 +	cp $ff +	jr nz, .asm_2b10 + +.asm_2b06 +	ld a, [hli] +	cp e +	jr nz, .asm_2b10 +	ld a, [hli] +	cp d +	jr nz, .asm_2b10 +	jr .asm_2b1d + +.asm_2b10 +	pop hl +	ld a, $8 +	add l +	ld l, a +	jr nc, .asm_2b18 +	inc h + +.asm_2b18 +	dec c +	jr nz, .asm_2afd +	xor a +	ret + +.asm_2b1d +	pop hl +	ld de, EngineBuffer1 +	ld bc, $0008 +	call CopyBytes +	scf +	ret +; 2b29 + + +FadeToMenu: ; 2b29 +	xor a +	ld [hBGMapMode], a +	call Function1d6e +	ld a, $23 +	ld hl, $4084 +	rst FarCall +	call ClearSprites +	call Function2ed3 +	ret +; 2b3c + + +Function2b3c: ; 2b3c +	call WhiteBGMap +	call Function2bae +	call Function1ad2 +	call Function1d7d +	call Functiond90 +	jr Function2b5c +; 2b4d + +Function2b4d: ; 2b4d +	call WhiteBGMap +	call Function1d7d +	call Function2bae +	call Function1ad2 +	call Functiond90 +; 2b5c + +Function2b5c: ; 2b5c +	ld b, $9 +	call GetSGBLayout +	ld a, $12 +	ld hl, $5409 +	rst FarCall +	call Function3200 +	ld a, $23 +	ld hl, $4079 +	rst FarCall +	call Function2ee4 +	ret +; 2b74 + + +Function2b74: ; 0x2b74 +	push af +	ld a, $1 +	ld [$c2ce], a +	call WhiteBGMap +	call ClearSprites +	call Function2bae +	ld hl, $c590 ; tile 0, 12 +	ld bc, $0412 +	call TextBox +	ld hl, VramState +	set 0, [hl] +	call Function1ad2 +	call Function3200 +	ld b, $9 +	call GetSGBLayout +	callba Function49409 +	call UpdateTimePals +	call DelayFrame +	ld a, $1 +	ld [$ffde], a +	pop af +	ret +; 0x2bae + +Function2bae: ; 2bae +	call DisableLCD +	call ClearSprites +	ld a, $5 +	ld hl, $4168 +	rst FarCall +	call Functione51 +	call Functione5f +	ld a, [hROMBank] +	push af +	ld a, [MapGroup] +	ld b, a +	ld a, [MapNumber] +	ld c, a +	call Function2c24 +	ld a, $23 +	ld hl, $4001 +	rst FarCall +	call Function2173 +	call Function2821 +	ld a, $9 +	call Function3cb4 +	pop af +	rst Bankswitch + +	call EnableLCD +	ret +; 2be5 + + +GetMapHeaderPointer: ; 2be5 +	ld a, [MapGroup] +	ld b, a +	ld a, [MapNumber] +	ld c, a +; 2bed + +GetAnyMapHeaderPointer: ; 0x2bed +; Prior to calling this function, you must have switched banks so that +; MapGroupPointers is visible. + +; inputs: +; b = map group, c = map number +; XXX de = ??? + +; outputs: +; hl points to the map header +	push bc ; save map number for later + +	; get pointer to map group +	dec b +	ld c, b +	ld b, $0 +	ld hl, MapGroupPointers +	add hl, bc +	add hl, bc + +	ld a, [hli] +	ld h, [hl] +	ld l, a +	pop bc ; restore map number + +	; find the cth map header +	dec c +	ld b, $0 +	ld a, OlivineGym_MapHeader - OlivinePokeCenter1F_MapHeader +	call AddNTimes +	ret +; 0x2c04 + +GetMapHeaderMember: ; 0x2c04 +; Extract data from the current map's header. + +; inputs: +; de = offset of desired data within the mapheader + +; outputs: +; bc = data from the current map's header +; (e.g., de = $0003 would return a pointer to the secondary map header) + +	ld a, [MapGroup] +	ld b, a +	ld a, [MapNumber] +	ld c, a +	; fallthrough + +GetAnyMapHeaderMember: ; 0x2c0c +	; bankswitch +	ld a, [hROMBank] +	push af +	ld a, BANK(MapGroupPointers) +	rst Bankswitch + +	call GetAnyMapHeaderPointer +	add hl, de +	ld c, [hl] +	inc hl +	ld b, [hl] + +	; bankswitch back +	pop af +	rst Bankswitch +	ret +; 0x2c1c + + +Function2c1c: ; 2c1c +	ld a, [MapGroup] +	ld b, a +	ld a, [MapNumber] +	ld c, a +; 2c24 + +Function2c24: ; 2c24 +	call Function2c31 +	rst Bankswitch +	ret +; 2c29 + + +Function2c29: ; 2c29 +	ld a, [MapGroup] +	ld b, a +	ld a, [MapNumber] +	ld c, a +; 2c31 + +Function2c31: ; 2c31 +	push hl +	push de +	ld de, $0000 +	call GetAnyMapHeaderMember +	ld a, c +	pop de +	pop hl +	ret +; 2c3d + +Function2c3d: ; 2c3d +	ld a, [hROMBank] +	push af +	ld a, $25 +	rst Bankswitch +	call GetMapHeaderPointer +	ld de, $d198 +	ld bc, $0005 +	call CopyBytes +	pop af +	rst Bankswitch +	ret +; 2c52 + +Function2c52: ; 2c52 +	ld a, [MapEventBank] +	rst Bankswitch +	ret +; 2c57 + + +GetMapEventBank: ; 2c57 +	ld a, [MapEventBank] +	ret +; 2c5b + +GetAnyMapBlockdataBank: ; 2c5b +; Return the blockdata bank for group b map c. +	push hl +	push de +	push bc + +	push bc +	ld de, 3 ; second map header pointer +	call GetAnyMapHeaderMember +	ld l, c +	ld h, b +	pop bc + +	push hl +	ld de, 0 ; second map header bank +	call GetAnyMapHeaderMember +	pop hl + +	ld de, 3 ; blockdata bank +	add hl, de +	ld a, c +	call GetFarByte +	rst Bankswitch + +	pop bc +	pop de +	pop hl +	ret +; 2c7d + +GetSecondaryMapHeaderPointer: ; 0x2c7d +; returns the current map's secondary map header pointer in hl. +	push bc +	push de +	ld de, $0003 ; secondary map header pointer (offset within header) +	call GetMapHeaderMember +	ld l, c +	ld h, b +	pop de +	pop bc +	ret +; 2c8a + +GetMapPermission: ; 2c8a +	push hl +	push de +	push bc +	ld de, 2 +	call GetMapHeaderMember +	ld a, c +	pop bc +	pop de +	pop hl +	ret +; 2c98 + +Function2c98: ; 2c98 +	ret +; 2c99 + +Function2c99: ; 2c99 +	push hl +	push de +	push bc +	ld de, $0002 +	call GetAnyMapHeaderMember +	ld a, c +	pop bc +	pop de +	pop hl +	ret +; 2ca7 + +Function2ca7: ; 2ca7 +	ld de, $0001 +	call GetAnyMapHeaderMember +	ld a, c +	ret +; 2caf + +GetWorldMapLocation: ; 0x2caf +; given a map group/id in bc, return its location on the Pokégear map. +	push hl +	push de +	push bc +	ld de, 5 +	call GetAnyMapHeaderMember +	ld a, c +	pop bc +	pop de +	pop hl +	ret +; 0x2cbd + +Function2cbd: ; 2cbd +	push hl +	push bc +	ld de, $0006 +	call GetMapHeaderMember +	ld a, c +	cp $64 +	jr z, .asm_2cee +	bit 7, c +	jr nz, .asm_2cda +	ld a, $22 +	ld hl, $7342 +	rst FarCall +	ld e, c +	ld d, $0 +.asm_2cd7 +	pop bc +	pop hl +	ret + +.asm_2cda +	ld a, [StatusFlags2] +	bit 0, a +	jr z, .asm_2ce6 +	ld de, $0056 +	jr .asm_2cd7 + +.asm_2ce6 +	ld a, c +	and $7f +	ld e, a +	ld d, $0 +	jr .asm_2cd7 + +.asm_2cee +	ld a, [StatusFlags2] +	bit 7, a +	jr z, .asm_2cfa +	ld de, $0048 +	jr .asm_2cd7 + +.asm_2cfa +	ld de, $0026 +	jr .asm_2cd7 +; 2cff + +Function2cff: ; 2cff +	call Function2d0d +	and $f +	ret +; 2d05 + +Function2d05: ; 2d05 +	call Function2d0d +	and $f0 +	swap a +	ret +; 2d0d + +Function2d0d: ; 2d0d +	push hl +	push bc +	ld de, $0007 +	call GetMapHeaderMember +	ld a, c +	pop bc +	pop hl +	ret +; 2d19 + +Function2d19: ; 2d19 +	push de +	push hl +	push bc +	ld de, $0008 +	call GetMapHeaderMember +	ld a, c +	pop bc +	pop hl +	pop de +	ret +; 2d27 + +Function2d27: ; 2d27 +	push hl +	push bc +	ld hl, $5596 +	ld bc, $000f +	ld a, [$d199] +	call AddNTimes +	ld de, TilesetBank +	ld bc, $000f +	ld a, $13 +	call FarCopyBytes +	pop bc +	pop hl +	ret +; 2d43 + @@ -517,2373 +517,8 @@ AskSerial: ; 2063  INCLUDE "common/game_time.asm" +INCLUDE "common/map.asm" -Function210f: ; 210f -	ld hl, $c7e8 -	ld bc, $0018 -	ld a, $0 -	call ByteFill -	ret -; 211b - -Function211b: ; 211b -	push hl -	ld hl, $dbf7 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	or h -	ld a, [hl] -	jr nz, .asm_2128 -	ld a, $ff - -.asm_2128 -	pop hl -	ret -; 212a - -Function212a: ; 212a -	ld a, [MapGroup] -	ld b, a -	ld a, [MapNumber] -	ld c, a -	xor a -	ld [$dbf7], a -	ld [$dbf8], a -	call Function2147 -	ret c -	ld a, e -	ld [$dbf7], a -	ld a, d -	ld [$dbf8], a -	xor a -	ret -; 2147 - -Function2147: ; 2147 -	push bc -	ld a, [hROMBank] -	push af -	ld a, $13 -	rst Bankswitch - -	ld hl, $501e -.asm_2151 -	push hl -	ld a, [hli] -	cp $ff -	jr z, .asm_2167 -	cp b -	jr nz, .asm_2160 -	ld a, [hli] -	cp c -	jr nz, .asm_2160 -	jr .asm_216a - -.asm_2160 -	pop hl -	ld de, $0004 -	add hl, de -	jr .asm_2151 - -.asm_2167 -	scf -	jr .asm_216d - -.asm_216a -	ld e, [hl] -	inc hl -	ld d, [hl] - -.asm_216d -	pop hl -	pop bc -	ld a, b -	rst Bankswitch - -	pop bc -	ret -; 2173 - -Function2173: ; 2173 -	call Function217a -	call Functiondb1 -	ret -; 217a - -Function217a: ; 217a -	ld a, [hROMBank] -	push af -	ld a, [TilesetBlocksBank] -	rst Bankswitch - -	call Function2198 -	ld a, $60 -	ld hl, TileMap -	ld bc, $0168 -	call ByteFill -	ld a, $13 -	rst Bankswitch - -	call $515b -	pop af -	rst Bankswitch - -	ret -; 2198 - -Function2198: ; 2198 -	ld a, [$d194] -	ld e, a -	ld a, [$d195] -	ld d, a -	ld hl, EnemyMoveAnimation -	ld b, $5 - -.asm_21a5 -	push de -	push hl -	ld c, $6 - -.asm_21a9 -	push de -	push hl -	ld a, [de] -	and a -	jr nz, .asm_21b2 -	ld a, [$d19d] - -.asm_21b2 -	ld e, l -	ld d, h -	add a -	ld l, a -	ld h, $0 -	add hl, hl -	add hl, hl -	add hl, hl -	ld a, [TilesetBlocksAddress] -	add l -	ld l, a -	ld a, [TilesetBlocksAddress + 1] -	adc h -	ld h, a - -rept 3 -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de - -	ld a, e -	add 20 -	ld e, a -	jr nc, .next\@ -	inc d -.next\@ -endr - -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de - -	pop hl -	ld de, $0004 -	add hl, de -	pop de -	inc de -	dec c -	jp nz, .asm_21a9 -	pop hl -	ld de, $0060 -	add hl, de -	pop de -	ld a, [$d19f] -	add $6 -	add e -	ld e, a -	jr nc, .asm_2225 -	inc d - -.asm_2225 -	dec b -	jp nz, .asm_21a5 -	ret -; 222a - -Function222a: ; 222a -	ld a, $fa -	ld [$ff9f], a -	callba Function15363 -	xor a -	ld [$ff9f], a -	ret -; 2238 - -Function2238: ; 2238 -	call Function2252 -	ret nc -	push bc -	callba Function149af -	pop bc -	ret nc -	call Function22a7 -	scf -	ret -; 224a - - - -Function224a: ; 224a -	call Function2252 -	ret nc -	call Function22a7 -	ret -; 2252 - -Function2252: ; 2252 -	callba Function1499a -	ret nc - -	ld a, [hROMBank] -	push af - -	call Function2c52 -	call Function2266 - -	pop de -	ld a, d -	rst Bankswitch -	ret -; 2266 - -Function2266: ; 2266 -	ld a, [MapY] -	sub $4 -	ld e, a -	ld a, [MapX] -	sub $4 -	ld d, a -	ld a, [$dbfb] -	and a -	ret z -	ld c, a -	ld hl, $dbfc -	ld a, [hli] -	ld h, [hl] -	ld l, a -.asm_227e -	push hl -	ld a, [hli] -	cp e -	jr nz, .asm_2289 -	ld a, [hli] -	cp d -	jr nz, .asm_2289 -	jr .asm_2296 - -.asm_2289 -	pop hl -	ld a, $5 -	add l -	ld l, a -	jr nc, .asm_2291 -	inc h - -.asm_2291 -	dec c -	jr nz, .asm_227e -	xor a -	ret - -.asm_2296 -	pop hl -	call Function22a3 -	ret nc -	ld a, [$dbfb] -	inc a -	sub c -	ld c, a -	scf -	ret -; 22a3 - -Function22a3: ; 22a3 -	inc hl -	inc hl -	scf -	ret -; 22a7 - -Function22a7: ; 22a7 -	ld a, [hROMBank] -	push af - -	call Function2c52 -	call Function22b4 - -	pop af -	rst Bankswitch -	scf -	ret -; 22b4 - -Function22b4: ; 22b4 -	push bc -	ld hl, $dbfc -	ld a, [hli] -	ld h, [hl] -	ld l, a -	ld a, c -	dec a -	ld bc, $0005 -	call AddNTimes -	ld bc, $0002 -	add hl, bc -	ld a, [hli] -	cp $ff -	jr nz, .asm_22d0 -	ld hl, $dcac -	ld a, [hli] - -.asm_22d0 -	pop bc -	ld [$d146], a -	ld a, [hli] -	ld [$d147], a -	ld a, [hli] -	ld [$d148], a -	ld a, c -	ld [$d149], a -	ld a, [MapGroup] -	ld [$d14a], a -	ld a, [MapNumber] -	ld [$d14b], a -	scf -	ret -; 22ee - - - -CheckOutdoorMap: ; 22ee -	cp ROUTE -	ret z -	cp TOWN -	ret -; 22f4 - -CheckIndoorMap: ; 22f4 -	cp INDOOR -	ret z -	cp CAVE -	ret z -	cp DUNGEON -	ret z -	cp GATE -	ret -; 2300 - -Function2300: ; 2300 -	cp INDOOR -	ret z -	cp GATE -	ret z -	cp $5 -	ret -; 2309 - - -Function2309: ; 2309 -	call Function2326 -	call Function2c52 -	call Function234f -	xor a -	call Function2336 -	ret -; 2317 - -Function2317: ; 2317 -	call Function2326 -	call Function2c52 -	call Function234f -	ld a, $1 -	call Function2336 -	ret -; 2326 - -Function2326: ; 2326 -	call Function2c3d -	call Function2c1c -	call GetSecondaryMapHeaderPointer -	call Function235c -	call Function2368 -	ret -; 2336 - -Function2336: ; 2336 -	push af -	ld hl, $d1a6 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	inc hl -	inc hl -	call Function23da -	call Function23f1 -	call Function2408 -	pop af -	and a -	ret nz -	call Function241f -	ret -; 234f - -Function234f: ; 234f -	ld hl, $d1a4 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	call Function23ac -	call Function23c3 -	ret -; 235c - -Function235c: ; 235c -	ld de, $d19d -	ld c, $c -.asm_2361 -	ld a, [hli] -	ld [de], a -	inc de -	dec c -	jr nz, .asm_2361 -	ret -; 2368 - -Function2368: ; 2368 -	ld a, $ff -	ld [NorthConnectedMapGroup], a -	ld [SouthConnectedMapGroup], a -	ld [WestConnectedMapGroup], a -	ld [EastConnectedMapGroup], a - -	ld a, [$d1a8] -	ld b, a - -	bit 3, b -	jr z, .asm_2384 -	ld de, NorthMapConnection -	call GetMapConnection - -.asm_2384 -	bit 2, b -	jr z, .asm_238e -	ld de, SouthMapConnection -	call GetMapConnection - -.asm_238e -	bit 1, b -	jr z, .asm_2398 -	ld de, WestMapConnection -	call GetMapConnection - -.asm_2398 -	bit 0, b -	jr z, .asm_23a2 -	ld de, EastMapConnection -	call GetMapConnection - -.asm_23a2 -	ret -; 23a3 - - -GetMapConnection: ; 23a3 -; Load map connection struct at hl into de. -	ld c, SouthMapConnection - NorthMapConnection -.loop -	ld a, [hli] -	ld [de], a -	inc de -	dec c -	jr nz, .loop -	ret -; 23ac - - -Function23ac: ; 23ac -	ld a, [hli] -	ld c, a -	ld [$dc07], a -	ld a, l -	ld [$dc08], a -	ld a, h -	ld [$dc09], a -	ld a, c -	and a -	ret z -	ld bc, $0004 -	call AddNTimes -	ret -; 23c3 - -Function23c3: ; 23c3 -	ld a, [hli] -	ld c, a -	ld [$dc0a], a -	ld a, l -	ld [$dc0b], a -	ld a, h -	ld [$dc0c], a -	ld a, c -	and a -	ret z -	ld bc, $0003 -	call AddNTimes -	ret -; 23da - -Function23da: ; 23da -	ld a, [hli] -	ld c, a -	ld [$dbfb], a -	ld a, l -	ld [$dbfc], a -	ld a, h -	ld [$dbfd], a -	ld a, c -	and a -	ret z -	ld bc, $0005 -	call AddNTimes -	ret -; 23f1 - -Function23f1: ; 23f1 -	ld a, [hli] -	ld c, a -	ld [$dbfe], a -	ld a, l -	ld [$dbff], a -	ld a, h -	ld [$dc00], a -	ld a, c -	and a -	ret z -	ld bc, $0008 -	call AddNTimes -	ret -; 2408 - -Function2408: ; 2408 -	ld a, [hli] -	ld c, a -	ld [$dc01], a -	ld a, l -	ld [$dc02], a -	ld a, h -	ld [$dc03], a -	ld a, c -	and a -	ret z -	ld bc, $0005 -	call AddNTimes -	ret -; 241f - -Function241f: ; 241f -	push hl -	call Function2471 -	pop de -	ld hl, $d72e -	ld a, [de] -	inc de -	ld [$dc04], a -	ld a, e -	ld [$dc05], a -	ld a, d -	ld [$dc06], a -	ld a, [$dc04] -	call Function2457 -	ld a, [$dc04] -	ld c, a -	ld a, $10 -	sub c -	jr z, .asm_2454 -	ld bc, $0001 -	add hl, bc -	ld bc, $0010 -.asm_244a -	ld [hl], $0 -	inc hl -	ld [hl], $ff -	dec hl -	add hl, bc -	dec a -	jr nz, .asm_244a - -.asm_2454 -	ld h, d -	ld l, e -	ret -; 2457 - -Function2457: ; 2457 -	and a -	ret z -	ld c, a -.asm_245a -	push bc -	push hl -	ld a, $ff -	ld [hli], a -	ld b, $d -.asm_2461 -	ld a, [de] -	inc de -	ld [hli], a -	dec b -	jr nz, .asm_2461 -	pop hl -	ld bc, $0010 -	add hl, bc -	pop bc -	dec c -	jr nz, .asm_245a -	ret -; 2471 - -Function2471: ; 2471 -	ld hl, $d4fe -	ld bc, $01e0 -	xor a -	call ByteFill -	ld hl, $d4fe -	ld de, $0028 -	ld c, $c -	xor a -.asm_2484 -	ld [hl], a -	add hl, de -	dec c -	jr nz, .asm_2484 -	ret -; 248a - -Function248a: ; 248a -	call GetMapEventBank -	rst Bankswitch - -	ld hl, $d1a6 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	inc hl -	inc hl -	inc hl -	ld a, [WarpNumber] -	dec a -	ld c, a -	ld b, $0 -	ld a, $5 -	call AddNTimes -	ld a, [hli] -	ld [YCoord], a -	ld a, [hli] -	ld [XCoord], a -	ld a, [hli] -	cp $ff -	jr nz, .asm_24b3 -	call Function24ba - -.asm_24b3 -	ld a, $41 -	ld hl, $486d -	rst FarCall -	ret -; 24ba - -Function24ba: ; 24ba -	ld a, [$d149] -	ld [$dcac], a -	ld a, [$d14a] -	ld [BackupMapGroup], a -	ld a, [$d14b] -	ld [BackupMapNumber], a -	ret -; 24cd - -Function24cd: ; 24cd -	ld hl, OverworldMap -	ld bc, $0514 -	ld a, $0 -	call ByteFill -	call Function24e4 -	call FillMapConnections -	ld a, $1 -	call Function263b -	ret -; 24e4 - - - -Function24e4: ; 24e4 -	ld a, [hROMBank] -	push af -	ld hl, OverworldMap -	ld a, [$d19f] -	ld [hConnectedMapWidth], a -	add $6 -	ld [hConnectionStripLength], a -	ld c, a -	ld b, $0 -	add hl, bc -	add hl, bc -	add hl, bc -	ld c, $3 -	add hl, bc -	ld a, [$d1a0] -	rst Bankswitch - -	ld a, [$d1a1] -	ld e, a -	ld a, [$d1a2] -	ld d, a -	ld a, [$d19e] -	ld b, a -.asm_250c -	push hl -	ld a, [hConnectedMapWidth] -	ld c, a -.asm_2510 -	ld a, [de] -	inc de -	ld [hli], a -	dec c -	jr nz, .asm_2510 -	pop hl -	ld a, [hConnectionStripLength] -	add l -	ld l, a -	jr nc, .asm_251e -	inc h - -.asm_251e -	dec b -	jr nz, .asm_250c -	pop af -	rst Bankswitch - -	ret -; 2524 - - - -FillMapConnections: ; 2524 - -; North -	ld a, [NorthConnectedMapGroup] -	cp $ff -	jr z, .South -	ld b, a -	ld a, [NorthConnectedMapNumber] -	ld c, a -	call GetAnyMapBlockdataBank - -	ld a, [NorthConnectionStripPointer] -	ld l, a -	ld a, [NorthConnectionStripPointer + 1] -	ld h, a -	ld a, [NorthConnectionStripLocation] -	ld e, a -	ld a, [NorthConnectionStripLocation + 1] -	ld d, a -	ld a, [NorthConnectionStripLength] -	ld [hConnectionStripLength], a -	ld a, [NorthConnectedMapWidth] -	ld [hConnectedMapWidth], a -	call FillNorthConnectionStrip - -.South -	ld a, [SouthConnectedMapGroup] -	cp $ff -	jr z, .West -	ld b, a -	ld a, [SouthConnectedMapNumber] -	ld c, a -	call GetAnyMapBlockdataBank - -	ld a, [SouthConnectionStripPointer] -	ld l, a -	ld a, [SouthConnectionStripPointer + 1] -	ld h, a -	ld a, [SouthConnectionStripLocation] -	ld e, a -	ld a, [SouthConnectionStripLocation + 1] -	ld d, a -	ld a, [SouthConnectionStripLength] -	ld [hConnectionStripLength], a -	ld a, [SouthConnectedMapWidth] -	ld [hConnectedMapWidth], a -	call FillSouthConnectionStrip - -.West -	ld a, [WestConnectedMapGroup] -	cp $ff -	jr z, .East -	ld b, a -	ld a, [WestConnectedMapNumber] -	ld c, a -	call GetAnyMapBlockdataBank - -	ld a, [WestConnectionStripPointer] -	ld l, a -	ld a, [WestConnectionStripPointer + 1] -	ld h, a -	ld a, [WestConnectionStripLocation] -	ld e, a -	ld a, [WestConnectionStripLocation + 1] -	ld d, a -	ld a, [WestConnectionStripLength] -	ld b, a -	ld a, [WestConnectedMapWidth] -	ld [hConnectionStripLength], a -	call FillWestConnectionStrip - -.East -	ld a, [EastConnectedMapGroup] -	cp $ff -	jr z, .Done -	ld b, a -	ld a, [EastConnectedMapNumber] -	ld c, a -	call GetAnyMapBlockdataBank - -	ld a, [EastConnectionStripPointer] -	ld l, a -	ld a, [EastConnectionStripPointer + 1] -	ld h, a -	ld a, [EastConnectionStripLocation] -	ld e, a -	ld a, [EastConnectionStripLocation + 1] -	ld d, a -	ld a, [EastConnectionStripLength] -	ld b, a -	ld a, [EastConnectedMapWidth] -	ld [hConnectionStripLength], a -	call FillEastConnectionStrip - -.Done -	ret -; 25d3 - - -FillNorthConnectionStrip: -FillSouthConnectionStrip: ; 25d3 - -	ld c, 3 -.y -	push de - -	push hl -	ld a, [hConnectionStripLength] -	ld b, a -.x -	ld a, [hli] -	ld [de], a -	inc de -	dec b -	jr nz, .x -	pop hl - -	ld a, [hConnectedMapWidth] -	ld e, a -	ld d, 0 -	add hl, de -	pop de - -	ld a, [$d19f] -	add 6 -	add e -	ld e, a -	jr nc, .asm_25f2 -	inc d -.asm_25f2 -	dec c -	jr nz, .y -	ret -; 25f6 - - -FillWestConnectionStrip: -FillEastConnectionStrip: ; 25f6 - -.asm_25f6 -	ld a, [$d19f] -	add 6 -	ld [hConnectedMapWidth], a - -	push de - -	push hl -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hli] -	ld [de], a -	inc de -	pop hl - -	ld a, [hConnectionStripLength] -	ld e, a -	ld d, 0 -	add hl, de -	pop de - -	ld a, [hConnectedMapWidth] -	add e -	ld e, a -	jr nc, .asm_2617 -	inc d -.asm_2617 -	dec b -	jr nz, .asm_25f6 -	ret -; 261b - -Function261b: ; 261b -	ld [$d432], a -	ret -; 261f - - -CallScript: ; 261f -; Call a script at a:hl. - -	ld [ScriptBank], a -	ld a, l -	ld [ScriptPos], a -	ld a, h -	ld [ScriptPos + 1], a - -	ld a, $ff -	ld [ScriptRunning], a - -	scf -	ret -; 2631 - -Function2631: ; 2631 -	ld a, [ScriptRunning] -	and a -	ret nz -	call GetMapEventBank -	jr CallScript -; 263b - -Function263b: ; 263b -	ld b, a -	ld a, [hROMBank] -	push af -	call Function2c52 -	call Function2653 -	jr nc, .done - -	call GetMapEventBank -	ld b, a -	ld d, h -	ld e, l -	call Function2674 - -.done -	pop af -	rst Bankswitch -	ret -; 2653 - -Function2653: ; 2653 -	ld a, [$dc0a] -	ld c, a -	and a -	ret z -	ld hl, $dc0b -	ld a, [hli] -	ld h, [hl] -	ld l, a -	or h -	ret z -	ld de, $0003 -.asm_2664 -	ld a, [hl] -	cp b -	jr z, .asm_266e -	add hl, de -	dec c -	jr nz, .asm_2664 -	xor a -	ret - -.asm_266e -	inc hl -	ld a, [hli] -	ld h, [hl] -	ld l, a -	scf -	ret -; 2674 - -Function2674: ; 2674 -	callba Unknown_0x974f3 -	ld a, [ScriptMode] -	push af -	ld hl, ScriptFlags -	ld a, [hl] -	push af -	set 1, [hl] -	callba Function96c56 -	callba ScriptEvents -	pop af -	ld [ScriptFlags], a -	pop af -	ld [ScriptMode], a -	ret -; 269a - -Function269a: ; 269a -	ld a, [hROMBank] -	push af -	ld a, b -	rst Bankswitch - -	push hl -	call SpeechTextBox -	call Function2e31 -	ld a, 1 -	ld [hOAMUpdate], a -	call Function321c -	pop hl -	call PrintTextBoxText -	xor a -	ld [hOAMUpdate], a -	pop af -	rst Bankswitch - -	ret -; 26b7 - -Function26b7: ; 26b7 -; Call a:de. - -	ld [hBuffer], a -	ld a, [hROMBank] -	push af -	ld a, [hBuffer] -	rst Bankswitch - -	call .de - -	pop af -	rst Bankswitch -	ret - -.de -	push de -	ret -; 26c7 - -Function26c7: ; 26c7 -	ld a, [hROMBank] -	push af -	ld a, b -	rst Bankswitch - -	ld a, c -	call Function19e9 - -	pop hl -	ld a, h -	rst Bankswitch -	ret -; 26d4 - - -GetScriptByte: ; 0x26d4 -; Return byte at ScriptBank:ScriptPos in a. - -	push hl -	push bc -	ld a, [hROMBank] -	push af -	ld a, [ScriptBank] -	rst Bankswitch - -	ld hl, ScriptPos -	ld c, [hl] -	inc hl -	ld b, [hl] - -	ld a, [bc] - -	inc bc -	ld [hl], b -	dec hl -	ld [hl], c - -	ld b, a -	pop af -	rst Bankswitch -	ld a, b -	pop bc -	pop hl -	ret -; 0x26ef - - -ObjectEvent: ; 0x26ef -	jumptextfaceplayer ObjectEventText -; 0x26f2 - -ObjectEventText: -	TX_FAR _ObjectEventText -	db "@" -; 0x26f7 - - -BGEvent: ; 26f7 -	jumptext BGEventText -; 26fa - -BGEventText: ; 26fa -	text_jump UnknownText_0x1c46fc, BANK(UnknownText_0x1c46fc) -	db "@" -; 26ff - - -CoordinatesEvent: ; 26ff -	jumptext CoordinatesEventText -; 2702 - -CoordinatesEventText: ; 2702 -	text_jump UnknownText_0x1c4706, BANK(UnknownText_0x1c4706) -	db "@" -; 2707 - - -Function2707: ; 2707 -	ld a, [hConnectionStripLength] -	ld e, a -	ld d, $0 -	ld hl, $d81e -	add hl, de -	ld a, [hl] -	ret -; 2712 - -Function2712: ; 2712 -	ld a, [hConnectionStripLength] -	ld e, a -	ld d, $0 -	ld hl, $d81e -	add hl, de -	ld [hl], $ff -	ret -; 271e - -Function271e: ; 271e -	ld a, [hConnectionStripLength] -	ld e, a -	ld d, $0 -	ld hl, $d81e -	add hl, de -	ld [hl], $0 -	ret -; 272a - - -Function272a: ; 272a -	ld hl, TileMap -	ld de, BGMapBuffer -	call Function27b7 -	ld c, $28 -	call Functiondbd -	ld a, [$d152] -	ld e, a -	ld a, [$d153] -	ld d, a -	call Function27d3 -	ld a, $1 -	ld [hBGMapUpdate], a -	ret -; 2748 - -Function2748: ; 2748 -	ld hl, $c5e0 -	ld de, BGMapBuffer -	call Function27b7 -	ld c, $28 -	call Functiondbd -	ld a, [$d152] -	ld l, a -	ld a, [$d153] -	ld h, a -	ld bc, $0200 -	add hl, bc -	ld a, h -	and $3 -	or $98 -	ld e, l -	ld d, a -	call Function27d3 -	ld a, $1 -	ld [hBGMapUpdate], a -	ret -; 2771 - -Function2771: ; 2771 -	ld hl, TileMap -	ld de, BGMapBuffer -	call Function27c0 -	ld c, $24 -	call Functiondbd -	ld a, [$d152] -	ld e, a -	ld a, [$d153] -	ld d, a -	call Function27f8 -	ld a, $1 -	ld [hBGMapUpdate], a -	ret -; 278f - -Function278f: ; 278f -	ld hl, $c4b2 -	ld de, BGMapBuffer -	call Function27c0 -	ld c, $24 -	call Functiondbd -	ld a, [$d152] -	ld e, a -	and $e0 -	ld b, a -	ld a, e -	add $12 -	and $1f -	or b -	ld e, a -	ld a, [$d153] -	ld d, a -	call Function27f8 -	ld a, $1 -	ld [hBGMapUpdate], a -	ret -; 27b7 - -Function27b7: ; 27b7 -	ld c, $28 -.asm_27b9 -	ld a, [hli] -	ld [de], a -	inc de -	dec c -	jr nz, .asm_27b9 -	ret -; 27c0 - -Function27c0: ; 27c0 -	ld c, $12 -.asm_27c2 -	ld a, [hli] -	ld [de], a -	inc de -	ld a, [hl] -	ld [de], a -	inc de -	ld a, $13 -	add l -	ld l, a -	jr nc, .asm_27cf -	inc h - -.asm_27cf -	dec c -	jr nz, .asm_27c2 -	ret -; 27d3 - -Function27d3: ; 27d3 -	ld hl, BGMapBufferPtrs -	push de -	call .asm_27df -	pop de -	ld a, $20 -	add e -	ld e, a - -.asm_27df -	ld c, $a -.asm_27e1 -	ld a, e -	ld [hli], a -	ld a, d -	ld [hli], a -	ld a, e -	inc a -	inc a -	and $1f -	ld b, a -	ld a, e -	and $e0 -	or b -	ld e, a -	dec c -	jr nz, .asm_27e1 -	ld a, $14 -	ld [$ffdc], a -	ret -; 27f8 - -Function27f8: ; 27f8 -	ld hl, BGMapBufferPtrs -	ld c, $12 -.asm_27fd -	ld a, e -	ld [hli], a -	ld a, d -	ld [hli], a -	ld a, $20 -	add e -	ld e, a -	jr nc, .asm_280e -	inc d -	ld a, d -	and $3 -	or $98 -	ld d, a - -.asm_280e -	dec c -	jr nz, .asm_27fd -	ld a, $12 -	ld [$ffdc], a -	ret -; 2816 - -Function2816: ; 2816 -	ld hl, BGMapBuffer -	ld bc, $0078 -	xor a -	call ByteFill -	ret -; 2821 - -Function2821: ; 2821 -	ld hl, TilesetAddress -	ld a, [hli] -	ld h, [hl] -	ld l, a -	ld a, [TilesetBank] -	ld e, a -	ld a, [rSVBK] -	push af -	ld a, $6 -	ld [rSVBK], a -	ld a, e -	ld de, $d000 -	call FarDecompress -	ld hl, $d000 -	ld de, VTiles2 -	ld bc, $0600 -	call CopyBytes -	ld a, [rVBK] -	push af -	ld a, $1 -	ld [rVBK], a -	ld hl, $d600 -	ld de, VTiles2 -	ld bc, $0600 -	call CopyBytes -	pop af -	ld [rVBK], a -	pop af -	ld [rSVBK], a -	ld a, [$d199] -	cp $1 -	jr z, .asm_286f -	cp $2 -	jr z, .asm_286f -	cp $4 -	jr z, .asm_286f -	jr .asm_2875 - -.asm_286f -	ld a, $7 -	ld hl, $4000 -	rst FarCall - -.asm_2875 -	xor a -	ld [hTileAnimFrame], a -	ret -; 2879 - -Function2879: ; 2879 -	ld hl, $d194 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	ld de, $dcb9 -	ld c, $5 -	ld b, $6 -.asm_2886 -	push bc -	push hl -.asm_2888 -	ld a, [hli] -	ld [de], a -	inc de -	dec b -	jr nz, .asm_2888 -	pop hl -	ld a, [$d19f] -	add $6 -	ld c, a -	ld b, $0 -	add hl, bc -	pop bc -	dec c -	jr nz, .asm_2886 -	ret -; 289d - -Function289d: ; 289d -	ld hl, $d194 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	ld de, $dcb9 -	ld a, [$d19f] -	add $6 -	ld [hConnectionStripLength], a -	ld a, [$d151] -	and a -	jr z, .asm_28cb -	cp $1 -	jr z, .asm_28c0 -	cp $2 -	jr z, .asm_28d4 -	cp $3 -	jr z, .asm_28da -	ret - -.asm_28c0 -	ld de, $dcbf -	ld a, [hConnectionStripLength] -	ld c, a -	ld b, $0 -	add hl, bc -	jr .asm_28ce - -.asm_28cb -	ld de, $dcb9 - -.asm_28ce -	ld b, $6 -	ld c, $4 -	jr .asm_28f7 - -.asm_28d4 -	ld de, $dcba -	inc hl -	jr .asm_28dd - -.asm_28da -	ld de, $dcb9 - -.asm_28dd -	ld b, $5 -	ld c, $5 -	jr .asm_28f7 - -	ld hl, $d194 -	ld a, [hli] -	ld h, [hl] -	ld l, a -	ld a, [$d19f] -	add $6 -	ld [hConnectionStripLength], a -	ld de, $dcb9 -	ld b, $6 -	ld c, $5 - -.asm_28f7 -	push bc -	push hl -	push de -.asm_28fa -	ld a, [de] -	inc de -	ld [hli], a -	dec b -	jr nz, .asm_28fa -	pop de -	ld a, e -	add $6 -	ld e, a -	jr nc, .asm_2908 -	inc d - -.asm_2908 -	pop hl -	ld a, [hConnectionStripLength] -	ld c, a -	ld b, $0 -	add hl, bc -	pop bc -	dec c -	jr nz, .asm_28f7 -	ret -; 2914 - -Function2914: ; 2914 -	xor a -	ld [TilePermissions], a -	call Function296c -	call Function294d -	ld a, [MapX] -	ld d, a -	ld a, [MapY] -	ld e, a -	call Function2a3c -	ld [StandingTile], a -	call Function29ff -	ret nz -	ld a, [StandingTile] -	and 7 -	ld hl, .data_2945 -	add l -	ld l, a -	ld a, 0 -	adc h -	ld h, a -	ld a, [hl] -	ld hl, TilePermissions -	or [hl] -	ld [hl], a -	ret -; 2945 - -.data_2945 ; 2945 -	db 1, 2, 4, 8, 9, 10, 5, 6 -; 294d - -Function294d: ; 294d -	ld a, [MapX] -	ld d, a -	ld a, [MapY] -	ld e, a -	push de -	inc e -	call Function2a3c -	ld [TileDown], a -	call Function298b -	pop de -	dec e -	call Function2a3c -	ld [TileUp], a -	call Function29a8 -	ret -; 296c - -Function296c: ; 296c -	ld a, [MapX] -	ld d, a -	ld a, [MapY] -	ld e, a -	push de -	dec d -	call Function2a3c -	ld [TileLeft], a -	call Function29e2 -	pop de -	inc d -	call Function2a3c -	ld [TileRight], a -	call Function29c5 -	ret -; 298b - -Function298b: ; 298b -	call Function29ff -	ret nz -	ld a, [TileDown] -	and $7 -	cp $2 -	jr z, .asm_299f -	cp $6 -	jr z, .asm_299f -	cp $7 -	ret nz - -.asm_299f -	ld a, [TilePermissions] -	or $8 -	ld [TilePermissions], a -	ret -; 29a8 - -Function29a8: ; 29a8 -	call Function29ff -	ret nz -	ld a, [TileUp] -	and $7 -	cp $3 -	jr z, .asm_29bc -	cp $4 -	jr z, .asm_29bc -	cp $5 -	ret nz - -.asm_29bc -	ld a, [TilePermissions] -	or $4 -	ld [TilePermissions], a -	ret -; 29c5 - -Function29c5: ; 29c5 -	call Function29ff -	ret nz -	ld a, [TileRight] -	and $7 -	cp $1 -	jr z, .asm_29d9 -	cp $5 -	jr z, .asm_29d9 -	cp $7 -	ret nz - -.asm_29d9 -	ld a, [TilePermissions] -	or $1 -	ld [TilePermissions], a -	ret -; 29e2 - -Function29e2: ; 29e2 -	call Function29ff -	ret nz -	ld a, [TileLeft] -	and $7 -	cp $0 -	jr z, .asm_29f6 -	cp $4 -	jr z, .asm_29f6 -	cp $6 -	ret nz - -.asm_29f6 -	ld a, [TilePermissions] -	or $2 -	ld [TilePermissions], a -	ret -; 29ff - -Function29ff: ; 29ff -	and $f0 -	cp $b0 -	ret z -	cp $c0 -	ret -; 2a07 - - -GetFacingTileCoord: ; 2a07 -; Return map coordinates in (d, e) and tile id in a -; of the tile the player is facing. - -	ld a, [PlayerDirection] -	and %1100 -	srl a -	srl a -	ld l, a -	ld h, 0 -	add hl, hl -	add hl, hl -	ld de, .Directions -	add hl, de - -	ld d, [hl] -	inc hl -	ld e, [hl] -	inc hl - -	ld a, [hli] -	ld h, [hl] -	ld l, a - -	ld a, [MapX] -	add d -	ld d, a -	ld a, [MapY] -	add e -	ld e, a -	ld a, [hl] -	ret - -.Directions -	;   x,  y -	db  0,  1 -	dw TileDown -	db  0, -1 -	dw TileUp -	db -1,  0 -	dw TileLeft -	db  1,  0 -	dw TileRight -; 2a3c - - -Function2a3c: ; 2a3c -	call Function2a66 -	ld a, [hl] -	and a -	jr z, .asm_2a63 -	ld l, a -	ld h, $0 -	add hl, hl -	add hl, hl -	ld a, [TilesetCollisionAddress] -	ld c, a -	ld a, [$d1e1] -	ld b, a -	add hl, bc -	rr d -	jr nc, .asm_2a56 -	inc hl - -.asm_2a56 -	rr e -	jr nc, .asm_2a5c -	inc hl -	inc hl - -.asm_2a5c -	ld a, [TilesetCollisionBank] -	call GetFarByte -	ret - -.asm_2a63 -	ld a, $ff -	ret -; 2a66 - -Function2a66: ; 2a66 -	ld a, [$d19f] -	add $6 -	ld c, a -	ld b, $0 -	ld hl, $c801 -	add hl, bc -	ld a, e -	srl a -	jr z, .asm_2a84 -	and a -.asm_2a78 -	srl a -	jr nc, .asm_2a7d -	add hl, bc - -.asm_2a7d -	sla c -	rl b -	and a -	jr nz, .asm_2a78 - -.asm_2a84 -	ld c, d -	srl c -	ld b, $0 -	add hl, bc -	ret -; 2a8b - - -CheckFacingSign: ; 2a8b -	call GetFacingTileCoord -	ld b, a -	ld a, d -	sub 4 -	ld d, a -	ld a, e -	sub 4 -	ld e, a -	ld a, [$dc01] -	and a -	ret z -	ld c, a -	ld a, [hROMBank] -	push af -	call Function2c52 -	call Function2aaa -	pop hl -	ld a, h -	rst Bankswitch -	ret -; 2aaa - -Function2aaa: ; 2aaa -	ld hl, $dc02 -	ld a, [hli] -	ld h, [hl] -	ld l, a -.asm_2ab0 -	push hl -	ld a, [hli] -	cp e -	jr nz, .asm_2abb -	ld a, [hli] -	cp d -	jr nz, .asm_2abb -	jr .asm_2ac8 - -.asm_2abb -	pop hl -	ld a, 5 -	add l -	ld l, a -	jr nc, .asm_2ac3 -	inc h - -.asm_2ac3 -	dec c -	jr nz, .asm_2ab0 -	xor a -	ret - -.asm_2ac8 -	pop hl -	ld de, EngineBuffer1 -	ld bc, 5 -	call CopyBytes -	scf -	ret -; 2ad4 - -Function2ad4: ; 2ad4 -	ld a, [$dbfe] -	and a -	ret z -	ld c, a -	ld a, [hROMBank] -	push af -	call Function2c52 -	call Function2ae7 -	pop hl -	ld a, h -	rst Bankswitch -	ret -; 2ae7 - -Function2ae7: ; 2ae7 -	ld hl, $dbff -	ld a, [hli] -	ld h, [hl] -	ld l, a -	call Function211b -	ld b, a -	ld a, [MapX] -	sub $4 -	ld d, a -	ld a, [MapY] -	sub $4 -	ld e, a -.asm_2afd -	push hl -	ld a, [hli] -	cp b -	jr z, .asm_2b06 -	cp $ff -	jr nz, .asm_2b10 - -.asm_2b06 -	ld a, [hli] -	cp e -	jr nz, .asm_2b10 -	ld a, [hli] -	cp d -	jr nz, .asm_2b10 -	jr .asm_2b1d - -.asm_2b10 -	pop hl -	ld a, $8 -	add l -	ld l, a -	jr nc, .asm_2b18 -	inc h - -.asm_2b18 -	dec c -	jr nz, .asm_2afd -	xor a -	ret - -.asm_2b1d -	pop hl -	ld de, EngineBuffer1 -	ld bc, $0008 -	call CopyBytes -	scf -	ret -; 2b29 - - -FadeToMenu: ; 2b29 -	xor a -	ld [hBGMapMode], a -	call Function1d6e -	ld a, $23 -	ld hl, $4084 -	rst FarCall -	call ClearSprites -	call Function2ed3 -	ret -; 2b3c - - -Function2b3c: ; 2b3c -	call WhiteBGMap -	call Function2bae -	call Function1ad2 -	call Function1d7d -	call Functiond90 -	jr Function2b5c -; 2b4d - -Function2b4d: ; 2b4d -	call WhiteBGMap -	call Function1d7d -	call Function2bae -	call Function1ad2 -	call Functiond90 -; 2b5c - -Function2b5c: ; 2b5c -	ld b, $9 -	call GetSGBLayout -	ld a, $12 -	ld hl, $5409 -	rst FarCall -	call Function3200 -	ld a, $23 -	ld hl, $4079 -	rst FarCall -	call Function2ee4 -	ret -; 2b74 - - -Function2b74: ; 0x2b74 -	push af -	ld a, $1 -	ld [$c2ce], a -	call WhiteBGMap -	call ClearSprites -	call Function2bae -	ld hl, $c590 ; tile 0, 12 -	ld bc, $0412 -	call TextBox -	ld hl, VramState -	set 0, [hl] -	call Function1ad2 -	call Function3200 -	ld b, $9 -	call GetSGBLayout -	callba Function49409 -	call UpdateTimePals -	call DelayFrame -	ld a, $1 -	ld [$ffde], a -	pop af -	ret -; 0x2bae - -Function2bae: ; 2bae -	call DisableLCD -	call ClearSprites -	ld a, $5 -	ld hl, $4168 -	rst FarCall -	call Functione51 -	call Functione5f -	ld a, [hROMBank] -	push af -	ld a, [MapGroup] -	ld b, a -	ld a, [MapNumber] -	ld c, a -	call Function2c24 -	ld a, $23 -	ld hl, $4001 -	rst FarCall -	call Function2173 -	call Function2821 -	ld a, $9 -	call Function3cb4 -	pop af -	rst Bankswitch - -	call EnableLCD -	ret -; 2be5 - - -GetMapHeaderPointer: ; 2be5 -	ld a, [MapGroup] -	ld b, a -	ld a, [MapNumber] -	ld c, a -; 2bed - -GetAnyMapHeaderPointer: ; 0x2bed -; Prior to calling this function, you must have switched banks so that -; MapGroupPointers is visible. - -; inputs: -; b = map group, c = map number -; XXX de = ??? - -; outputs: -; hl points to the map header -	push bc ; save map number for later - -	; get pointer to map group -	dec b -	ld c, b -	ld b, $0 -	ld hl, MapGroupPointers -	add hl, bc -	add hl, bc - -	ld a, [hli] -	ld h, [hl] -	ld l, a -	pop bc ; restore map number - -	; find the cth map header -	dec c -	ld b, $0 -	ld a, OlivineGym_MapHeader - OlivinePokeCenter1F_MapHeader -	call AddNTimes -	ret -; 0x2c04 - -GetMapHeaderMember: ; 0x2c04 -; Extract data from the current map's header. - -; inputs: -; de = offset of desired data within the mapheader - -; outputs: -; bc = data from the current map's header -; (e.g., de = $0003 would return a pointer to the secondary map header) - -	ld a, [MapGroup] -	ld b, a -	ld a, [MapNumber] -	ld c, a -	; fallthrough - -GetAnyMapHeaderMember: ; 0x2c0c -	; bankswitch -	ld a, [hROMBank] -	push af -	ld a, BANK(MapGroupPointers) -	rst Bankswitch - -	call GetAnyMapHeaderPointer -	add hl, de -	ld c, [hl] -	inc hl -	ld b, [hl] - -	; bankswitch back -	pop af -	rst Bankswitch -	ret -; 0x2c1c - - -Function2c1c: ; 2c1c -	ld a, [MapGroup] -	ld b, a -	ld a, [MapNumber] -	ld c, a -; 2c24 - -Function2c24: ; 2c24 -	call Function2c31 -	rst Bankswitch -	ret -; 2c29 - - -Function2c29: ; 2c29 -	ld a, [MapGroup] -	ld b, a -	ld a, [MapNumber] -	ld c, a -; 2c31 - -Function2c31: ; 2c31 -	push hl -	push de -	ld de, $0000 -	call GetAnyMapHeaderMember -	ld a, c -	pop de -	pop hl -	ret -; 2c3d - -Function2c3d: ; 2c3d -	ld a, [hROMBank] -	push af -	ld a, $25 -	rst Bankswitch -	call GetMapHeaderPointer -	ld de, $d198 -	ld bc, $0005 -	call CopyBytes -	pop af -	rst Bankswitch -	ret -; 2c52 - -Function2c52: ; 2c52 -	ld a, [MapEventBank] -	rst Bankswitch -	ret -; 2c57 - - -GetMapEventBank: ; 2c57 -	ld a, [MapEventBank] -	ret -; 2c5b - -GetAnyMapBlockdataBank: ; 2c5b -; Return the blockdata bank for group b map c. -	push hl -	push de -	push bc - -	push bc -	ld de, 3 ; second map header pointer -	call GetAnyMapHeaderMember -	ld l, c -	ld h, b -	pop bc - -	push hl -	ld de, 0 ; second map header bank -	call GetAnyMapHeaderMember -	pop hl - -	ld de, 3 ; blockdata bank -	add hl, de -	ld a, c -	call GetFarByte -	rst Bankswitch - -	pop bc -	pop de -	pop hl -	ret -; 2c7d - -GetSecondaryMapHeaderPointer: ; 0x2c7d -; returns the current map's secondary map header pointer in hl. -	push bc -	push de -	ld de, $0003 ; secondary map header pointer (offset within header) -	call GetMapHeaderMember -	ld l, c -	ld h, b -	pop de -	pop bc -	ret -; 2c8a - -GetMapPermission: ; 2c8a -	push hl -	push de -	push bc -	ld de, 2 -	call GetMapHeaderMember -	ld a, c -	pop bc -	pop de -	pop hl -	ret -; 2c98 - -Function2c98: ; 2c98 -	ret -; 2c99 - -Function2c99: ; 2c99 -	push hl -	push de -	push bc -	ld de, $0002 -	call GetAnyMapHeaderMember -	ld a, c -	pop bc -	pop de -	pop hl -	ret -; 2ca7 - -Function2ca7: ; 2ca7 -	ld de, $0001 -	call GetAnyMapHeaderMember -	ld a, c -	ret -; 2caf - -GetWorldMapLocation: ; 0x2caf -; given a map group/id in bc, return its location on the Pokégear map. -	push hl -	push de -	push bc -	ld de, 5 -	call GetAnyMapHeaderMember -	ld a, c -	pop bc -	pop de -	pop hl -	ret -; 0x2cbd - -Function2cbd: ; 2cbd -	push hl -	push bc -	ld de, $0006 -	call GetMapHeaderMember -	ld a, c -	cp $64 -	jr z, .asm_2cee -	bit 7, c -	jr nz, .asm_2cda -	ld a, $22 -	ld hl, $7342 -	rst FarCall -	ld e, c -	ld d, $0 -.asm_2cd7 -	pop bc -	pop hl -	ret - -.asm_2cda -	ld a, [StatusFlags2] -	bit 0, a -	jr z, .asm_2ce6 -	ld de, $0056 -	jr .asm_2cd7 - -.asm_2ce6 -	ld a, c -	and $7f -	ld e, a -	ld d, $0 -	jr .asm_2cd7 - -.asm_2cee -	ld a, [StatusFlags2] -	bit 7, a -	jr z, .asm_2cfa -	ld de, $0048 -	jr .asm_2cd7 - -.asm_2cfa -	ld de, $0026 -	jr .asm_2cd7 -; 2cff - -Function2cff: ; 2cff -	call Function2d0d -	and $f -	ret -; 2d05 - -Function2d05: ; 2d05 -	call Function2d0d -	and $f0 -	swap a -	ret -; 2d0d - -Function2d0d: ; 2d0d -	push hl -	push bc -	ld de, $0007 -	call GetMapHeaderMember -	ld a, c -	pop bc -	pop hl -	ret -; 2d19 - -Function2d19: ; 2d19 -	push de -	push hl -	push bc -	ld de, $0008 -	call GetMapHeaderMember -	ld a, c -	pop bc -	pop hl -	pop de -	ret -; 2d27 - -Function2d27: ; 2d27 -	push hl -	push bc -	ld hl, $5596 -	ld bc, $000f -	ld a, [$d199] -	call AddNTimes -	ld de, TilesetBank -	ld bc, $000f -	ld a, $13 -	call FarCopyBytes -	pop bc -	pop hl -	ret -; 2d43  Function2d43: ; 2d43  	nop | 
