mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
2368 lines
28 KiB
NASM
2368 lines
28 KiB
NASM
; 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
|
|
callba LoadMapGroupRoof
|
|
|
|
.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
|
|
|