diff --git a/demos/second/Makefile b/demos/second/Makefile index b752eccd..32f9c3ad 100644 --- a/demos/second/Makefile +++ b/demos/second/Makefile @@ -24,15 +24,17 @@ second_d1.dsk: QBOOT QLOAD MUSIC START \ $(DOS33_RAW) second_d1.dsk 11 0 ./part05_dot_tunnel/TUNNEL 0 0 $(DOS33_RAW) second_d1.dsk 13 0 ./part16_ocean/OCEAN 0 0 -second_d2.dsk: QBOOT QLOAD2 MUSIC2 START \ - ./part18_3d/THREED +second_d2.dsk: QBOOT QLOAD2 MUSIC2 \ + ./part18_3d/THREED \ + ./part20_credits/CREDITS cp $(EMPTY_DISK) second_d2.dsk $(DOS33_RAW) second_d2.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) second_d2.dsk 0 2 QBOOT 1 1 $(DOS33_RAW) second_d2.dsk 0 4 QBOOT 2 1 $(DOS33_RAW) second_d2.dsk 1 0 QLOAD2 0 0 $(DOS33_RAW) second_d2.dsk 3 0 MUSIC2 0 0 - $(DOS33_RAW) second_d2.dsk 5 0 START 0 0 +# $(DOS33_RAW) second_d2.dsk 5 0 START 0 0 + $(DOS33_RAW) second_d2.dsk 10 0 ./part20_credits/CREDITS 0 0 $(DOS33_RAW) second_d2.dsk 20 0 ./part18_3d/THREED 0 0 @@ -59,7 +61,7 @@ qload.o: qload.s \ pt3_lib_detect_model.s pt3_lib_mockingboard_detect.s \ pt3_lib_mockingboard_setup.s interrupt_handler.s \ pt3_lib_mockingboard_patch.s - ca65 -o qload.o qload.s -l qload2.lst + ca65 -o qload.o qload.s -l qload.lst #### diff --git a/demos/second/hgr_table.s b/demos/second/hgr_table.s index 0b4c59c3..2a6d5a99 100644 --- a/demos/second/hgr_table.s +++ b/demos/second/hgr_table.s @@ -82,4 +82,16 @@ btpl2: cpx #$C0 bne btmi +; go 16 beyond, which allows our text scrolling routine + + ldx #16 +extra_table_loop: + lda hposn_low,X + sta hposn_low+192,X + lda hposn_high,X + eor #$60 + sta hposn_high+192,X + dex + bpl extra_table_loop + rts diff --git a/demos/second/part20_credits/Makefile b/demos/second/part20_credits/Makefile new file mode 100644 index 00000000..231b56be --- /dev/null +++ b/demos/second/part20_credits/Makefile @@ -0,0 +1,24 @@ +include ../../../Makefile.inc + +DOS33 = ../../../utils/dos33fs-utils/dos33 +DOS33_RAW = ../../../utils/dos33fs-utils/dos33_raw +EMPTY_DISK = ../../../empty_disk/empty.dsk +TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft +LINKER_SCRIPTS = ../../../linker_scripts/ + +all: CREDITS + +#### + +CREDITS: credits.o + ld65 -o CREDITS credits.o -C $(LINKER_SCRIPTS)/apple2_6000.inc + +credits.o: credits.s vertical_scroll.s ../zx02_optim.s \ + ../zp.inc ../hardware.inc ../qload.inc + ca65 -o credits.o credits.s -l credits.lst + +### + + +clean: + rm -f *~ *.o *.lst CREDITS diff --git a/demos/second/part20_credits/NOTES b/demos/second/part20_credits/NOTES index dbe7a92e..0dbfa145 100644 --- a/demos/second/part20_credits/NOTES +++ b/demos/second/part20_credits/NOTES @@ -1,3 +1,12 @@ +21 of them +7x3? 5x + +original: 18*7= 126x72 + 10x4 + 6 192/6=32 + +two pages of 4x3 (70x64) + opening animation explosion @@ -36,3 +45,4 @@ Greets: Utopia BBS (MD) +APPLE ][ FOREVER diff --git a/demos/second/part20_credits/credits.s b/demos/second/part20_credits/credits.s new file mode 100644 index 00000000..82e9cafd --- /dev/null +++ b/demos/second/part20_credits/credits.s @@ -0,0 +1,187 @@ +; Credits + +; o/~ It's the credits, yeah, that's the best part +; When the movie ends and the reading starts o/~ + +; +; by deater (Vince Weaver) + +.include "../zp.inc" +.include "../hardware.inc" +.include "../qload.inc" + +mod7_table = $1c00 +div7_table = $1d00 +hposn_low = $1e00 +hposn_high = $1f00 + +intro_start: + ;===================== + ; initializations + ;===================== + + ;=================== + ; Load graphics + ;=================== +load_loop: + + bit SET_GR + bit HIRES + bit FULLGR + bit PAGE1 + + lda #0 + jsr hgr_page1_clearscreen + + jsr hgr_make_tables + + + ; fc logo + + lda #fc_grey_data + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + jsr wait_until_keypress + + ; fc logo + + lda #fc_iipix_data + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + jsr wait_until_keypress + + + ; nuts4 logo + + lda #nuts4_data + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + jsr wait_until_keypress + + ; nuts4 logo + + lda #nuts_pg_data + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + jsr wait_until_keypress + + ; nuts4 logo + + lda #nuts_blue_data + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + jsr wait_until_keypress + + + ; sample logo + + lda #sample_data + sta zx_src_h+1 + + lda #$20 + + jsr zx02_full_decomp + + jsr wait_until_keypress + + + + + jsr wait_until_keypress + + ldx #0 + stx FRAME + +do_scroll: + + lda FRAME + and #$7 + bne no_update_message + + ; clear lines + ldx #200 +cl_outer_loop: + lda hposn_low,X + sta OUTL + lda hposn_high,X + sta OUTH + ldy #39 + lda #0 +cl_inner_loop: + sta (OUTL),Y + dey + bpl cl_inner_loop + dex + cpx #191 + bne cl_outer_loop + + + ; print message + + lda #12 + sta CH + lda #192 + sta CV + + lda #apple_message + + jsr DrawCondensedString + +no_update_message: + + inc FRAME + + jsr hgr_vertical_scroll + + + + + + jmp do_scroll + +.align $100 + .include "../wait_keypress.s" + .include "../zx02_optim.s" + .include "../hgr_table.s" + .include "../hgr_clear_screen.s" + .include "vertical_scroll.s" + .include "font_console_1x8.s" + + .include "../part00_boot/fonts/a2_cga_thin.inc" + +fc_grey_data: + .incbin "graphics/fc_grey.hgr.zx02" +fc_iipix_data: + .incbin "graphics/fc_iipix.hgr.zx02" + +nuts4_data: + .incbin "graphics/nuts4.hgr.zx02" +nuts_pg_data: + .incbin "graphics/nuts_pg.hgr.zx02" +nuts_blue_data: + .incbin "graphics/nuts_blue.hgr.zx02" + +sample_data: + .incbin "graphics/credits_2.hgr.zx02" + +apple_message: + .byte "Apple ][ Forever" diff --git a/demos/second/part20_credits/graphics/Makefile b/demos/second/part20_credits/graphics/Makefile index e03a1d23..6b3adc70 100644 --- a/demos/second/part20_credits/graphics/Makefile +++ b/demos/second/part20_credits/graphics/Makefile @@ -4,8 +4,17 @@ ZX02 = ~/research/6502_compression/zx02.git/build/zx02 PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr PNG2GR = ../../../../utils/gr-utils/png2gr -all: nuts4.hgr.zx02 +all: nuts4.hgr.zx02 nuts_pg.hgr.zx02 nuts_blue.hgr.zx02 \ + fc_grey.hgr.zx02 fc_iipix.hgr.zx02 \ + credits_2.hgr.zx02 +#### + +credits_2.hgr: credits_2.png + $(PNG_TO_HGR) credits_2.png > credits_2.hgr + +credits_2.hgr.zx02: credits_2.hgr + $(ZX02) credits_2.hgr credits_2.hgr.zx02 #### @@ -15,6 +24,41 @@ nuts4.hgr: nuts4.png nuts4.hgr.zx02: nuts4.hgr $(ZX02) nuts4.hgr nuts4.hgr.zx02 +#### + +nuts_blue.hgr: nuts_blue.png + $(PNG_TO_HGR) nuts_blue.png > nuts_blue.hgr + +nuts_blue.hgr.zx02: nuts_blue.hgr + $(ZX02) nuts_blue.hgr nuts_blue.hgr.zx02 + +#### + +nuts_pg.hgr: nuts_pg.png + $(PNG_TO_HGR) nuts_pg.png > nuts_pg.hgr + +nuts_pg.hgr.zx02: nuts_pg.hgr + $(ZX02) nuts_pg.hgr nuts_pg.hgr.zx02 + + +#### + +fc_grey.hgr: fc_grey.png + $(PNG_TO_HGR) fc_grey.png > fc_grey.hgr + +fc_grey.hgr.zx02: fc_grey.hgr + $(ZX02) fc_grey.hgr fc_grey.hgr.zx02 + +#### + +fc_iipix.hgr: fc_iipix.png + $(PNG_TO_HGR) fc_iipix.png > fc_iipix.hgr + +fc_iipix.hgr.zx02: fc_iipix.hgr + $(ZX02) fc_iipix.hgr fc_iipix.hgr.zx02 + + + #### clean: diff --git a/demos/second/part20_credits/vertical_scroll.s b/demos/second/part20_credits/vertical_scroll.s new file mode 100644 index 00000000..31d75f07 --- /dev/null +++ b/demos/second/part20_credits/vertical_scroll.s @@ -0,0 +1,29 @@ + +hgr_vertical_scroll: + ldx #0 + +outer_vscroll_loop: + lda hposn_low,X + sta OUTL + lda hposn_high,X + sta OUTH + + inx + + lda hposn_low,X + sta INL + lda hposn_high,X + sta INH + + ldy #39 +inner_vscroll_loop: + lda (INL),Y + sta (OUTL),Y + dey + bpl inner_vscroll_loop + + cpx #200 + bne outer_vscroll_loop + + rts + diff --git a/demos/second/qload2.s b/demos/second/qload2.s index f7a598ac..866dbd32 100644 --- a/demos/second/qload2.s +++ b/demos/second/qload2.s @@ -158,20 +158,19 @@ error_string: which_disk_array: - .byte 1,1 ; MUSIC2, THREED - + .byte 1,1,1 ; MUSIC2, THREED, CREDITS load_address_array: - .byte $D0,$40 ; MUSIC2, THREED + .byte $D0,$40,$60 ; MUSIC2, THREED, CREDITS track_array: - .byte 3, 20 ; MUSIC2, THREED + .byte 3, 20, 10 ; MUSIC2, THREED, CREDITS sector_array: - .byte 0, 0 ; MUSIC2, THREED + .byte 0, 0, 0 ; MUSIC2, THREED, CREDITS length_array: - .byte 32, 128 ; MUSIC2, THREED + .byte 32, 128, 64 ; MUSIC2, THREED, CREDITS .include "wait.s" diff --git a/demos/second/start2.s b/demos/second/start2.s index f05b1c4f..ec30a312 100644 --- a/demos/second/start2.s +++ b/demos/second/start2.s @@ -85,14 +85,16 @@ load_loop: ; load ;======================= - lda #1 ; THREED +; lda #1 ; THREED + lda #2 ; CREDITS sta WHICH_LOAD jsr load_file cli ; start music - jmp $4000 ; TODO: paramaterize +; jmp $4000 ; TODO: paramaterize + jmp $6000 ; TODO: paramaterize forever: