mirror of https://github.com/AbePralle/FGB.git
1149 lines
30 KiB
NASM
1149 lines
30 KiB
NASM
; L0215.asm BRAINIAC computer room
|
|
; Generated 07.09.2000 by mlevel
|
|
; Modified 07.09.2000 by Abe Pralle
|
|
|
|
INCLUDE "Source/Defs.inc"
|
|
INCLUDE "Source/Levels.inc"
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
SECTION "Level0215Section",ROMX
|
|
;---------------------------------------------------------------------
|
|
|
|
L0215_Contents::
|
|
DW L0215_Load
|
|
DW L0215_Init
|
|
DW L0215_Check
|
|
DW L0215_Map
|
|
|
|
brainiac_bg::
|
|
INCBIN "Data/Cinema/Intro/brainiac.bg"
|
|
|
|
haiku_bg::
|
|
INCBIN "Data/Cinema/MainCharDialog/haiku.bg"
|
|
|
|
dialog:
|
|
skippycapture_gyves1_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_gyves1.gtx"
|
|
|
|
skippycapture_gyves1_2_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_gyves1_2.gtx"
|
|
|
|
skippycapture_brainiac1_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_brainiac1.gtx"
|
|
|
|
skippycapture_skippy1_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_skippy1.gtx"
|
|
|
|
skippycapture_skippy1_2_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_skippy1_2.gtx"
|
|
|
|
skippycapture_brainiac2_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_brainiac2.gtx"
|
|
|
|
skippycapture_skippy2_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_skippy2.gtx"
|
|
|
|
skippycapture_brainiac3_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_brainiac3.gtx"
|
|
|
|
skippycapture_flour1_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_flour1.gtx"
|
|
|
|
skippycapture_haiku1_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_haiku1.gtx"
|
|
|
|
skippycapture_flour2_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_flour2.gtx"
|
|
|
|
skippycapture_haiku2_gtx:
|
|
INCBIN "Data/Dialog/Intro/skippycapture_haiku2.gtx"
|
|
|
|
;----BS Dialog--------------------------------------
|
|
|
|
bs_justYouAnMe_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_justYouAnMe.gtx"
|
|
|
|
brainiac_sorry_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_sorry.gtx"
|
|
|
|
bs_answerSomeQuestions_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_answerSomeQuestions.gtx"
|
|
|
|
brainiac_lovzHelping_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_lovzHelping.gtx"
|
|
|
|
bs_showMe_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_showMe.gtx"
|
|
|
|
brainiac_notNeedBRAINIAC_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_notNeedBRAINIAC.gtx"
|
|
|
|
bs_gotAPoint_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_gotAPoint.gtx"
|
|
|
|
brainiac_sezAsk_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_sezAsk.gtx"
|
|
|
|
bs_reallyHard_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_reallyHard.gtx"
|
|
|
|
brainiac_canAnswerAny_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_canAnswerAny.gtx"
|
|
|
|
bs_hereGoes_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_hereGoes.gtx"
|
|
|
|
brainiac_computes1_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes1.gtx"
|
|
|
|
brainiac_computes2_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes2.gtx"
|
|
|
|
brainiac_computes3_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes3.gtx"
|
|
|
|
brainiac_computes4_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes4.gtx"
|
|
|
|
brainiac_computes5_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes5.gtx"
|
|
|
|
brainiac_computes6_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes6.gtx"
|
|
|
|
brainiac_computes7_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_computes7.gtx"
|
|
|
|
bs_well_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_well.gtx"
|
|
|
|
brainiac_surrender_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/brainiac_surrender.gtx"
|
|
|
|
bs_wellSee_gtx:
|
|
INCBIN "Data/Dialog/IntroBS/bs_wellSee.gtx"
|
|
|
|
STATE_MOVETOBRAINIAC EQU 1
|
|
STATE_GYROTALKDELAY1 EQU 2
|
|
STATE_GYROTALKDELAY2 EQU 3
|
|
STATE_BRAINIACCINEMA EQU 4
|
|
STATE_SKIPPY_CAPTURE EQU 5
|
|
STATE_FLOUR_ORDERS_RESCUE EQU 6
|
|
STATE_NORMAL EQU 7
|
|
STATE_WAIT_DIALOG EQU 8
|
|
STATE_BS1 EQU 9
|
|
STATE_BS2 EQU 10
|
|
STATE_BS3 EQU 11
|
|
STATE_BS4 EQU 12
|
|
STATE_BS5 EQU 13
|
|
STATE_BS6 EQU 14
|
|
STATE_BS7 EQU 15
|
|
STATE_BS8 EQU 16
|
|
STATE_BS9 EQU 17
|
|
STATE_BS10 EQU 18
|
|
STATE_BS11 EQU 19
|
|
STATE_BS12 EQU 20
|
|
STATE_BS13 EQU 21
|
|
STATE_BS14 EQU 22
|
|
STATE_BS15 EQU 23
|
|
STATE_BS16 EQU 24
|
|
STATE_BS17 EQU 25
|
|
STATE_BS18 EQU 26
|
|
STATE_BS19 EQU 27
|
|
STATE_BS20 EQU 28
|
|
STATE_BS21 EQU 29
|
|
|
|
VAR_LIGHT EQU 0
|
|
VAR_GYRO EQU 1
|
|
VAR_SKIPPY EQU 2
|
|
VAR_DELAY EQU 3
|
|
GYRO_DEST EQU $d0ce
|
|
|
|
LIGHTINDEX EQU 45
|
|
HULKINDEX EQU 134
|
|
GRUNTINDEX EQU 135
|
|
GYROINDEX EQU 137
|
|
SKIPPYINDEX EQU 138
|
|
PURPLEINDEX EQU 139
|
|
YELLOWINDEX EQU 140
|
|
BRAINIACINDEX EQU 141
|
|
|
|
;---------------------------------------------------------------------
|
|
; Load
|
|
;---------------------------------------------------------------------
|
|
L0215_Load:
|
|
DW ((L0215_LoadFinished - L0215_Load2)) ;size
|
|
L0215_Load2:
|
|
;ld a,STATE_NORMAL
|
|
;ldio [mapState],a
|
|
ldio a,[mapState]
|
|
or a
|
|
jr nz,.notZero
|
|
|
|
ld a,1
|
|
ld [mapState],a
|
|
|
|
.notZero
|
|
cp STATE_BRAINIACCINEMA
|
|
jr z,.brainiacCinema
|
|
|
|
cp STATE_MOVETOBRAINIAC
|
|
jr z,.zeroHealth
|
|
|
|
cp STATE_SKIPPY_CAPTURE
|
|
jr nz,.parseMap
|
|
|
|
ld a,BANK(alarm_gbm)
|
|
ld hl,alarm_gbm
|
|
call InitMusic
|
|
|
|
.zeroHealth
|
|
;zero health so sparklies don't show up on screen
|
|
xor a
|
|
ld [hero0_health],a
|
|
ld [hero1_health],a
|
|
|
|
ld a,2
|
|
ld [canJoinMap],a
|
|
|
|
|
|
.parseMap
|
|
call ParseMap
|
|
ret
|
|
|
|
.brainiacCinema
|
|
;----display cinema scenes------------------------------------
|
|
;----"BRAINIAC givez it to you straight :)"-------------------
|
|
ld a,BANK(dialog)
|
|
ld [dialogBank],a
|
|
|
|
.brain1
|
|
ld hl,dialogSettings
|
|
res DLG_BORDER_BIT,[hl]
|
|
ld a,BANK(brainiac_bg)
|
|
ld hl,brainiac_bg
|
|
call LoadCinemaBG
|
|
call ((.fadeFromBlack16-L0215_Load2)+levelCheckRAM)
|
|
|
|
ld de,((.skippy1 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
ld de,((.endCinemaPart1 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogSkip
|
|
|
|
ld c,0
|
|
ld de,skippycapture_brainiac1_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld d,4
|
|
LONGCALLNOARGS AnimateBRAINIAC
|
|
|
|
;----"Well hot dang!!!"---------------------------------------
|
|
.skippy1
|
|
call ((.fadeToBlack1 - L0215_Load2) + levelCheckRAM)
|
|
call ((.loadSkippy - L0215_Load2) + levelCheckRAM)
|
|
call ((.fadeFromBlack1 - L0215_Load2) + levelCheckRAM)
|
|
|
|
ld de,((.skippy2 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld c,0
|
|
ld de,skippycapture_skippy1_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld d,3
|
|
LONGCALLNOARGS AnimateSkippy
|
|
|
|
;----"just what were you fellers plannin to do"---------------
|
|
.skippy2
|
|
ld c,0
|
|
ld de,skippycapture_skippy1_2_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.brain2 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld d,5
|
|
LONGCALLNOARGS AnimateSkippy
|
|
|
|
;----"we gonna capture big B12 officer"-----------------------
|
|
.brain2
|
|
call ((.loadBRAINIAC - L0215_Load2) + levelCheckRAM)
|
|
|
|
ld de,((.skippy3 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld c,0
|
|
ld de,skippycapture_brainiac2_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld d,6
|
|
LONGCALLNOARGS AnimateBRAINIAC
|
|
|
|
;----"And just how were you thinkin you'd do that?"-----------
|
|
.skippy3
|
|
call ((.fadeToBlack1 - L0215_Load2) + levelCheckRAM)
|
|
call ((.loadSkippy - L0215_Load2) + levelCheckRAM)
|
|
call ((.fadeFromBlack1 - L0215_Load2) + levelCheckRAM)
|
|
|
|
ld de,((.brain3 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld c,0
|
|
ld de,skippycapture_skippy2_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld d,4
|
|
LONGCALLNOARGS AnimateSkippy
|
|
|
|
;----"BRAINIAC sez gonna make him think he capture the base"--
|
|
.brain3
|
|
call ((.loadBRAINIAC - L0215_Load2) + levelCheckRAM)
|
|
|
|
ld de,((.endCinemaPart1 - L0215_Load2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld c,0
|
|
ld de,skippycapture_brainiac3_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld d,6
|
|
LONGCALLNOARGS AnimateBRAINIAC
|
|
|
|
.endCinemaPart1
|
|
call ClearDialog
|
|
|
|
ld a,16
|
|
call SetupFadeToStandard
|
|
call WaitFade
|
|
|
|
ld a,STATE_SKIPPY_CAPTURE
|
|
ldio [mapState],a
|
|
ld a,1
|
|
ld [timeToChangeLevel],a
|
|
|
|
ret
|
|
|
|
.fadeToBlack1
|
|
call ClearDialog
|
|
ld a,1
|
|
call SetupFadeToBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeFromBlack1
|
|
ld a,1
|
|
call SetupFadeFromBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeToBlack16
|
|
ld a,16
|
|
call SetupFadeToBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeFromBlack16
|
|
ld a,16
|
|
call SetupFadeFromBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeCommon
|
|
call WaitFade
|
|
ret
|
|
|
|
.loadSkippy
|
|
ld a,BANK(skippy_bg)
|
|
ld hl,skippy_bg
|
|
call LoadCinemaBG
|
|
ret
|
|
|
|
.loadBRAINIAC
|
|
call ((.fadeToBlack1-L0215_Load2)+levelCheckRAM)
|
|
call ClearDialog
|
|
ld a,BANK(brainiac_bg)
|
|
ld hl,brainiac_bg
|
|
jr .loadCommon
|
|
ret
|
|
|
|
.loadFlour
|
|
ld a,BANK(flour_bg)
|
|
ld hl,flour_bg
|
|
call LoadCinemaBG
|
|
ret
|
|
|
|
.loadCommon
|
|
call LoadCinemaBG
|
|
call ((.fadeFromBlack1-L0215_Load2)+levelCheckRAM)
|
|
ret
|
|
|
|
L0215_LoadFinished:
|
|
;---------------------------------------------------------------------
|
|
; Map
|
|
;---------------------------------------------------------------------
|
|
L0215_Map:
|
|
INCBIN "Data/Levels/L0215_intro_bs3.lvl"
|
|
|
|
;---------------------------------------------------------------------
|
|
; Init
|
|
;---------------------------------------------------------------------
|
|
L0215_Init:
|
|
DW ((L0215_InitFinished - L0215_Init2)) ;size
|
|
L0215_Init2:
|
|
;ld a,STATE_NORMAL
|
|
;ldio [mapState],a
|
|
call SetPressBDialog
|
|
ld a,BANK(dialog)
|
|
ld [dialogBank],a
|
|
|
|
ld a,10
|
|
ld [camera_i],a
|
|
ld [camera_j],a
|
|
ld a,1
|
|
ld [mapLeft],a
|
|
|
|
ld a,[bgTileMap+LIGHTINDEX] ;tile index of first light
|
|
ld [levelVars+VAR_LIGHT],a
|
|
|
|
ldio a,[mapState]
|
|
cp STATE_MOVETOBRAINIAC
|
|
jr nz,.checkSkippyCapture
|
|
|
|
;----skippy and gyro moving to brainiac-----------------------
|
|
;create Gyro, Skippy, and some B12 guards
|
|
call ((.removeHulks - L0215_Init2) + levelCheckRAM)
|
|
ld c,GYROINDEX ;gyro
|
|
ld hl,$d22a
|
|
call CreateInitAndDrawObject
|
|
ld hl,$d18e
|
|
call SetActorDestLoc
|
|
call PointerDEToIndex
|
|
ld [levelVars + VAR_GYRO],a
|
|
|
|
ld c,SKIPPYINDEX ;skippy
|
|
ld hl,$d1ea
|
|
call CreateInitAndDrawObject
|
|
ld hl,$d14e
|
|
call SetActorDestLoc
|
|
call PointerDEToIndex
|
|
ld [levelVars + VAR_SKIPPY],a
|
|
|
|
call ((.createGuards - L0215_Init2) + levelCheckRAM)
|
|
call ((.removeHeroes - L0215_Init2) + levelCheckRAM)
|
|
|
|
ld bc,classB12Soldier
|
|
ld de,classDoNothing
|
|
call ChangeClass
|
|
|
|
ld bc,classMajorSkippy
|
|
ld de,classActor2x2
|
|
call ChangeClass
|
|
|
|
ld bc,classGeneralGyro
|
|
ld de,classActor2x2
|
|
call ChangeClass
|
|
ret
|
|
|
|
.checkSkippyCapture
|
|
cp STATE_SKIPPY_CAPTURE
|
|
jr nz,.checkNormal
|
|
|
|
;----crouton grunts moving to kill guards---------------------
|
|
call ((.removeHulks - L0215_Init2) + levelCheckRAM)
|
|
ld c,GYROINDEX
|
|
ld hl,$d0ce
|
|
call CreateInitAndDrawObject
|
|
ld b,DIR_EAST
|
|
call ((.faceDirection - L0215_Init2) + levelCheckRAM)
|
|
ld a,GROUP_MONSTERN
|
|
call SetGroup
|
|
|
|
ld c,SKIPPYINDEX ;skippy
|
|
ld hl,$d0cb
|
|
call CreateInitAndDrawObject
|
|
ld b,DIR_EAST
|
|
call ((.faceDirection - L0215_Init2) + levelCheckRAM)
|
|
ld a,GROUP_MONSTERN
|
|
call SetGroup
|
|
|
|
call ((.createGuards - L0215_Init2) + levelCheckRAM)
|
|
call ((.removeHeroes - L0215_Init2) + levelCheckRAM)
|
|
|
|
;create croutons
|
|
ld b,6
|
|
ld hl,$d1e9
|
|
call ((.createCroutons - L0215_Init2) + levelCheckRAM)
|
|
ld b,6
|
|
ld hl,$d209
|
|
call ((.createCroutons - L0215_Init2) + levelCheckRAM)
|
|
ld b,2
|
|
ld hl,$d22a
|
|
call ((.createCroutons - L0215_Init2) + levelCheckRAM)
|
|
ld b,2
|
|
ld hl,$d24a
|
|
call ((.createCroutons - L0215_Init2) + levelCheckRAM)
|
|
|
|
ld bc,classMajorSkippy
|
|
ld de,classDoNothing
|
|
call ChangeClass
|
|
|
|
ld bc,classGeneralGyro
|
|
ld de,classDoNothing
|
|
call ChangeClass
|
|
|
|
ret
|
|
|
|
.checkNormal
|
|
;----BS Enters room, must kill hulks--------------------------
|
|
ld a,30 ;delay after killing last hulk before text box
|
|
ld [levelVars + VAR_DELAY],a
|
|
|
|
ld a,BANK(main_in_game_gbm)
|
|
ld hl,main_in_game_gbm
|
|
call InitMusic
|
|
ret
|
|
|
|
.createGuards
|
|
ld c,PURPLEINDEX ;purple guard
|
|
ld hl,$d144
|
|
call CreateInitAndDrawObject
|
|
ld b,DIR_EAST
|
|
call ((.faceDirection - L0215_Init2) + levelCheckRAM)
|
|
ld hl,$d184
|
|
call CreateInitAndDrawObject
|
|
ld b,DIR_EAST
|
|
call ((.faceDirection - L0215_Init2) + levelCheckRAM)
|
|
|
|
ld c,YELLOWINDEX ;yellow guard
|
|
ld hl,$d152
|
|
call CreateInitAndDrawObject
|
|
ld b,DIR_WEST
|
|
call ((.faceDirection - L0215_Init2) + levelCheckRAM)
|
|
ld hl,$d192
|
|
call CreateInitAndDrawObject
|
|
ld b,DIR_WEST
|
|
call ((.faceDirection - L0215_Init2) + levelCheckRAM)
|
|
ret
|
|
|
|
.createCroutons
|
|
ld c,GRUNTINDEX ;crouton class index
|
|
call CreateInitAndDrawObject
|
|
inc hl
|
|
dec b
|
|
jr nz,.createCroutons
|
|
ret
|
|
|
|
.faceDirection
|
|
ld a,b
|
|
call SetFacing
|
|
ld b,METHOD_DRAW
|
|
call CallMethod
|
|
ret
|
|
|
|
.removeHeroes
|
|
ld a,[hero0_index]
|
|
call ((.removeHero - L0215_Init2) + levelCheckRAM)
|
|
|
|
ld a,[hero1_index]
|
|
call ((.removeHero - L0215_Init2) + levelCheckRAM)
|
|
|
|
ld a,1
|
|
ld [heroesIdle],a
|
|
ret
|
|
|
|
.removeHero
|
|
or a
|
|
ret z
|
|
ld c,a
|
|
call GetFirst
|
|
call GetFacing
|
|
ld c,a
|
|
call RemoveFromMap
|
|
ret
|
|
|
|
.removeHulks
|
|
ld a,HULKINDEX
|
|
call DeleteObjectsOfClassIndex
|
|
ret
|
|
|
|
L0215_InitFinished:
|
|
;---------------------------------------------------------------------
|
|
; Check
|
|
;---------------------------------------------------------------------
|
|
;STATE_MOVETOBRAINIAC EQU 0
|
|
;STATE_SKIPPY_CAPTURE EQU 1
|
|
;STATE_NORMAL EQU 2
|
|
L0215_Check:
|
|
DW ((L0215_CheckFinished - L0215_Check2)) ;size
|
|
L0215_Check2:
|
|
call SetSkipStackPos
|
|
call CheckSkip
|
|
|
|
;animate dice lights
|
|
ld a,[levelVars+VAR_LIGHT]
|
|
ld b,a
|
|
|
|
;slow lights
|
|
ldio a,[updateTimer]
|
|
swap a
|
|
and %00000011
|
|
add b
|
|
|
|
ld hl,bgTileMap+LIGHTINDEX
|
|
call ((.updateTwoLights - L0215_Check2) + levelCheckRAM)
|
|
|
|
;fast lights
|
|
ldio a,[updateTimer]
|
|
swap a
|
|
rlca
|
|
and %00000011
|
|
add b
|
|
call ((.updateTwoLights - L0215_Check2) + levelCheckRAM)
|
|
|
|
VECTORTOSTATE ((.stateTable - L0215_Check2) + levelCheckRAM)
|
|
|
|
.stateTable
|
|
DW ((.checkMoveToBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkMoveToBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkGyroTalkDelay1-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkGyroTalkDelay2-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBRAINIACCinema-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkSkippyCapture-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkFlourOrdersRescue-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkNormal-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkWaitDialog-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS1-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS2-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS3-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS4-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS5-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS6-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS7-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS8-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS9-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS10-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS11-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS12-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS13-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS14-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS15-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS16-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS17-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS18-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS19-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS20-L0215_Check2)+levelCheckRAM)
|
|
DW ((.checkBS21-L0215_Check2)+levelCheckRAM)
|
|
|
|
.checkNormal
|
|
;normal state
|
|
;wait 'till all hulks are dead
|
|
ld c,HULKINDEX
|
|
call GetFirst
|
|
or a
|
|
ret nz
|
|
|
|
ld a,1
|
|
ld [heroesIdle],a
|
|
ld a,STATE_BS1
|
|
ldio [mapState],a
|
|
ret
|
|
|
|
.checkWaitDialog
|
|
STDWAITDIALOG
|
|
ret
|
|
|
|
.setupBRAINIAC
|
|
call SetSpeakerToFirstHero
|
|
ld c,BRAINIACINDEX
|
|
ld hl,dialogSettings
|
|
set DLG_BRAINIAC_BIT,[hl]
|
|
ret
|
|
|
|
.checkBS1
|
|
ld hl,levelVars + VAR_DELAY ;allow bullets to explode etc
|
|
dec [hl]
|
|
ret nz
|
|
|
|
ld de,((.endBSBRAINIAC - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogSkip
|
|
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_justYouAnMe_gtx
|
|
WAITDIALOG STATE_BS2
|
|
ret
|
|
.checkBS2
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_sorry_gtx
|
|
WAITDIALOG STATE_BS3
|
|
ret
|
|
.checkBS3
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_answerSomeQuestions_gtx
|
|
WAITDIALOG STATE_BS4
|
|
ret
|
|
.checkBS4
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_lovzHelping_gtx
|
|
WAITDIALOG STATE_BS5
|
|
ret
|
|
.checkBS5
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_showMe_gtx
|
|
WAITDIALOG STATE_BS6
|
|
ret
|
|
.checkBS6
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_notNeedBRAINIAC_gtx
|
|
WAITDIALOG STATE_BS7
|
|
ret
|
|
.checkBS7
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_gotAPoint_gtx
|
|
WAITDIALOG STATE_BS8
|
|
ret
|
|
.checkBS8
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_sezAsk_gtx
|
|
WAITDIALOG STATE_BS9
|
|
ret
|
|
.checkBS9
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_reallyHard_gtx
|
|
WAITDIALOG STATE_BS10
|
|
ret
|
|
.checkBS10
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_canAnswerAny_gtx
|
|
WAITDIALOG STATE_BS11
|
|
ret
|
|
.checkBS11
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_hereGoes_gtx
|
|
WAITDIALOG STATE_BS12
|
|
ret
|
|
.checkBS12
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes1_gtx
|
|
WAITDIALOGNOCLEAR STATE_BS13
|
|
ret
|
|
.checkBS13
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes2_gtx
|
|
WAITDIALOGNOCLEAR STATE_BS14
|
|
ret
|
|
.checkBS14
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes3_gtx
|
|
WAITDIALOGNOCLEAR STATE_BS15
|
|
ret
|
|
.brainiacPrint
|
|
ld h,29
|
|
ld de,$1205
|
|
ld bc,$0203
|
|
call BlitMap
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
ret
|
|
.checkBS15
|
|
ld l,1
|
|
call ((.brainiacPrint-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes4_gtx
|
|
WAITDIALOGNOCLEAR STATE_BS16
|
|
ret
|
|
.checkBS16
|
|
ld l,4
|
|
call ((.brainiacPrint-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes5_gtx
|
|
WAITDIALOGNOCLEAR STATE_BS17
|
|
ret
|
|
.checkBS17
|
|
ld l,7
|
|
call ((.brainiacPrint-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes6_gtx
|
|
WAITDIALOGNOCLEAR STATE_BS18
|
|
ret
|
|
.checkBS18
|
|
ld l,10
|
|
call ((.brainiacPrint-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_computes7_gtx
|
|
WAITDIALOG STATE_BS19
|
|
ret
|
|
.checkBS19
|
|
call SetSpeakerToFirstHero
|
|
DIALOGBOTTOM bs_well_gtx
|
|
WAITDIALOG STATE_BS20
|
|
ret
|
|
.checkBS20
|
|
call ((.setupBRAINIAC-L0215_Check2)+levelCheckRAM)
|
|
DIALOGTOP brainiac_surrender_gtx
|
|
WAITDIALOG STATE_BS21
|
|
ret
|
|
.checkBS21
|
|
;call SetSpeakerToFirstHero
|
|
;DIALOGBOTTOM bs_wellSee_gtx
|
|
.endBSBRAINIAC
|
|
call ClearDialog
|
|
ld a,96
|
|
call SetupFadeToStandard
|
|
call WaitFade
|
|
ld hl,fadeFinalPalette
|
|
ld de,gamePalette
|
|
call CopyPalette64
|
|
|
|
ld hl,$1402
|
|
ld a,l
|
|
ld [curLevelIndex],a
|
|
ld a,h
|
|
ld [curLevelIndex+1],a
|
|
call YankRemotePlayer
|
|
ld a,1
|
|
ld [timeToChangeLevel],a
|
|
ret
|
|
|
|
|
|
.checkMoveToBRAINIAC
|
|
ld de,((.checkBRAINIACCinema - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogSkip
|
|
ld de,((.bothAtFinalDest - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
;skippy there yet?
|
|
ld c,SKIPPYINDEX ;skippy class index
|
|
ld a,[levelVars + VAR_SKIPPY]
|
|
call ((.checkActorAtDest - L0215_Check2) + levelCheckRAM)
|
|
jr z,.afterResetSkippy
|
|
|
|
;reset skippy once he gets to his waypoint
|
|
call GetCurZone
|
|
cp 4
|
|
jr nz,.afterResetSkippy
|
|
|
|
ld hl,$d0cb
|
|
call SetActorDestLoc
|
|
ret
|
|
|
|
.checkActorAtDest
|
|
call IndexToPointerDE
|
|
call IsActorAtDest
|
|
or a
|
|
ret
|
|
|
|
.afterResetSkippy
|
|
;do the same for gyro
|
|
ld c,GYROINDEX
|
|
ld a,[levelVars + VAR_GYRO]
|
|
call ((.checkActorAtDest - L0215_Check2) + levelCheckRAM)
|
|
ret z
|
|
|
|
call GetCurZone
|
|
cp 4
|
|
jr nz,.bothAtFinalDest
|
|
|
|
ld hl,GYRO_DEST
|
|
call SetActorDestLoc
|
|
ret
|
|
|
|
.bothAtFinalDest
|
|
call SetSpeakerToFirstHero
|
|
ld c,GYROINDEX
|
|
ld de,skippycapture_gyves1_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.checkBRAINIACCinema - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogSkip
|
|
ld de,((.gyvesIntroduce2 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld a,100
|
|
ld [levelVars + VAR_DELAY],a
|
|
ld a,STATE_GYROTALKDELAY1
|
|
ldio [mapState],a
|
|
ret
|
|
|
|
.checkGyroTalkDelay1
|
|
ld hl,levelVars + VAR_DELAY
|
|
dec [hl]
|
|
ret nz
|
|
|
|
.gyvesIntroduce2
|
|
ld a,140 ;reset delay for next dialog
|
|
ld [levelVars + VAR_DELAY],a
|
|
|
|
;display second half of dialog
|
|
ld c,GYROINDEX ;gyro class index
|
|
ld de,skippycapture_gyves1_2_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.checkBRAINIACCinema - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld a,STATE_GYROTALKDELAY2
|
|
ldio [mapState],a
|
|
ld a,1
|
|
;ld [timeToChangeLevel],a
|
|
ret
|
|
|
|
.checkGyroTalkDelay2
|
|
ld hl,levelVars + VAR_DELAY
|
|
dec [hl]
|
|
ret nz
|
|
|
|
.checkBRAINIACCinema
|
|
call ClearDialog
|
|
ld a,STATE_BRAINIACCINEMA
|
|
ldio [mapState],a
|
|
ld a,1
|
|
ld [timeToChangeLevel],a
|
|
ret
|
|
|
|
.checkSkippyCapture
|
|
ld de,((.fadeOut - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
call SetDialogSkip
|
|
|
|
;wait until all the guards (PURPLEINDEX & YELLOWINDEX are dead
|
|
;OR all the croutons (GRUNTINDEX) are dead (god forbid)
|
|
ld c,PURPLEINDEX
|
|
call GetFirst
|
|
or a
|
|
jr nz,.checkCroutonsRemaining
|
|
|
|
ld c,YELLOWINDEX
|
|
call GetFirst
|
|
or a
|
|
jr z,.fadeOut
|
|
|
|
.checkCroutonsRemaining
|
|
ld c,GRUNTINDEX
|
|
call GetFirst
|
|
or a
|
|
ret nz
|
|
|
|
.fadeOut
|
|
ld a,96
|
|
call SetupFadeToBlack
|
|
|
|
ld de,0
|
|
call SetDialogForward
|
|
call SetDialogSkip
|
|
|
|
ld a,STATE_FLOUR_ORDERS_RESCUE
|
|
ldio [mapState],a
|
|
|
|
ret
|
|
|
|
.checkFlourOrdersRescue
|
|
.isFlourOrdersRescue
|
|
ld a,[specialFX]
|
|
and FX_FADE
|
|
ret nz
|
|
|
|
ld hl,dialogSettings
|
|
res DLG_BORDER_BIT,[hl]
|
|
call ResetSprites
|
|
ld a,BANK(moon_bg)
|
|
ld hl,moon_bg
|
|
call LoadCinemaBG
|
|
|
|
ld de,((.endCinemaPart2 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogSkip
|
|
ld de,((.flour1 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld a,60
|
|
call SetupFadeFromBlack
|
|
call WaitFade
|
|
|
|
ld a,60
|
|
call Delay
|
|
|
|
call ((.fadeToBlack16-L0215_Check2)+levelCheckRAM)
|
|
|
|
ld a,BANK(triumphBIG_bg)
|
|
ld hl,triumphBIG_bg
|
|
call LoadCinemaBG
|
|
|
|
ld bc,$140c
|
|
ld hl,$1402
|
|
ld de,$0000
|
|
call CinemaBlitRect
|
|
ld a,1
|
|
call Delay
|
|
|
|
call ((.fadeFromBlack16-L0215_Check2)+levelCheckRAM)
|
|
|
|
ld a,30
|
|
call Delay
|
|
|
|
.flour1
|
|
;----"Oh my gosh Major Skippy's been kidnapped!"--------------
|
|
call ((.fadeToBlack16-L0215_Check2)+levelCheckRAM)
|
|
call ((.loadFlour - L0215_Check2) + levelCheckRAM)
|
|
call ((.fadeFromBlack16-L0215_Check2)+levelCheckRAM)
|
|
|
|
ld c,0
|
|
ld de,skippycapture_flour1_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.haiku1 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld d,6
|
|
LONGCALLNOARGS AnimateFlour
|
|
|
|
.haiku1
|
|
;----"Yes what is it?"----------------------------------------
|
|
call ((.loadHaiku - L0215_Check2) + levelCheckRAM)
|
|
|
|
ld a,BANK(haiku_gbm)
|
|
ld hl,haiku_gbm
|
|
call InitMusic
|
|
|
|
ld c,0
|
|
ld de,skippycapture_haiku1_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.flour2 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
LONGCALLNOARGS AnimateHaiku
|
|
|
|
.flour2
|
|
;----"Take your merry band of Ninjas..."----------------------
|
|
call ((.fadeToBlack1-L0215_Check2)+levelCheckRAM)
|
|
call ((.loadFlour - L0215_Check2) + levelCheckRAM)
|
|
call ((.fadeFromBlack1-L0215_Check2)+levelCheckRAM)
|
|
|
|
ld c,0
|
|
ld de,skippycapture_flour2_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.haiku2 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
ld d,6
|
|
LONGCALLNOARGS AnimateFlour
|
|
|
|
.haiku2
|
|
;----"I will take Quatrain..."--------------------------------
|
|
call ((.loadHaiku - L0215_Check2) + levelCheckRAM)
|
|
|
|
ld c,0
|
|
ld de,skippycapture_haiku2_gtx
|
|
call ShowDialogAtBottomNoWait
|
|
|
|
ld de,((.endCinemaPart2 - L0215_Check2) + levelCheckRAM)
|
|
call SetDialogForward
|
|
|
|
LONGCALLNOARGS AnimateHaiku
|
|
|
|
.endCinemaPart2
|
|
call ClearDialog
|
|
|
|
;ld a,16
|
|
;call SetupFadeToWhite
|
|
;call WaitFade
|
|
|
|
ld hl,2058 ;haiku
|
|
ld a,l
|
|
ld [hero0_class],a
|
|
ld a,h
|
|
ld [hero0_class+1],a
|
|
ld a,HERO_HAIKU_FLAG
|
|
ld [hero0_type],a
|
|
|
|
ld hl,FREEVERSE_CINDEX
|
|
ld a,l
|
|
ld [hero1_class],a
|
|
ld a,h
|
|
ld [hero1_class+1],a
|
|
ld a,HERO_BS_FLAG
|
|
ld [hero1_type],a
|
|
|
|
xor a
|
|
ld [hero0_health],a
|
|
ld [hero1_health],a
|
|
|
|
ld hl,$0014
|
|
ld a,l
|
|
ld [curLevelIndex],a
|
|
ld a,h
|
|
ld [curLevelIndex+1],a
|
|
ld a,EXIT_D
|
|
ld [hero0_enterLevelFacing],a
|
|
ld a,1
|
|
ld [timeToChangeLevel],a
|
|
|
|
ld a,STATE_NORMAL
|
|
ldio [mapState],a
|
|
|
|
ret
|
|
|
|
.updateTwoLights
|
|
ld [hl+],a
|
|
call ((.incCount4 - L0215_Check2) + levelCheckRAM)
|
|
ld [hl+],a
|
|
ret
|
|
|
|
.fadeToBlack1
|
|
ld a,1
|
|
call SetupFadeToBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeFromBlack1
|
|
ld a,1
|
|
call SetupFadeFromBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeToBlack16
|
|
ld a,16
|
|
call SetupFadeToBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeFromBlack16
|
|
ld a,16
|
|
call SetupFadeFromBlack
|
|
jr .fadeCommon
|
|
|
|
.fadeCommon
|
|
call WaitFade
|
|
ret
|
|
|
|
.incCount4
|
|
sub b
|
|
inc a
|
|
and %00000011
|
|
add b
|
|
ret
|
|
|
|
.loadSkippy
|
|
ld a,BANK(skippy_bg)
|
|
ld hl,skippy_bg
|
|
jr .loadCommon
|
|
ret
|
|
|
|
.loadFlour
|
|
ld a,BANK(flour_bg)
|
|
ld hl,flour_bg
|
|
call LoadCinemaBG
|
|
ret
|
|
|
|
.loadHaiku
|
|
call ((.fadeToBlack1-L0215_Check2)+levelCheckRAM)
|
|
ld a,BANK(haiku_bg)
|
|
ld hl,haiku_bg
|
|
jr .loadCommon
|
|
ret
|
|
|
|
.loadCommon
|
|
call LoadCinemaBG
|
|
call ((.fadeFromBlack1-L0215_Check2)+levelCheckRAM)
|
|
ret
|
|
|
|
L0215_CheckFinished:
|
|
PRINTT "0215 Script Sizes (Load/Init/Check) (of $500): "
|
|
PRINTV (L0215_LoadFinished - L0215_Load2)
|
|
PRINTT " / "
|
|
PRINTV (L0215_InitFinished - L0215_Init2)
|
|
PRINTT " / "
|
|
PRINTV (L0215_CheckFinished - L0215_Check2)
|
|
PRINTT "\n"
|
|
|