diff --git a/games/ootw/intro/Makefile b/games/ootw/intro/Makefile new file mode 100644 index 00000000..f11edbfc --- /dev/null +++ b/games/ootw/intro/Makefile @@ -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 diff --git a/games/ootw/intro/graphics/01_building/Makefile b/games/ootw/intro/graphics/01_building/Makefile index c96c97bf..c0361052 100644 --- a/games/ootw/intro/graphics/01_building/Makefile +++ b/games/ootw/intro/graphics/01_building/Makefile @@ -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: diff --git a/games/ootw/intro/graphics/02_outer_door/Makefile b/games/ootw/intro/graphics/02_outer_door/Makefile index 0d2450ef..9e710963 100644 --- a/games/ootw/intro/graphics/02_outer_door/Makefile +++ b/games/ootw/intro/graphics/02_outer_door/Makefile @@ -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: diff --git a/games/ootw/intro/graphics/03_elevator/Makefile b/games/ootw/intro/graphics/03_elevator/Makefile index a65aba5f..b13416e0 100644 --- a/games/ootw/intro/graphics/03_elevator/Makefile +++ b/games/ootw/intro/graphics/03_elevator/Makefile @@ -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: diff --git a/games/ootw/intro/intro.s b/games/ootw/intro/intro.s index 1b35ca99..e060dbef 100644 --- a/games/ootw/intro/intro.s +++ b/games/ootw/intro/intro.s @@ -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_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_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" diff --git a/games/ootw/intro/intro_data_01.s b/games/ootw/intro/intro_02_outer_door.s similarity index 51% rename from games/ootw/intro/intro_data_01.s rename to games/ootw/intro/intro_02_outer_door.s index 47eda873..fc6cefee 100644 --- a/games/ootw/intro/intro_data_01.s +++ b/games/ootw/intro/intro_02_outer_door.s @@ -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_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 diff --git a/games/ootw/intro/intro_03_elevator.s b/games/ootw/intro/intro_03_elevator.s new file mode 100644 index 00000000..a1d20f42 --- /dev/null +++ b/games/ootw/intro/intro_03_elevator.s @@ -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_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