summaryrefslogtreecommitdiff
path: root/engine/overworld/elevator.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/overworld/elevator.asm')
-rwxr-xr-xengine/overworld/elevator.asm69
1 files changed, 69 insertions, 0 deletions
diff --git a/engine/overworld/elevator.asm b/engine/overworld/elevator.asm
new file mode 100755
index 00000000..e483e0c3
--- /dev/null
+++ b/engine/overworld/elevator.asm
@@ -0,0 +1,69 @@
+ShakeElevator: ; 7bf15 (1e:7f15)
+ ld de, $ffe0
+ call Func_7bf64
+ ld de, $240
+ call Func_7bf64
+ call Delay3
+ ld a, $ff
+ call PlaySound
+ ld a, [$ffaf]
+ ld d, a
+ ld e, $1
+ ; number of times to play collision sfx
+ ld b, $64
+.asm_7bf30
+ ld a, e
+ xor $fe
+ ld e, a
+ add d
+ ld [$ffaf], a
+ push bc
+ ld c, BANK(SFX_02_5b)
+ ld a, (SFX_02_5b - SFX_Headers_02) / 3
+ call PlayMusic
+ pop bc
+ ld c, $2
+ call DelayFrames
+ dec b
+ jr nz, .asm_7bf30
+ ld a, d
+ ld [$ffaf], a
+ ld a, $ff
+ call PlaySound
+ ld c, BANK(SFX_02_5f)
+ ld a, (SFX_02_5f - SFX_Headers_02) / 3
+ call PlayMusic
+.asm_7bf57
+ ld a, [$c02a]
+ cp $b9
+ jr z, .asm_7bf57
+ call UpdateSprites
+ jp Func_2307
+
+Func_7bf64: ; 7bf64 (1e:7f64)
+ ld hl, $d527
+ ld a, [hld]
+ push af
+ ld a, [hl]
+ push af
+ push hl
+ push hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld a, h
+ and $3
+ or $98
+ ld d, a
+ ld a, l
+ pop hl
+ ld [hli], a
+ ld [hl], d
+ call ScheduleNorthRowRedraw
+ pop hl
+ pop af
+ ld [hli], a
+ pop af
+ ld [hl], a
+ jp Delay3