2020-05-31 09:42:40 +01:00
|
|
|
; L1105.asm Save game screen
|
2020-05-31 04:23:06 +01:00
|
|
|
; Generated 05.09.2001 by mlevel
|
|
|
|
; Modified 05.09.2001 by Abe Pralle
|
|
|
|
|
2020-06-15 06:19:36 +01:00
|
|
|
INCLUDE "Source/Defs.inc"
|
|
|
|
INCLUDE "Source/Levels.inc"
|
2020-05-31 04:23:06 +01:00
|
|
|
|
|
|
|
VAR_SELECTION EQU 0
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
SECTION "Level1105Gfx1",ROMX
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
savegame_bg:
|
2020-06-15 01:47:17 +01:00
|
|
|
INCBIN "Data/Cinema/Appomattox/savegame.bg"
|
2020-05-31 04:23:06 +01:00
|
|
|
|
|
|
|
cantsave_bg:
|
2020-06-15 01:47:17 +01:00
|
|
|
INCBIN "Data/Cinema/Appomattox/cantsave.bg"
|
2020-05-31 04:23:06 +01:00
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
SECTION "Level1105Gfx2",ROMX
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
cantsave_flying_bg:
|
2020-06-15 01:47:17 +01:00
|
|
|
INCBIN "Data/Cinema/Appomattox/cantsave_flying.bg"
|
2020-05-31 04:23:06 +01:00
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
SECTION "Level1105Section",ROMX
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
|
|
|
L1105_Contents::
|
|
|
|
DW L1105_Load
|
|
|
|
DW L1105_Init
|
|
|
|
DW L1105_Check
|
|
|
|
DW L1105_Map
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
; Load
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
L1105_Load:
|
|
|
|
DW ((L1105_LoadFinished - L1105_Load2)) ;size
|
|
|
|
L1105_Load2:
|
|
|
|
ld a,[amLinkMaster]
|
|
|
|
or a
|
|
|
|
jp z,((.amSlave-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld a,[appomattoxMapIndex]
|
|
|
|
or a
|
|
|
|
jp z,((.amFlying-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld a,BANK(savegame_bg)
|
|
|
|
ld hl,savegame_bg
|
|
|
|
call LoadCinemaBG
|
|
|
|
|
|
|
|
ld a,15
|
|
|
|
call SetupFadeFromStandard
|
|
|
|
call WaitFade
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ld [levelVars+VAR_SELECTION],a
|
|
|
|
.waitSelection
|
|
|
|
call ((.blitCurSelection-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld a,1
|
|
|
|
call Delay
|
|
|
|
|
|
|
|
ld a,[myJoy]
|
|
|
|
bit JOY_UP_BIT,a
|
|
|
|
jr z,.checkDown
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ld [levelVars+VAR_SELECTION],a
|
|
|
|
jr .checkDone
|
|
|
|
|
|
|
|
.checkDown
|
|
|
|
bit JOY_DOWN_BIT,a
|
|
|
|
jr z,.checkDone
|
|
|
|
|
|
|
|
ld a,1
|
|
|
|
ld [levelVars+VAR_SELECTION],a
|
|
|
|
|
|
|
|
.checkDone
|
|
|
|
ld a,[myJoy]
|
|
|
|
bit JOY_A_BIT,a
|
|
|
|
jr z,.waitSelection
|
|
|
|
|
|
|
|
ld a,[levelVars+VAR_SELECTION]
|
|
|
|
or a
|
|
|
|
call z,((.saveGame-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld a,15
|
|
|
|
call SetupFadeToStandard
|
|
|
|
call WaitFade
|
|
|
|
|
|
|
|
ld a,EXIT_S
|
|
|
|
ld [hero0_enterLevelFacing],a
|
|
|
|
ld [hero1_enterLevelFacing],a
|
|
|
|
|
|
|
|
ld hl,$1300
|
|
|
|
ld a,l
|
|
|
|
ld [curLevelIndex],a
|
|
|
|
ld a,h
|
|
|
|
ld [curLevelIndex+1],a
|
|
|
|
ld a,1
|
|
|
|
ld [timeToChangeLevel],a
|
|
|
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
.saveGame
|
|
|
|
ld a,$0a ;enable save ram access
|
|
|
|
ld [0],a
|
|
|
|
|
|
|
|
ld hl,$a000 ;start of save area $a000-$bfff
|
|
|
|
ld de,gameState
|
|
|
|
ld bc,9
|
|
|
|
xor a
|
|
|
|
call ((.saveData-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld de,inventory
|
|
|
|
ld bc,16
|
|
|
|
xor a
|
|
|
|
call ((.saveData-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld de,levelState
|
|
|
|
ld bc,256
|
|
|
|
ld a,LEVELSTATEBANK
|
|
|
|
call ((.saveData-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
ld de,flightCode
|
|
|
|
ld bc,256
|
|
|
|
ld a,FLIGHTCODEBANK
|
|
|
|
call ((.saveData-L1105_Load2)+levelCheckRAM)
|
|
|
|
|
|
|
|
xor a
|
|
|
|
ld [0],a ;disable save ram to prevent false writes on powerdown
|
|
|
|
|
|
|
|
;blit "saved"
|
|
|
|
ld bc,$0a06
|
|
|
|
ld de,$0509
|
|
|
|
ld hl,$1412
|
|
|
|
call CinemaBlitRect
|
|
|
|
ld a,15
|
|
|
|
call Delay
|
|
|
|
ret
|
|
|
|
|
|
|
|
.saveData
|
|
|
|
;copies "bc" # of bytes from [de] to [hl] in bank "a"
|
|
|
|
ldio [$ff70],a
|
|
|
|
.saveLoop
|
|
|
|
ld a,[de]
|
|
|
|
inc de
|
|
|
|
ld [hl+],a
|
|
|
|
dec bc
|
|
|
|
xor a
|
|
|
|
cp b
|
|
|
|
jr nz,.saveLoop
|
|
|
|
cp c
|
|
|
|
jr nz,.saveLoop
|
|
|
|
ret
|
|
|
|
|
|
|
|
.blitCurSelection
|
|
|
|
ldio a,[updateTimer]
|
|
|
|
and %1000
|
|
|
|
jr z,.blitAppropriateCursor
|
|
|
|
|
|
|
|
;blit empty space
|
|
|
|
ld bc,$0a06
|
|
|
|
ld de,$0509
|
|
|
|
ld hl,$1400
|
|
|
|
call CinemaBlitRect
|
|
|
|
ret
|
|
|
|
|
|
|
|
.blitAppropriateCursor
|
|
|
|
ld a,[levelVars+VAR_SELECTION] ;selection * 6 + 6
|
|
|
|
rlca
|
|
|
|
ld b,a
|
|
|
|
rlca
|
|
|
|
add b
|
|
|
|
add 6
|
|
|
|
ld l,a
|
|
|
|
ld h,$14
|
|
|
|
ld bc,$0a06
|
|
|
|
ld de,$0509
|
|
|
|
call CinemaBlitRect
|
|
|
|
ret
|
|
|
|
|
|
|
|
.amFlying
|
|
|
|
ld a,BANK(cantsave_flying_bg)
|
|
|
|
ld hl,cantsave_flying_bg
|
|
|
|
call LoadCinemaBG
|
|
|
|
jr .showReason
|
|
|
|
|
|
|
|
.amSlave
|
|
|
|
ld a,BANK(cantsave_bg)
|
|
|
|
ld hl,cantsave_bg
|
|
|
|
call LoadCinemaBG
|
|
|
|
|
|
|
|
.showReason
|
|
|
|
ld a,15
|
|
|
|
call SetupFadeFromStandard
|
|
|
|
call WaitFade
|
|
|
|
|
|
|
|
ld de,((.returnToShip-L1105_Load2)+levelCheckRAM)
|
|
|
|
call SetDialogForward
|
|
|
|
call SetDialogSkip
|
|
|
|
|
|
|
|
ld a,150
|
|
|
|
call Delay
|
|
|
|
|
|
|
|
.returnToShip
|
|
|
|
call ClearDialogSkipForward
|
|
|
|
|
|
|
|
ld a,15
|
|
|
|
call SetupFadeToStandard
|
|
|
|
call WaitFade
|
|
|
|
|
|
|
|
ld a,EXIT_S
|
|
|
|
ld [hero0_enterLevelFacing],a
|
|
|
|
ld [hero1_enterLevelFacing],a
|
|
|
|
|
|
|
|
ld hl,$1300
|
|
|
|
ld a,l
|
|
|
|
ld [curLevelIndex],a
|
|
|
|
ld a,h
|
|
|
|
ld [curLevelIndex+1],a
|
|
|
|
ld a,1
|
|
|
|
ld [timeToChangeLevel],a
|
|
|
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
L1105_LoadFinished:
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
; Map
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
L1105_Map:
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
; Init
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
L1105_Init:
|
|
|
|
DW ((L1105_InitFinished - L1105_Init2)) ;size
|
|
|
|
L1105_Init2:
|
|
|
|
ret
|
|
|
|
|
|
|
|
L1105_InitFinished:
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
; Check
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
L1105_Check:
|
|
|
|
DW ((L1105_CheckFinished - L1105_Check2)) ;size
|
|
|
|
L1105_Check2:
|
|
|
|
ret
|
|
|
|
|
|
|
|
L1105_CheckFinished:
|
2022-01-08 03:29:25 +00:00
|
|
|
PRINT "1105 Script Sizes (Load/Init/Check) (of $500): "
|
|
|
|
PRINT (L1105_LoadFinished - L1105_Load2)
|
|
|
|
PRINT " / "
|
|
|
|
PRINT (L1105_InitFinished - L1105_Init2)
|
|
|
|
PRINT " / "
|
|
|
|
PRINT (L1105_CheckFinished - L1105_Check2)
|
|
|
|
PRINT "\n"
|
2020-05-31 04:23:06 +01:00
|
|
|
|