mirror of https://github.com/AbePralle/FGB.git
596 lines
14 KiB
NASM
596 lines
14 KiB
NASM
; 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"
|
|
|