AbePralle-FGB/Source/l1402.asm

596 lines
14 KiB
NASM
Raw Normal View History

; l1402.asm lady flower intervenes
; Generated 08.13.2000 by mlevel
; Modified 08.13.2000 by Abe Pralle
INCLUDE "Source/defs.inc"
INCLUDE "Source/levels.inc"
;---------------------------------------------------------------------
SECTION "Level1402SectionData2",ROMX
;---------------------------------------------------------------------
spacepan_bg:
INCBIN "../fgbpix/distress/spacepan.bg"
final_bg:
INCBIN "../fgbpix/distress/final.bg"
;---------------------------------------------------------------------
SECTION "Level1402Section",ROMX
;---------------------------------------------------------------------
L1402_Contents::
DW L1402_Load
DW L1402_Init
DW L1402_Check
DW L1402_Map
moon_mini_bg:
INCBIN "../fgbpix/distress/moon_mini.bg"
palace_bg:
INCBIN "../fgbpix/distress/palace.bg"
flowernight_bg:
INCBIN "../fgbpix/distress/flowernight.bg"
fgstars_sp:
INCBIN "../fgbpix/distress/fgstars.sp"
yacht_mini_sp:
INCBIN "../fgbpix/distress/yacht_mini.sp"
bee_sp:
INCBIN "../fgbpix/distress/bee.sp"
dialog:
lady_badNews_gtx:
INCBIN "Data/Dialog/distress/lady_badNews.gtx"
lady_dispatched_gtx:
INCBIN "Data/Dialog/distress/lady_dispatched.gtx"
lady_surrender_gtx:
INCBIN "Data/Dialog/distress/lady_surrender.gtx"
lady_bigBullies_gtx:
INCBIN "Data/Dialog/distress/lady_bigBullies.gtx"
lady_poorCaptain_gtx:
INCBIN "Data/Dialog/distress/lady_poorCaptain.gtx"
;---------------------------------------------------------------------
; Load
;---------------------------------------------------------------------
VAR_BEEPOS EQU 0
L1402_Load:
DW ((L1402_LoadFinished - L1402_Load2)) ;size
L1402_Load2:
ld hl,$1402
call SetJoinMap
ld a,BANK(dialog)
ld [dialogBank],a
ld a,BANK(moon_bg)
ld hl,moon_bg
call LoadCinemaBG
ld a,BANK(main_in_game_gbm)
ld hl,main_in_game_gbm
call InitMusic
;center moon in stars
;right top stars to bottom
ld bc,$1406
ld hl,$1406
ld de,$140c
call CinemaBlitRect
ld a,1
call Delay
;left moon centered in right
ld bc,$140c
ld hl,$0000
ld de,$1403
call CinemaBlitRect
ld a,1
call Delay
;right to left
ld bc,$1412
ld hl,$1400
ld de,$0000
call CinemaBlitRect
ld a,1
call Delay
ld a,48
call SetupFadeFromStandard
call WaitFade
ld de,((.endCinema-L1402_Load2)+levelCheckRAM)
call SetDialogSkip
ld de,((.showMoonMini-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld a,32
call Delay
.showMoonMini
call ((.fadeToBlack32-L1402_Load2)+levelCheckRAM)
ld a,BANK(moon_mini_bg)
ld hl,moon_mini_bg
call LoadCinemaBG
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.showSpacePan-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld a,32
call Delay
.showSpacePan
call ((.fadeToBlack32-L1402_Load2)+levelCheckRAM)
ld a,BANK(spacepan_bg)
ld hl,spacepan_bg
call LoadCinemaBG
ld a,BANK(fgstars_sp)
ld hl,fgstars_sp
call LoadCinemaSprite
ld a,1
call Delay
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.showKiwi-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld a,32
call Delay
ld a,$44
ld [scrollSpeed],a
ld a,117
ld [camera_i],a
ld c,4
.stars1
ld a,1
call Delay
ld d,2
call ScrollSpritesLeft
dec c
jr nz,.stars1
ld a,$82
ld [scrollSpeed],a
ld c,150
.stars2
ld a,1
call Delay
ld a,[mapLeft]
cp 108
jr nc,.afterStarScroll
ld d,4
call ScrollSpritesLeft
.afterStarScroll
dec c
jr nz,.stars2
.showKiwi
call ((.fadeToBlack32-L1402_Load2)+levelCheckRAM)
call ResetSprites
ld a,BANK(kiwi1_bg)
ld hl,kiwi1_bg
call LoadCinemaBG
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.showPalace1-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld a,32
call Delay
.showPalace1
call ((.fadeToBlack32-L1402_Load2)+levelCheckRAM)
ld a,BANK(palace_bg)
ld hl,palace_bg
call LoadCinemaBG
ld a,BANK(yacht_mini_sp)
ld hl,yacht_mini_sp
call LoadCinemaSprite
;set bg priority
ld hl,spriteOAMBuffer+3
set 7,[hl]
ld hl,spriteOAMBuffer+7
set 7,[hl]
ld a,28
ld [camera_j],a
ld a,18
ld [mapTop],a
ld a,1
call Delay
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.showLadyFlower-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld a,32
call Delay
.showLadyFlower
call ((.fadeToBlack32-L1402_Load2)+levelCheckRAM)
call ResetSprites
ld a,BANK(lady_flower_gbm)
ld hl,lady_flower_gbm
call InitMusic
xor a
ld [levelVars + VAR_BEEPOS],a
ld a,BANK(flowernight_bg)
ld hl,flowernight_bg
call LoadCinemaBG
ld a,BANK(bee_sp)
ld hl,bee_sp
call LoadCinemaSprite
;clear the sprites of bee's other two frames
ld hl,spriteOAMBuffer+8
xor a
ld [hl+],a ;ypos to zero
inc hl
inc hl
inc hl
ld [hl+],a ;ypos to zero
ld d,16
call ScrollSpritesRight
ld d,16
call ScrollSpritesDown
ld a,1
call Delay
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.dialog1-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld d,1 ;get her to open her eyes
LONGCALLNOARGS AnimateLadyFlower
.dialog1
ld c,0
DIALOGBOTTOM lady_badNews_gtx
ld de,((.dialog2-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld d,2
LONGCALLNOARGS AnimateLadyFlower
.dialog2
ld c,0
DIALOGBOTTOM lady_dispatched_gtx
ld de,((.dialog3-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld d,4
LONGCALLNOARGS AnimateLadyFlower
.dialog3
ld c,0
DIALOGBOTTOM lady_surrender_gtx
ld de,((.dialog4-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld d,6
LONGCALLNOARGS AnimateLadyFlower
.dialog4
ld c,0
DIALOGBOTTOM lady_bigBullies_gtx
ld de,((.dialog5-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld d,4
LONGCALLNOARGS AnimateLadyFlower
.dialog5
ld c,0
DIALOGBOTTOM lady_poorCaptain_gtx
ld de,((.showPalace2-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld d,6
LONGCALLNOARGS AnimateLadyFlower
.showPalace2
call ClearDialog
ld a,32
call SetupFadeToBlack
.waitFadeBee
call ((.animateBee-L1402_Load2)+levelCheckRAM)
ld a,1
call Delay
ld a,[specialFX]
and FX_FADE
jr nz,.waitFadeBee
call ResetSprites
ld a,BANK(palace_bg)
ld hl,palace_bg
call LoadCinemaBG
ld a,BANK(yacht_mini_sp)
ld hl,yacht_mini_sp
call LoadCinemaSprite
ld a,28
ld [camera_j],a
ld a,18
ld [mapTop],a
ld a,1
call Delay
;set bg priority
ld hl,spriteOAMBuffer+3
set 7,[hl]
ld hl,spriteOAMBuffer+7
set 7,[hl]
;sprites don't scroll with the bg
xor a
ld [scrollSprites],a
ld a,$11
ld [scrollSpeed],a ;bg scroll speed
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.endCinema-L1402_Load2)+levelCheckRAM)
call SetDialogForward
;----take off-------------------------------------------------
;setup a fade
ld hl,gamePalette
ld de,fadeCurPalette
call CopyPalette32
ld de,fadeFinalPalette
call CopyPalette32
;set the final palette's first 6 BG colors to dark purple
ld c,6
ld de,6
ld hl,fadeFinalPalette
.setPurpleLoop
ld [hl],$04
inc hl
ld [hl],$10
inc hl
add hl,de
dec c
jr nz,.setPurpleLoop
ld a,14*8
call FadeInit
;set the camera to pan up
xor a
ld [camera_j],a
ld c,14*8
.takeoffLoop
push bc
ld a,1
call Delay
;scroll the ship sprites up 1 pixel
;ld hl,spriteOAMBuffer
;dec [hl]
;ld hl,spriteOAMBuffer+4
;dec [hl]
call ((.scrollMoons-L1402_Load2)+levelCheckRAM)
pop bc
dec c
jr nz,.takeoffLoop
;accellerate offscreen
ld hl,fadeFinalPalette
ld de,fadeCurPalette
call CopyPalette32
ld hl,fadeFinalPalette
call FadeCommonSetPaletteToBlack
ld hl,fadeFinalPalette
ld de,gamePalette
call CopyPalette32
ld a,14*8
call FadeInit
ld c,14*8
.accelerateLoop
push bc
ld a,1
call Delay
;scroll the ship sprites up 1 pixel
ld hl,spriteOAMBuffer
dec [hl]
ld hl,spriteOAMBuffer+4
dec [hl]
call ((.scrollMoons-L1402_Load2)+levelCheckRAM)
call ((.scrollMoons-L1402_Load2)+levelCheckRAM)
pop bc
dec c
jr nz,.accelerateLoop
.endCinema
call ClearDialog
ld a,16
call SetupFadeToBlack
call WaitFade
call ResetSprites
IF 0
ld a,BANK(final_bg)
ld hl,final_bg
call LoadCinemaBG
call ((.fadeFromBlack32-L1402_Load2)+levelCheckRAM)
ld de,((.backToMenu-L1402_Load2)+levelCheckRAM)
call SetDialogSkip
ld de,((.backToMenu-L1402_Load2)+levelCheckRAM)
call SetDialogForward
ld a,150
call Delay
.backToMenu
;.infi
;ld a,1
;call Delay ;upkeep so remote game won't freak
;jr .infi
ENDC
;ld de,0
;call SetDialogSkip
;call SetDialogForward
;ld a,16
;call SetupFadeToStandard
;call WaitFade
;ld hl,fadeFinalPalette
;ld de,gamePalette
;call CopyPalette64
;ld de,fadeCurPalette
;call CopyPalette64
ld hl,$1502
ld a,l
ld [curLevelIndex],a
ld a,h
ld [curLevelIndex+1],a
ld a,2
ld [timeToChangeLevel],a
ret
;----support routines-------------------------------------------------
.fadeToBlack32
ld a,32
call SetupFadeToBlack
call WaitFade
ret
.fadeFromBlack32
ld a,32
call SetupFadeFromBlack
call WaitFade
ret
.animateBee
;bee y position
ld a,[levelVars + VAR_BEEPOS]
add 2
ld [levelVars + VAR_BEEPOS],a
cp 128
jr c,.beeDirectionChosen
ld b,a ;a = 255 - a
ld a,255
sub b
.beeDirectionChosen
sub 64
rlca ;get sign bit in bit 7
sra a
sra a
sra a
sra a
;adjust y coord
ld hl,spriteOAMBuffer
add 40
ld [hl],a
ld hl,spriteOAMBuffer+4
ld [hl],a
;adjust animation frame
ldio a,[updateTimer]
rlca
rlca
and %100
ld hl,spriteOAMBuffer + 2
ld [hl],a
inc a
inc a
ld hl,spriteOAMBuffer + 6
ld [hl],a
ret
.scrollMoons
;scroll the 13 moon sprites down 1 pixel every other time
ld a,[updateTimer]
and 1
ret z
ld c,13
ld hl,spriteOAMBuffer+8
.scrollMoonsLoop
inc [hl]
ld a,l
add 4
ld l,a
dec c
jr nz,.scrollMoonsLoop
ret
L1402_LoadFinished:
;---------------------------------------------------------------------
; Map
;---------------------------------------------------------------------
L1402_Map:
;---------------------------------------------------------------------
; Init
;---------------------------------------------------------------------
L1402_Init:
DW ((L1402_InitFinished - L1402_Init2)) ;size
L1402_Init2:
ret
L1402_InitFinished:
;---------------------------------------------------------------------
; Check
;---------------------------------------------------------------------
L1402_Check:
DW ((L1402_CheckFinished - L1402_Check2)) ;size
L1402_Check2:
ret
L1402_CheckFinished:
PRINTT "1402 Script Sizes (Load/Init/Check) (of $500): "
PRINTV (L1402_LoadFinished - L1402_Load2)
PRINTT " / "
PRINTV (L1402_InitFinished - L1402_Init2)
PRINTT " / "
PRINTV (L1402_CheckFinished - L1402_Check2)
PRINTT "\n"