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