summaryrefslogtreecommitdiff
path: root/engine/overworld/init_map.asm
blob: 07cd07def14e814375c3fb43b813951fa6973f91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551)
	call DelayFrame
	ldh a, [hOAMUpdate]
	push af
	ld a, $1
	ldh [hOAMUpdate], a
	ldh a, [hBGMapMode]
	push af
	xor a
	ldh [hBGMapMode], a
	call Function656b
	pop af
	ldh [hBGMapMode], a
	pop af
	ldh [hOAMUpdate], a
	ret

Function656b: ; 656b (1:656b)
	xor a
	ldh [hLCDCPointer], a
	ldh [hBGMapMode], a
	ld hl, wd565
	set 7, [hl]
	res 2, [hl]
	ld a, $90
	ldh [hWY], a
	call OverworldTextModeSwitch
	ld a, $9c
	call .LoadBGMapAddrIntoHRAM
	call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
	xor a
	ldh [hBGMapMode], a
	ldh [hWY], a
	ld a, $98
	call .LoadBGMapAddrIntoHRAM
	call .WaitTransfer
	xor a
	ld [wd05b], a
	ld a, $98
	ld [wd05c], a
	xor a
	ldh [hSCX], a
	ldh [hSCY], a
	call ApplyBGMapAnchorToObjects
	ret

.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5)
	ldh [hBGMapAddress + 1], a
	xor a
	ldh [hBGMapAddress], a
	ret

.WaitTransfer: ; 65ab (1:65ab)
	ldh a, [hBGMapMode]
	push af
	xor a
	ldh [hBGMapMode], a
	ldh a, [hOAMUpdate]
	push af
	ld a, $1
	ldh [hOAMUpdate], a
	ld a, $3
	ldh [hVBlankCounter + 1], a
.asm_65bc
	call DelayFrame
	ldh a, [hVBlankCounter + 1]
	and a
	jr nz, .asm_65bc
	pop af
	ldh [hOAMUpdate], a
	pop af
	ldh [hBGMapMode], a
	ret

LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb)
	ldh a, [hOAMUpdate]
	push af
	ld a, $1
	ldh [hOAMUpdate], a
	call .LoadGFX
	pop af
	ldh [hOAMUpdate], a
	ret

.LoadGFX: ; 65d9 (1:65d9)
	call LoadFontsExtra
	ld a, $90
	ldh [hWY], a
	call SafeUpdateSprites
	call Functiond9e
	ret