shithub: pokecrystal

Download patch

ref: f513cdd8883336096031f91b00791864ded473f9
parent: 847843d866aa79727f7d1dd98c2b212e8b5053ef
author: yenatch <[email protected]>
date: Sat Sep 7 20:14:26 EDT 2013

split map engine asm into common/map.asm

--- /dev/null
+++ b/common/map.asm
@@ -1,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
+
--- a/main.asm
+++ b/main.asm
@@ -517,2373 +517,8 @@
 
 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