Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pret
GitHub Repository: pret/pokered
Path: blob/master/engine/overworld/elevator.asm
1271 views
1
ShakeElevator::
2
ld de, -$20
3
call ShakeElevatorRedrawRow
4
ld de, SCREEN_HEIGHT * $20
5
call ShakeElevatorRedrawRow
6
call Delay3
7
ld a, SFX_STOP_ALL_MUSIC
8
call PlaySound
9
ldh a, [hSCY]
10
ld d, a
11
ld e, $1
12
ld b, 100
13
.shakeLoop ; scroll the BG up and down and play a sound effect
14
ld a, e
15
xor $fe
16
ld e, a
17
add d
18
ldh [hSCY], a
19
push bc
20
ld c, BANK(SFX_Collision_1)
21
ld a, SFX_COLLISION
22
call PlayMusic
23
pop bc
24
ld c, 2
25
call DelayFrames
26
dec b
27
jr nz, .shakeLoop
28
ld a, d
29
ldh [hSCY], a
30
ld a, SFX_STOP_ALL_MUSIC
31
call PlaySound
32
ld c, BANK(SFX_Safari_Zone_PA)
33
ld a, SFX_SAFARI_ZONE_PA
34
call PlayMusic
35
.musicLoop
36
ld a, [wChannelSoundIDs + CHAN5]
37
cp SFX_SAFARI_ZONE_PA
38
jr z, .musicLoop
39
call UpdateSprites
40
jp PlayDefaultMusic
41
42
ShakeElevatorRedrawRow:
43
; This function is used to redraw certain portions of the screen, but it does
44
; not appear to ever result in any visible effect, so this function seems to
45
; be pointless.
46
ld hl, wMapViewVRAMPointer + 1
47
ld a, [hld]
48
push af
49
ld a, [hl]
50
push af
51
push hl
52
push hl
53
ld a, [hli]
54
ld h, [hl]
55
ld l, a
56
add hl, de
57
ld a, h
58
and $3
59
or HIGH(vBGMap0)
60
ld d, a
61
ld a, l
62
pop hl
63
ld [hli], a
64
ld [hl], d
65
call ScheduleNorthRowRedraw
66
pop hl
67
pop af
68
ld [hli], a
69
pop af
70
ld [hl], a
71
jp Delay3
72
73