ootw: intro: more splitting up

This commit is contained in:
Vince Weaver 2021-03-22 22:26:56 -04:00
parent 7a9357ed5d
commit dc6a889398
7 changed files with 588 additions and 697 deletions

76
games/ootw/intro/Makefile Normal file
View File

@ -0,0 +1,76 @@
include ../../../Makefile.inc
#DOS33 = ../../utils/dos33fs-utils/dos33
#PNG2RLE = ../../utils/gr-utils/png2rle
#PNG2LZ4 = ../../utils/gr-utils/png2lz4
#TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
#LZSA = ~/research/lzsa/lzsa/lzsa
COMMON = ..
LINKER_SCRIPTS = ../../../linker_scripts
all: INTRO
####
INTRO: intro.o
ld65 -o INTRO intro.o -C $(LINKER_SCRIPTS)/apple2_1700.inc
intro.o: intro.s \
$(COMMON)/gr_copy.s \
$(COMMON)/gr_fast_clear.s \
$(COMMON)/gr_pageflip.s \
$(COMMON)/gr_unrle.s \
$(COMMON)/gr_putsprite.s \
$(COMMON)/gr_overlay.s \
gr_run_sequence.s \
$(COMMON)/keyboard.s \
$(COMMON)/random16.s \
$(COMMON)/text_print.s \
$(COMMON)/zp.inc \
intro_01_building.s \
intro_02_outer_door.s \
intro_03_elevator.s \
graphics/01_building/intro_car.inc \
graphics/01_building/intro_building.inc \
graphics/01_building/intro_building_car.inc \
graphics/02_outer_door/outer_door.inc \
graphics/02_outer_door/feet.inc \
graphics/03_elevator/intro_elevator.inc \
graphics/03_elevator/intro_off_elevator.inc \
graphics/03_elevator/intro_walking.inc \
graphics/04_keypad/intro_scanner_door.inc \
graphics/04_keypad/intro_approach.inc \
graphics/04_keypad/intro_keypad_bg.inc \
graphics/04_keypad/intro_hands.inc \
graphics/04_keypad/intro_opening.inc \
graphics/05_scanner/intro_scanner.inc \
graphics/05_scanner/intro_scanning.inc \
graphics/05_scanner/intro_ai_bg.inc \
graphics/05_scanner/intro_ai.inc \
graphics/06_console/intro_desktop.inc \
graphics/06_console/intro_cursor.inc \
graphics/06_console/intro_collider.inc \
graphics/07_soda/intro_open_soda.inc \
graphics/07_soda/intro_drinking.inc \
graphics/08_lightning/lightning.inc \
graphics/09_tunnel/intro_tunnel1.inc \
graphics/09_tunnel/intro_tunnel2.inc \
graphics/10_gone/intro_zappo.inc \
graphics/10_gone/intro_gone.inc
ca65 -o intro.o intro.s -l intro.lst
####
graphics/01_building/intro_car.inc:
cd graphics && make
####
clean:
rm -f *~ *.o *.lst *.lz4 *.lzsa INTRO \
intro_data_01 intro_data_04 intro_data_06 \
intro_data_08 intro_data_09
distclean:
cd graphics && make clean

View File

@ -37,22 +37,7 @@ intro_building_car.inc: \
intro_building_car.lzsa
echo "intro_building_car_lzsa: .incbin \"intro_building_car.lzsa\"" > intro_building_car.inc
# $(PNG2RLE) asm intro_car1.png intro_car1 > intro_car.inc
# $(PNG2RLE) asm intro_car2.png intro_car2 >> intro_car.inc
# $(PNG2RLE) asm intro_car3.png intro_car3 >> intro_car.inc
# $(PNG2RLE) asm intro_car4.png intro_car4 >> intro_car.inc
# $(PNG2RLE) asm intro_car5.png intro_car5 >> intro_car.inc
# $(PNG2RLE) asm intro_car6.png intro_car6 >> intro_car.inc
# $(PNG2RLE) asm intro_car7.png intro_car7 >> intro_car.inc
# $(PNG2RLE) asm intro_car8.png intro_car8 >> intro_car.inc
# $(PNG2RLE) asm intro_car9.png intro_car9 >> intro_car.inc
# $(PNG2RLE) asm intro_car10.png intro_car10 >> intro_car.inc
# $(PNG2RLE) asm intro_car12.png intro_car12 >> intro_car.inc
# $(PNG2RLE) asm intro_car13.png intro_car13 >> intro_car.inc
# $(PNG2RLE) asm intro_car14.png intro_car14 >> intro_car.inc
#####
%.gr: %.png
$(PNG2GR) $< $@
@ -60,75 +45,6 @@ intro_building_car.inc: \
%.lzsa: %.gr
$(LZSA) -r -f2 $< $@
#all: intro_car.inc intro_building.inc intro_building_car.inc \
# intro_car_lz4.inc intro_building_lz4.inc intro_building_car_lz4.inc
#####
#intro_building_car.inc: $(PNG2RLE) intro_building_car.png
# $(PNG2RLE) asm intro_building_car.png building_car_rle > intro_building_car.inc
#####
#intro_building.inc: $(PNG2RLE) intro_building.png
# $(PNG2RLE) asm intro_building.png building_rle > intro_building.inc
#####
#intro_car.inc: $(PNG2RLE) intro_car1.png intro_car2.png \
# intro_car3.png intro_car4.png intro_car5.png \
# intro_car6.png intro_car7.png intro_car8.png \
# intro_car9.png intro_car10.png intro_car12.png \
# intro_car13.png intro_car14.png
# $(PNG2RLE) asm intro_car1.png intro_car1 > intro_car.inc
# $(PNG2RLE) asm intro_car2.png intro_car2 >> intro_car.inc
# $(PNG2RLE) asm intro_car3.png intro_car3 >> intro_car.inc
# $(PNG2RLE) asm intro_car4.png intro_car4 >> intro_car.inc
# $(PNG2RLE) asm intro_car5.png intro_car5 >> intro_car.inc
# $(PNG2RLE) asm intro_car6.png intro_car6 >> intro_car.inc
# $(PNG2RLE) asm intro_car7.png intro_car7 >> intro_car.inc
# $(PNG2RLE) asm intro_car8.png intro_car8 >> intro_car.inc
# $(PNG2RLE) asm intro_car9.png intro_car9 >> intro_car.inc
# $(PNG2RLE) asm intro_car10.png intro_car10 >> intro_car.inc
# $(PNG2RLE) asm intro_car12.png intro_car12 >> intro_car.inc
# $(PNG2RLE) asm intro_car13.png intro_car13 >> intro_car.inc
# $(PNG2RLE) asm intro_car14.png intro_car14 >> intro_car.inc
#####
#intro_building_car_lz4.inc: $(PNG2LZ4) intro_building_car.png
# $(PNG2LZ4) asm intro_building_car.png building_car_rle > intro_building_car_lz4.inc
#####
#intro_building_lz4.inc: $(PNG2LZ4) intro_building.png
# $(PNG2LZ4) asm intro_building.png building_rle > intro_building_lz4.inc
#####
#intro_car_lz4.inc: $(PNG2LZ4) intro_car1.png intro_car2.png \
# intro_car3.png intro_car4.png intro_car5.png \
# intro_car6.png intro_car7.png intro_car8.png \
# intro_car9.png intro_car10.png intro_car12.png \
# intro_car13.png intro_car14.png
# $(PNG2LZ4) asm intro_car1.png intro_car1 > intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car2.png intro_car2 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car3.png intro_car3 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car4.png intro_car4 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car5.png intro_car5 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car6.png intro_car6 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car7.png intro_car7 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car8.png intro_car8 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car9.png intro_car9 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car10.png intro_car10 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car12.png intro_car12 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car13.png intro_car13 >> intro_car_lz4.inc
# $(PNG2LZ4) asm intro_car14.png intro_car14 >> intro_car_lz4.inc
#####
clean:

View File

@ -1,7 +1,5 @@
include ../../../../../Makefile.inc
#PNG2RLE = ../../../../../gr-utils/png2rle
#PNG2LZ4 = ../../../../../gr-utils/png2lz4
PNG2GR = ../../../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
@ -42,62 +40,6 @@ feet.inc: feet01.lzsa feet02.lzsa \
%.lzsa: %.gr
$(LZSA) -r -f2 $< $@
#outer_door.inc: $(PNG2RLE) outer_door.png
# $(PNG2RLE) asm outer_door.png outer_door_rle > outer_door.inc
#feet.inc: $(PNG2RLE) feet01.png feet02.png \
# feet03.png feet04.png feet05.png feet06.png \
# feet07.png feet08.png feet09.png feet10.png \
# feet11.png feet12.png feet13.png feet14.png \
# feet15.png blank.png
# $(PNG2RLE) asm feet01.png feet01_rle > feet.inc
# $(PNG2RLE) asm feet02.png feet02_rle >> feet.inc
# $(PNG2RLE) asm feet03.png feet03_rle >> feet.inc
# $(PNG2RLE) asm feet04.png feet04_rle >> feet.inc
# $(PNG2RLE) asm feet05.png feet05_rle >> feet.inc
# $(PNG2RLE) asm feet06.png feet06_rle >> feet.inc
# $(PNG2RLE) asm feet07.png feet07_rle >> feet.inc
# $(PNG2RLE) asm feet08.png feet08_rle >> feet.inc
# $(PNG2RLE) asm feet09.png feet09_rle >> feet.inc
# $(PNG2RLE) asm feet10.png feet10_rle >> feet.inc
# $(PNG2RLE) asm feet11.png feet11_rle >> feet.inc
# $(PNG2RLE) asm feet12.png feet12_rle >> feet.inc
# $(PNG2RLE) asm feet13.png feet13_rle >> feet.inc
# $(PNG2RLE) asm feet14.png feet14_rle >> feet.inc
# $(PNG2RLE) asm feet15.png feet15_rle >> feet.inc
#####
#outer_door_lz4.inc: $(PNG2LZ4) outer_door.png
# $(PNG2LZ4) asm outer_door.png outer_door_rle > outer_door_lz4.inc
#feet_lz4.inc: $(PNG2LZ4) feet01.png feet02.png \
# feet03.png feet04.png feet05.png feet06.png \
# feet07.png feet08.png feet09.png feet10.png \
# feet11.png feet12.png feet13.png feet14.png \
# feet15.png blank.png
# $(PNG2LZ4) asm feet01.png feet01_rle > feet_lz4.inc
# $(PNG2LZ4) asm feet02.png feet02_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet03.png feet03_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet04.png feet04_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet05.png feet05_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet06.png feet06_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet07.png feet07_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet08.png feet08_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet09.png feet09_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet10.png feet10_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet11.png feet11_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet12.png feet12_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet13.png feet13_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet14.png feet14_rle >> feet_lz4.inc
# $(PNG2LZ4) asm feet15.png feet15_rle >> feet_lz4.inc
#####
clean:

View File

@ -1,8 +1,5 @@
include ../../../../../Makefile.inc
#PNG2RLE = ../../../gr-utils/png2rle
#PNG2LZ4 = ../../../gr-utils/png2lz4
PNG2GR = ../../../../../utils/gr-utils/png2gr
LZSA = ~/research/lzsa/lzsa/lzsa
@ -41,49 +38,6 @@ intro_walking.inc: walking00.lzsa walking01.lzsa walking02.lzsa \
%.lzsa: %.gr
$(LZSA) -r -f2 $< $@
#####
#
#intro_elevator.inc: $(PNG2RLE) intro_elevator.png
# $(PNG2RLE) asm intro_elevator.png elevator_rle > intro_elevator.inc
#
#intro_off_elevator.inc: $(PNG2RLE) intro_off_elevator.png
# $(PNG2RLE) asm intro_off_elevator.png off_elevator_rle > intro_off_elevator.inc
#
#intro_walking.inc: $(PNG2RLE) walking00.png walking01.png walking02.png \
# walking03.png walking04.png walking05.png walking06.png \
# walking07.png walking08.png
# $(PNG2RLE) asm walking01.png walking00_rle > intro_walking.inc
# $(PNG2RLE) asm walking01.png walking01_rle >> intro_walking.inc
# $(PNG2RLE) asm walking02.png walking02_rle >> intro_walking.inc
# $(PNG2RLE) asm walking03.png walking03_rle >> intro_walking.inc
# $(PNG2RLE) asm walking04.png walking04_rle >> intro_walking.inc
# $(PNG2RLE) asm walking05.png walking05_rle >> intro_walking.inc
# $(PNG2RLE) asm walking06.png walking06_rle >> intro_walking.inc
# $(PNG2RLE) asm walking07.png walking07_rle >> intro_walking.inc
# $(PNG2RLE) asm walking08.png walking08_rle >> intro_walking.inc
#####
#intro_elevator_lz4.inc: $(PNG2LZ4) intro_elevator.png
# $(PNG2LZ4) asm intro_elevator.png elevator_rle > intro_elevator_lz4.inc
#intro_off_elevator_lz4.inc: $(PNG2LZ4) intro_off_elevator.png
# $(PNG2LZ4) asm intro_off_elevator.png off_elevator_rle > intro_off_elevator_lz4.inc
#intro_walking_lz4.inc: $(PNG2LZ4) walking00.png walking01.png walking02.png \
# walking03.png walking04.png walking05.png walking06.png \
# walking07.png walking08.png
# $(PNG2LZ4) asm walking01.png walking00_rle > intro_walking_lz4.inc
# $(PNG2LZ4) asm walking01.png walking01_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking02.png walking02_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking03.png walking03_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking04.png walking04_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking05.png walking05_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking06.png walking06_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking07.png walking07_rle >> intro_walking_lz4.inc
# $(PNG2LZ4) asm walking08.png walking08_rle >> intro_walking_lz4.inc
#####
clean:

View File

@ -33,460 +33,15 @@ repeat_intro:
jsr intro_01_building
;===============================
;===============================
; Walk into door
;===============================
;===============================
;===============================
; Walking to door
;==================================
; draw feet going into door
jsr intro_02_outer_door
lda #<feet_sequence
sta INTRO_LOOPL
lda #>feet_sequence
sta INTRO_LOOPH
;===============================
; Elevator
jsr run_sequence
;===============================
;===============================
; Elevator going down
;===============================
;===============================
elevator:
;=============================
; Load background to $c00 and $1000
lda #<(intro_elevator_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(intro_elevator_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$c ; load to off-screen $c00
jsr decompress_lzsa2_fast
lda #<(intro_elevator_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(intro_elevator_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$10 ; load also to off-screen $1000
jsr decompress_lzsa2_fast
jsr gr_copy_to_current
lda #$66
sta COLOR
; elevator outer door
ldx #39
stx V2
ldx #4
ldy #14
jsr vlin ; VLIN 4,39 AT 14 (X, V2 at Y)
ldx #35
stx V2
ldx #7
ldy #18
jsr vlin ; VLIN 7,35 AT 18 (X, V2 at Y)
; elevator inner door
ldx #2
stx ELEVATOR_COUNT
elevator_middle:
ldx #38
stx V2
ldx #5
ldy #15
jsr vlin ; X, V2 at Y
ldx #36
stx V2
ldx #6
ldy #17
jsr vlin ; X, V2 at Y
elevator_inner:
ldx #37
stx V2
ldx #5
ldy #16
jsr vlin ; X, V2 at Y
jsr page_flip
jsr gr_copy_to_current
ldx #50
jsr long_wait
dec ELEVATOR_COUNT
lda ELEVATOR_COUNT
beq elevator_inner
cmp #1
beq elevator_middle
; door closed
jsr page_flip
ldx #100
jsr long_wait
;======================
; yellow line goes down
;======================
lda #0
sta COLOR
lda #5
sta V2
yellow_line_down:
jsr gr_copy_to_current
ldx #5
ldy #16
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #12
jsr long_wait
inc V2
lda V2
cmp #37
bne yellow_line_down
lda DRAW_PAGE
pha
lda #$c ; erase yellow line
sta DRAW_PAGE ; on page $1000 version
ldx #5
ldy #16
jsr vlin ; X, V2 at Y
pla
sta DRAW_PAGE
;========================
; change floor indicators
;========================
lda #$33
sta COLOR
lda #5
sta V2
lda #4
sta PARTICLE_COUNT
floor_loop:
jsr gr_copy_to_current_1000
lda PARTICLE_COUNT
asl
tay
ldx indicators,Y
lda indicators+1,Y
jsr plot
jsr page_flip
ldx #150
jsr long_wait
dec PARTICLE_COUNT
bpl floor_loop
;====================
; dark elevator
;====================
; clear $c00 to black
lda DRAW_PAGE
pha
lda #$8
sta DRAW_PAGE
jsr clear_all
pla
sta DRAW_PAGE
; blue from 20, 30 - 20,34 and yellow (brown?) from 20,0 to 20,30
; scrolls down until all yellow
lda #30
sta ELEVATOR_COUNT
going_down_loop:
jsr gr_copy_to_current ; copy black screen in
; draw the yellow part
lda #$DD
sta COLOR
lda ELEVATOR_COUNT
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
lda #$22 ; draw the blue part
sta COLOR
lda ELEVATOR_COUNT
clc
adc #4
cmp #40
bmi not_too_big
lda #40
not_too_big:
sta V2
ldx ELEVATOR_COUNT
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #8 ; pause
jsr long_wait
inc ELEVATOR_COUNT
lda ELEVATOR_COUNT
cmp #40
bne going_down_loop
;=====================
; all yellow for a bit
;=====================
jsr gr_copy_to_current ; copy black screen in
lda #$DD
sta COLOR
lda #40
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #100 ; wait a bit
jsr long_wait
; single blue dot
; solid blue line 10 later
lda #2
sta ELEVATOR_CYCLE
going_down_repeat:
lda #1
sta ELEVATOR_COUNT
going_down_blue:
jsr gr_copy_to_current ; copy black screen in
; draw the blue part
lda #$22
sta COLOR
lda ELEVATOR_COUNT
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
gdb_smc:
lda #$dd ; draw the blue part
sta COLOR
lda #40
sta V2
ldx ELEVATOR_COUNT
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #8 ; pause
jsr long_wait
inc ELEVATOR_COUNT
lda ELEVATOR_COUNT
cmp #40
bne going_down_blue
dec ELEVATOR_CYCLE
beq elevator_exit
lda #1
sta ELEVATOR_COUNT
going_down_black:
jsr gr_copy_to_current ; copy black screen in
; draw the blue part
lda #$00
sta COLOR
lda ELEVATOR_COUNT
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
lda #$22 ; draw the blue part
sta COLOR
lda #40
sta V2
ldx ELEVATOR_COUNT
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #8 ; pause
jsr long_wait
inc ELEVATOR_COUNT
lda ELEVATOR_COUNT
cmp #40
bne going_down_black
lda #$00
sta gdb_smc+1
jmp going_down_repeat
; black, 2, blue, black about 20
; blue until hit bottom, doors open
elevator_exit:
ldx #100 ; pause
jsr long_wait
;===============================
;===============================
; Getting out of Elevator
;===============================
;===============================
;=============================
; Load elevator background
lda #<(intro_off_elevator_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(intro_off_elevator_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$c ; load to off-screen $c00
jsr decompress_lzsa2_fast
lda #<(walking00_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(walking00_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$10 ; load to off-screen $1000
jsr decompress_lzsa2_fast
lda #10
sta ELEVATOR_COUNT
elevator_open_loop:
jsr gr_overlay ; note: overwrites color
lda #$00
sta COLOR
; Would have liked to have a central purple stripe, but not easy
; 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
lda ELEVATOR_COUNT
sta ELEVATOR_CYCLE
elevator_inner_loop:
lda #9
clc
adc ELEVATOR_CYCLE
tay
lda #40
sta V2
ldx #0
jsr vlin ; X, V2 at Y
sec
lda #30
sbc ELEVATOR_CYCLE
tay
lda #40
sta V2
ldx #0
jsr vlin ; X, V2 at Y
dec ELEVATOR_CYCLE
bne elevator_inner_loop
jsr page_flip
ldx #25
jsr long_wait ; pause
dec ELEVATOR_COUNT
bne elevator_open_loop
;==================================
; draw walking off the elevator
lda #<walking_sequence
sta INTRO_LOOPL
lda #>walking_sequence
sta INTRO_LOOPH
jsr run_sequence
;======================================
; make background black and pause a bit
jsr clear_all
jsr page_flip
; no need to pause as uncompressing LZ4 below
; takes a bit
; ldx #80
; jsr long_wait
jsr intro_03_elevator
;===============================
;===============================
@ -1843,27 +1398,10 @@ plot_particle:
rts
;.include "../intro_data.s"
DATA_LOCATION = $9000
; intro1,intro2,intro3
; get these addresses from intro_data_01.lst
.if 0
building_sequence = (DATA_LOCATION+$06C9)
feet_sequence = (DATA_LOCATION+$0DDD)
walking_sequence = (DATA_LOCATION+$1304)
walking00_lzsa = (DATA_LOCATION+$0F10)
intro_off_elevator_lzsa = (DATA_LOCATION+$0ECB)
indicators = (DATA_LOCATION+$12FA)
intro_elevator_lzsa = (DATA_LOCATION+$0DF9)
.endif
intro1_data_lzsa:
; .incbin "intro_data_01.lzsa"
.include "intro_data_01.s"
; intro4,intro5
@ -1957,3 +1495,5 @@ intro9_data_lzsa:
;========================
.include "intro_01_building.s"
.include "intro_02_outer_door.s"
.include "intro_03_elevator.s"

View File

@ -1,3 +1,27 @@
;==================================
; OOTW -- Intro -- Walking to door
;==================================
;===============================
;===============================
; Walk into door
;===============================
;===============================
intro_02_outer_door:
;==================================
; draw feet going into door
lda #<feet_sequence
sta INTRO_LOOPL
lda #>feet_sequence
sta INTRO_LOOPH
jmp run_sequence ; returns for us
;=================================
;=================================
; Intro Segment 02 Data (Door)
@ -8,7 +32,7 @@
.include "graphics/02_outer_door/outer_door.inc"
.include "graphics/02_outer_door/feet.inc"
;.include "graphics/08_lightning/nothing.inc"
;=============================
; Feet going in door sequence
@ -39,41 +63,3 @@ feet_sequence:
.word nothing_lzsa
.byte 0
;=================================
;=================================
; Intro Segment 03 Data (Elevator)
;=================================
;=================================
.include "graphics/03_elevator/intro_elevator.inc"
.include "graphics/03_elevator/intro_off_elevator.inc"
.include "graphics/03_elevator/intro_walking.inc"
; Elevator light co-ordinates
; we load them backwards
indicators:
.byte 18,4 ; 4
.byte 16,3 ; 3
.byte 14,2 ; 2
.byte 18,2 ; 1
.byte 16,1 ; 0
; Walking off elevator sequence
; FIXME: why do we skip walking00????
walking_sequence:
.byte 20
.word walking01_lzsa
.byte 128+20 ; .word walking02_lzsa
.byte 128+20 ; .word walking03_lzsa
.byte 128+20 ; .word walking04_lzsa
.byte 128+20 ; .word walking05_lzsa
.byte 128+20 ; .word walking06_lzsa
.byte 128+20 ; .word walking07_lzsa
.byte 128+20 ; .word walking08_lzsa
.byte 20
.word walking08_lzsa
.byte 0

View File

@ -0,0 +1,477 @@
;==============================
; OOTW -- Intro -- The Elevator
;==============================
intro_03_elevator:
;===============================
;===============================
; Elevator going down
;===============================
;===============================
elevator:
;=============================
; Load background to $c00 and $1000
lda #<(intro_elevator_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(intro_elevator_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$c ; load to off-screen $c00
jsr decompress_lzsa2_fast
lda #<(intro_elevator_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(intro_elevator_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$10 ; load also to off-screen $1000
jsr decompress_lzsa2_fast
jsr gr_copy_to_current
lda #$66
sta COLOR
; elevator outer door
ldx #39
stx V2
ldx #4
ldy #14
jsr vlin ; VLIN 4,39 AT 14 (X, V2 at Y)
ldx #35
stx V2
ldx #7
ldy #18
jsr vlin ; VLIN 7,35 AT 18 (X, V2 at Y)
; elevator inner door
ldx #2
stx ELEVATOR_COUNT
elevator_middle:
ldx #38
stx V2
ldx #5
ldy #15
jsr vlin ; X, V2 at Y
ldx #36
stx V2
ldx #6
ldy #17
jsr vlin ; X, V2 at Y
elevator_inner:
ldx #37
stx V2
ldx #5
ldy #16
jsr vlin ; X, V2 at Y
jsr page_flip
jsr gr_copy_to_current
ldx #50
jsr long_wait
dec ELEVATOR_COUNT
lda ELEVATOR_COUNT
beq elevator_inner
cmp #1
beq elevator_middle
; door closed
jsr page_flip
ldx #100
jsr long_wait
;======================
; yellow line goes down
;======================
lda #0
sta COLOR
lda #5
sta V2
yellow_line_down:
jsr gr_copy_to_current
ldx #5
ldy #16
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #12
jsr long_wait
inc V2
lda V2
cmp #37
bne yellow_line_down
lda DRAW_PAGE
pha
lda #$c ; erase yellow line
sta DRAW_PAGE ; on page $1000 version
ldx #5
ldy #16
jsr vlin ; X, V2 at Y
pla
sta DRAW_PAGE
;========================
; change floor indicators
;========================
lda #$33
sta COLOR
lda #5
sta V2
lda #4
sta PARTICLE_COUNT
floor_loop:
jsr gr_copy_to_current_1000
lda PARTICLE_COUNT
asl
tay
ldx indicators,Y
lda indicators+1,Y
jsr plot
jsr page_flip
ldx #150
jsr long_wait
dec PARTICLE_COUNT
bpl floor_loop
;====================
; dark elevator
;====================
; clear $c00 to black
lda DRAW_PAGE
pha
lda #$8
sta DRAW_PAGE
jsr clear_all
pla
sta DRAW_PAGE
; blue from 20, 30 - 20,34 and yellow (brown?) from 20,0 to 20,30
; scrolls down until all yellow
lda #30
sta ELEVATOR_COUNT
going_down_loop:
jsr gr_copy_to_current ; copy black screen in
; draw the yellow part
lda #$DD
sta COLOR
lda ELEVATOR_COUNT
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
lda #$22 ; draw the blue part
sta COLOR
lda ELEVATOR_COUNT
clc
adc #4
cmp #40
bmi not_too_big
lda #40
not_too_big:
sta V2
ldx ELEVATOR_COUNT
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #8 ; pause
jsr long_wait
inc ELEVATOR_COUNT
lda ELEVATOR_COUNT
cmp #40
bne going_down_loop
;=====================
; all yellow for a bit
;=====================
jsr gr_copy_to_current ; copy black screen in
lda #$DD
sta COLOR
lda #40
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #100 ; wait a bit
jsr long_wait
; single blue dot
; solid blue line 10 later
lda #2
sta ELEVATOR_CYCLE
going_down_repeat:
lda #1
sta ELEVATOR_COUNT
going_down_blue:
jsr gr_copy_to_current ; copy black screen in
; draw the blue part
lda #$22
sta COLOR
lda ELEVATOR_COUNT
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
gdb_smc:
lda #$dd ; draw the blue part
sta COLOR
lda #40
sta V2
ldx ELEVATOR_COUNT
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #8 ; pause
jsr long_wait
inc ELEVATOR_COUNT
lda ELEVATOR_COUNT
cmp #40
bne going_down_blue
dec ELEVATOR_CYCLE
beq elevator_exit
lda #1
sta ELEVATOR_COUNT
going_down_black:
jsr gr_copy_to_current ; copy black screen in
; draw the blue part
lda #$00
sta COLOR
lda ELEVATOR_COUNT
sta V2
ldx #0
ldy #20
jsr vlin ; X, V2 at Y
lda #$22 ; draw the blue part
sta COLOR
lda #40
sta V2
ldx ELEVATOR_COUNT
ldy #20
jsr vlin ; X, V2 at Y
jsr page_flip
ldx #8 ; pause
jsr long_wait
inc ELEVATOR_COUNT
lda ELEVATOR_COUNT
cmp #40
bne going_down_black
lda #$00
sta gdb_smc+1
jmp going_down_repeat
; black, 2, blue, black about 20
; blue until hit bottom, doors open
elevator_exit:
ldx #100 ; pause
jsr long_wait
;===============================
;===============================
; Getting out of Elevator
;===============================
;===============================
;=============================
; Load elevator background
lda #<(intro_off_elevator_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(intro_off_elevator_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$c ; load to off-screen $c00
jsr decompress_lzsa2_fast
lda #<(walking00_lzsa)
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>(walking00_lzsa)
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$10 ; load to off-screen $1000
jsr decompress_lzsa2_fast
lda #10
sta ELEVATOR_COUNT
elevator_open_loop:
jsr gr_overlay ; note: overwrites color
lda #$00
sta COLOR
; Would have liked to have a central purple stripe, but not easy
; 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
lda ELEVATOR_COUNT
sta ELEVATOR_CYCLE
elevator_inner_loop:
lda #9
clc
adc ELEVATOR_CYCLE
tay
lda #40
sta V2
ldx #0
jsr vlin ; X, V2 at Y
sec
lda #30
sbc ELEVATOR_CYCLE
tay
lda #40
sta V2
ldx #0
jsr vlin ; X, V2 at Y
dec ELEVATOR_CYCLE
bne elevator_inner_loop
jsr page_flip
ldx #25
jsr long_wait ; pause
dec ELEVATOR_COUNT
bne elevator_open_loop
;==================================
; draw walking off the elevator
lda #<walking_sequence
sta INTRO_LOOPL
lda #>walking_sequence
sta INTRO_LOOPH
jsr run_sequence
;======================================
; make background black and pause a bit
jsr clear_all
jsr page_flip
ldx #80
jmp long_wait ; returns for us
;=================================
;=================================
; Intro Segment 03 Data (Elevator)
;=================================
;=================================
.include "graphics/03_elevator/intro_elevator.inc"
.include "graphics/03_elevator/intro_off_elevator.inc"
.include "graphics/03_elevator/intro_walking.inc"
; Elevator light co-ordinates
; we load them backwards
indicators:
.byte 18,4 ; 4
.byte 16,3 ; 3
.byte 14,2 ; 2
.byte 18,2 ; 1
.byte 16,1 ; 0
; Walking off elevator sequence
walking_sequence:
.byte 20
.word walking01_lzsa
.byte 128+20 ; .word walking02_lzsa
.byte 128+20 ; .word walking03_lzsa
.byte 128+20 ; .word walking04_lzsa
.byte 128+20 ; .word walking05_lzsa
.byte 128+20 ; .word walking06_lzsa
.byte 128+20 ; .word walking07_lzsa
.byte 128+20 ; .word walking08_lzsa
.byte 20
.word walking08_lzsa
.byte 0