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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
RunMapSetupScript::
ldh a, [hMapEntryMethod]
and $f
dec a
ld c, a
ld b, 0
ld hl, MapSetupScripts
add hl, bc
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
call ReadMapSetupScript
ret
INCLUDE "data/maps/setup_scripts.asm"
ReadMapSetupScript:
.loop
ld a, [hli]
cp map_end_command
ret z
push hl
ld c, a
ld b, 0
ld hl, MapSetupCommands
add hl, bc
add hl, bc
add hl, bc
; bank
ld b, [hl]
inc hl
; address
ld a, [hli]
ld h, [hl]
ld l, a
; Bit 7 of the bank indicates a parameter.
; This is left unused.
bit 7, b
jr z, .go
pop de
ld a, [de]
ld c, a
inc de
push de
.go
ld a, b
and $7f
rst FarCall
pop hl
jr .loop
INCLUDE "data/maps/setup_script_pointers.asm"
EnableTextAcceleration:
xor a
ld [wDisableTextAcceleration], a
ret
ActivateMapAnims:
ld a, TRUE
ldh [hMapAnims], a
ret
SuspendMapAnims:
xor a ; FALSE
ldh [hMapAnims], a
ret
LoadMapObjects:
ld a, MAPCALLBACK_OBJECTS
call RunMapCallback
farcall LoadObjectMasks
farcall InitializeVisibleSprites
ret
; unused
ret
ResetPlayerObjectAction:
ld hl, wPlayerSpriteSetupFlags
set PLAYERSPRITESETUP_RESET_ACTION_F, [hl]
ret
SkipUpdateMapSprites:
ld hl, wPlayerSpriteSetupFlags
set PLAYERSPRITESETUP_SKIP_RELOAD_GFX_F, [hl]
ret
CheckUpdatePlayerSprite:
nop
call .CheckBiking
jr c, .ok
call .CheckSurfing
jr c, .ok
call .CheckSurfing2
jr c, .ok
ret
.ok
call UpdatePlayerSprite
ret
.CheckBiking:
and a
ld hl, wBikeFlags
bit BIKEFLAGS_ALWAYS_ON_BIKE_F, [hl]
ret z
ld a, PLAYER_BIKE
ld [wPlayerState], a
scf
ret
.CheckSurfing2:
ld a, [wPlayerState]
cp PLAYER_NORMAL
jr z, .nope
cp PLAYER_SKATE
jr z, .nope
cp PLAYER_SURF
jr z, .surfing
cp PLAYER_SURF_PIKA
jr z, .surfing
call GetMapEnvironment
cp INDOOR
jr z, .no_biking
cp ENVIRONMENT_5
jr z, .no_biking
cp DUNGEON
jr z, .no_biking
jr .nope
.no_biking
ld a, [wPlayerState]
cp PLAYER_BIKE
jr nz, .nope
.surfing
ld a, PLAYER_NORMAL
ld [wPlayerState], a
scf
ret
.nope
and a
ret
.CheckSurfing:
call CheckOnWater
jr nz, .nope2
ld a, [wPlayerState]
cp PLAYER_SURF
jr z, .is_surfing
cp PLAYER_SURF_PIKA
jr z, .is_surfing
ld a, PLAYER_SURF
ld [wPlayerState], a
.is_surfing
scf
ret
.nope2
and a
ret
FadeOutMapMusic:
ld a, 6
call SkipMusic
ret
ApplyMapPalettes:
farcall _UpdateTimePals
ret
FadeMapMusicAndPalettes:
ld e, LOW(MUSIC_NONE)
ld a, [wMusicFadeID]
ld d, HIGH(MUSIC_NONE)
ld a, [wMusicFadeID + 1]
ld a, $4
ld [wMusicFade], a
call RotateThreePalettesRight
ret
ForceMapMusic:
ld a, [wPlayerState]
cp PLAYER_BIKE
jr nz, .notbiking
call MinVolume
ld a, $88
ld [wMusicFade], a
.notbiking
call TryRestartMapMusic
ret
|