summaryrefslogtreecommitdiff
path: root/src/engine/credits.asm
diff options
context:
space:
mode:
authorElectroDeoxys <ElectroDeoxys@gmail.com>2021-09-27 12:25:56 +0100
committerElectroDeoxys <ElectroDeoxys@gmail.com>2021-09-27 12:25:56 +0100
commita53828331cf4c86f7d14e3b178eaa18817b514a3 (patch)
tree4ce731fcf42324466ba9899a3fe8343bfbeb9dda /src/engine/credits.asm
parent7825b5ef0f09a877142ea1eb221e895bb60a0253 (diff)
Split part of bank 7
Diffstat (limited to 'src/engine/credits.asm')
-rw-r--r--src/engine/credits.asm189
1 files changed, 189 insertions, 0 deletions
diff --git a/src/engine/credits.asm b/src/engine/credits.asm
new file mode 100644
index 0000000..d2da5d8
--- /dev/null
+++ b/src/engine/credits.asm
@@ -0,0 +1,189 @@
+PlayCreditsSequence:
+ ld a, MUSIC_STOP
+ call PlaySong
+ call Func_1d705
+ call AddAllMastersToMastersBeatenList
+ xor a
+ ld [wOWMapEvents + 1], a
+ ld a, MUSIC_CREDITS
+ call PlaySong
+ farcall FlashWhiteScreen
+ call SetCreditsSequenceCmdPtr
+.asm_1d6c8
+ call DoFrameIfLCDEnabled
+ call Func_1d765
+ call ExecuteCreditsSequenceCmd
+ ld a, [wSequenceDelay]
+ cp $ff
+ jr nz, .asm_1d6c8
+ call WaitForSongToFinish
+ ld a, $8
+ farcall Func_12863
+ ld a, MUSIC_STOP
+ call PlaySong
+ farcall Func_10ab4
+ call Func_3ca4
+ call SetWDOff
+ call Func_1d758
+ call EnableLCD
+ call DoFrameIfLCDEnabled
+ call DisableLCD
+ ld hl, wLCDC
+ set 1, [hl]
+ call ResetDoFrameFunction
+ ret
+
+Func_1d705:
+ call DisableLCD
+ farcall Func_10a9b
+ call Func_3ca0
+ farcall Func_10000
+ call Func_1d7ee
+ ld hl, Func_3e31
+ call SetDoFrameFunction
+ call .Func_1d720 ; can be fallthrough
+ ret
+
+.Func_1d720
+ ld a, $91
+ ld [wd647], a
+ ld [wd649], a
+ ld a, $01
+ ld [wd648], a
+ ld [wd64a], a
+ call Func_1d765
+ call Set_WD_on
+ call .Func_1d73a ; can be fallthrough
+ ret
+
+.Func_1d73a
+ push hl
+ di
+ xor a
+ ld [wd657], a
+ ld hl, wLCDCFunctionTrampoline + 1
+ ld [hl], LOW(Func_3e44)
+ inc hl
+ ld [hl], HIGH(Func_3e44)
+ ei
+
+ ld hl, rSTAT
+ set STAT_LYC, [hl]
+ xor a
+ ldh [rLYC], a
+ ld hl, rIE
+ set INT_LCD_STAT, [hl]
+ pop hl
+ ret
+
+Func_1d758:
+ push hl
+ ld hl, rSTAT
+ res STAT_LYC, [hl]
+ ld hl, rIE
+ res INT_LCD_STAT, [hl]
+ pop hl
+ ret
+
+Func_1d765:
+ push hl
+ push bc
+ push de
+ xor a
+ ldh [hWY], a
+
+ ld hl, wd659
+ ld de, wd65f
+ ld a, [wd648]
+ or a
+ jr nz, .asm_1d785
+ ld a, $a7
+ ldh [hWX], a
+ ld [hli], a
+ push hl
+ ld hl, wLCDC
+ set 1, [hl]
+ pop hl
+ jr .asm_1d7e2
+
+.asm_1d785
+ ld a, [wd647]
+ or a
+ jr z, .asm_1d79e
+ dec a
+ ld [de], a
+ inc de
+ ld a, $a7
+ ldh [hWX], a
+ ld [hli], a
+ push hl
+ ld hl, wLCDC
+ set 1, [hl]
+ pop hl
+ ld a, $07
+ jr .asm_1d7a9
+
+.asm_1d79e
+ ld a, $07
+ ldh [hWX], a
+ push hl
+ ld hl, wLCDC
+ res 1, [hl]
+ pop hl
+.asm_1d7a9
+ ld [hli], a
+ ld a, [wd647]
+ dec a
+ ld c, a
+ ld a, [wd648]
+ add c
+ ld c, a
+ ld a, [wd649]
+ dec a
+ cp c
+ jr c, .asm_1d7d4
+ jr z, .asm_1d7d4
+ ld a, c
+ ld [de], a
+ inc de
+ push af
+ ld a, $a7
+ ld [hli], a
+ pop bc
+ ld a, [wd64a]
+ or a
+ jr z, .asm_1d7e2
+ ld a, [wd649]
+ dec a
+ ld [de], a
+ inc de
+ ld a, $07
+ ld [hli], a
+
+.asm_1d7d4
+ ld a, [wd649]
+ dec a
+ ld c, a
+ ld a, [wd64a]
+ add c
+ ld [de], a
+ inc de
+ ld a, $a7
+ ld [hli], a
+.asm_1d7e2
+ ld a, $ff
+ ld [de], a
+ ld a, $01
+ ld [wd665], a
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_1d7ee:
+ xor a
+ lb de, 0, 32
+ lb bc, 20, 18
+ lb hl, 0, 0
+ call FillRectangle
+ ret