diff --git a/demos/driven/Makefile b/demos/driven/Makefile index dcb90498..46d8506a 100644 --- a/demos/driven/Makefile +++ b/demos/driven/Makefile @@ -11,7 +11,8 @@ all: driven.dsk driven.dsk: QBOOT QLOAD \ MUSIC \ music.inc qload.inc \ - ./part00_intro/INTRO + ./part00_intro/INTRO \ + ./part20_credits/CREDITS cp $(EMPTY_DISK) driven.dsk $(DOS33_RAW) driven.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) driven.dsk 0 2 QBOOT 1 1 @@ -19,6 +20,7 @@ driven.dsk: QBOOT QLOAD \ $(DOS33_RAW) driven.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) driven.dsk 4 0 MUSIC 0 0 $(DOS33_RAW) driven.dsk 9 0 ./part00_intro/INTRO 0 0 + $(DOS33_RAW) driven.dsk 13 0 ./part20_credits/CREDITS 0 0 #second_d1.dsk: QBOOT QLOAD \ # music.inc qload.inc \ @@ -64,38 +66,8 @@ driven.dsk: QBOOT QLOAD \ part00_intro/INTRO: cd part00_intro && make -part01_intropan/INTRO: - cd part01_intropan && make - -part04_chess_shapes/CHESS: - cd part04_chess_shapes && make - -part08_gorilla/GORILLA: - cd part08_gorilla && make - -part09_leaves/LEAVES: - cd part09_leaves && make - -part10_lens_rotozoom/LENS: - cd part10_lens_rotozoom && make - -part12_plasma/PLASMA: - cd part12_plasma && make - -part13_plasmacube/PLASMACUBE: - cd part13_plasmacube && make - -part14_dotbounce/DOTS: - cd part14_dotbounce && make - -part15_transmission/SPHERES: - cd part15_transmission && make - -part16_ocean/OCEAN: - cd part16_ocean && make - -part17_polar/POLAR: - cd part17_polar && make +part20_credits/CREDITS: + cd part20_credits && make #### @@ -232,6 +204,7 @@ clean: rm -f *~ *.o *.lst HELLO SECOND QBOOT QLOAD MUSIC START rm -f qload.inc qload2.inc music.inc music2.inc cd part00_intro && make clean + cd part20_credits && make clean ### diff --git a/demos/driven/hgr_clear_screen.s b/demos/driven/hgr_clear_screen.s new file mode 100644 index 00000000..aa0805ab --- /dev/null +++ b/demos/driven/hgr_clear_screen.s @@ -0,0 +1,89 @@ +hgr_clear_screen: + lda DRAW_PAGE + beq hgr_page1_clearscreen + lda #0 + beq hgr_page2_clearscreen + +hgr_page1_clearscreen: + + ldy #0 +hgr_page1_cls_loop: + sta $2000,Y + sta $2100,Y + sta $2200,Y + sta $2300,Y + sta $2400,Y + sta $2500,Y + sta $2600,Y + sta $2700,Y + sta $2800,Y + sta $2900,Y + sta $2A00,Y + sta $2B00,Y + sta $2C00,Y + sta $2D00,Y + sta $2E00,Y + sta $2F00,Y + sta $3000,Y + sta $3100,Y + sta $3200,Y + sta $3300,Y + sta $3400,Y + sta $3500,Y + sta $3600,Y + sta $3700,Y + sta $3800,Y + sta $3900,Y + sta $3A00,Y + sta $3B00,Y + sta $3C00,Y + sta $3D00,Y + sta $3E00,Y + sta $3F00,Y + iny + bne hgr_page1_cls_loop + + rts + + +hgr_page2_clearscreen: + + ldy #0 +hgr_page2_cls_loop: + sta $4000,Y + sta $4100,Y + sta $4200,Y + sta $4300,Y + sta $4400,Y + sta $4500,Y + sta $4600,Y + sta $4700,Y + sta $4800,Y + sta $4900,Y + sta $4A00,Y + sta $4B00,Y + sta $4C00,Y + sta $4D00,Y + sta $4E00,Y + sta $4F00,Y + sta $5000,Y + sta $5100,Y + sta $5200,Y + sta $5300,Y + sta $5400,Y + sta $5500,Y + sta $5600,Y + sta $5700,Y + sta $5800,Y + sta $5900,Y + sta $5A00,Y + sta $5B00,Y + sta $5C00,Y + sta $5D00,Y + sta $5E00,Y + sta $5F00,Y + iny + bne hgr_page2_cls_loop + + rts + diff --git a/demos/driven/part20_credits/Makefile b/demos/driven/part20_credits/Makefile new file mode 100644 index 00000000..cc4be53d --- /dev/null +++ b/demos/driven/part20_credits/Makefile @@ -0,0 +1,31 @@ +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_8000.inc + +credits.o: credits.s vertical_scroll.s \ + font_4am_1x8.s ./fonts/font_4am_1x8_data.s \ + ../zp.inc ../hardware.inc ../qload.inc + ca65 -o credits.o credits.s -l credits.lst + +### + +#graphics/summary1_invert.hgr.zx02: +# cd graphics && make + +### + +clean: + rm -f *~ *.o *.lst CREDITS + + diff --git a/demos/driven/part20_credits/credits.s b/demos/driven/part20_credits/credits.s new file mode 100644 index 00000000..d2a0cede --- /dev/null +++ b/demos/driven/part20_credits/credits.s @@ -0,0 +1,219 @@ +; 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) <vince@deater.net> + +.include "../zp.inc" +.include "../hardware.inc" +.include "../qload.inc" +.include "../music.inc" + +mod7_table = $1c00 +div7_table = $1d00 +hposn_low = $1e00 +hposn_high = $1f00 + +intro_start: + ;===================== + ; initializations + ;===================== + + bit KEYRESET ; clear just in case + + ;=================== + ; Load graphics + ;=================== +load_loop: + + bit SET_GR + bit HIRES + bit FULLGR + bit PAGE1 + + lda #0 + jsr hgr_page1_clearscreen + +; jsr hgr_make_tables + + + ;======================= + ;======================= + ; scroll job + ;======================= + ;======================= + + ldx #8 + stx FRAME + + ; print message + + lda #192 ; top of $4000 PAGE2 + sta CV + + lda #<final_credits + sta BACKUP_OUTL + lda #>final_credits + sta BACKUP_OUTH + +do_scroll: + + inc FRAME + + lda FRAME + cmp #9 + bne no_update_message + +; and #$7 +; bne no_update_message + + lda #0 + sta FRAME + + ; clear lines on Page2 + + ; we cheat and setup 192-200 to map to top of page2 + + ldx #200 +cl_outer_loop: + lda hposn_low,X + sta INL + lda hposn_high,X + sta INH + ldy #39 + lda #0 +cl_inner_loop: + sta (INL),Y + dey + bpl cl_inner_loop + dex + cpx #191 + bne cl_outer_loop + +urgh: + lda BACKUP_OUTL + sta OUTL + lda BACKUP_OUTH + sta OUTH + + jsr draw_condensed_1x8_again + + ; point to location after + sec ; always add 1 +; inx + txa + adc OUTL + sta BACKUP_OUTL + lda #0 + adc OUTH + sta BACKUP_OUTH + + +no_update_message: + + jsr hgr_vertical_scroll + + jmp do_scroll + +.align $100 + .include "../wait_keypress.s" +; .include "../zx02_optim.s" + .include "../hgr_clear_screen.s" + .include "vertical_scroll.s" + + .include "font_4am_1x8.s" + .include "fonts/font_4am_1x8_data.s" + +; .include "font_4am_1x10.s" +; .include "fonts/font_4am_1x10_data.s" + +; .include "thumbnail_credits.s" + + .include "../irq_wait.s" + + +;summary1_data: +; .incbin "graphics/summary1_invert.hgr.zx02" +;summary2_data: +; .incbin "graphics/summary2_invert.hgr.zx02" + + +final_credits: + .byte 12,"Apple ][ Reality",0 + .byte 20," ",0 + .byte 11,"by Deater / Desire",0 + .byte 20," ",0 + .byte 4,"This demo won the oldskool demo",0 + .byte 5,"competition at Demosplash 2023",0 + .byte 8,"held in Pittsburgh, PA,",0 + .byte 12,"in November 2023.",0 + .byte 20," ",0 + .byte 13,"Apologies to:",0 + .byte 14,"Future Crew",0 + .byte 20," ",0 + + .byte 15,"Code used:",0 + .byte 9,"French Touch -- Plasma",0 + .byte 7,"DMSC -- ZX02 decompression",0 + .byte 7,"qkumba -- fast disk loader",0 + .byte 15,"4am - font",0 + .byte 2,"K. Kennaway -- iipix image converter",0 + .byte 3,"O. Schmidt -- sampled audio player",0 + .byte 6,"Hellmood -- circles/sierzoom",0 + .byte 20," ",0 + + .byte 11,"Special Thanks to:",0 + .byte 5,"mA2E for providing intro music",0 + .byte 7,"at the extreme-last minute",0 + .byte 20," ",0 + + .byte 15,"Greets to:",0 + .byte 14,"French Touch",0 + .byte 18,"4am",0 + .byte 17,"qkumba",0 + .byte 17,"Grouik",0 + .byte 14,"Fenarinarsa",0 + .byte 14,"Ninjaforce",0 + .byte 15,"T. Greene",0 + .byte 15,"K. Savetz",0 + .byte 15,"Boo Atari",0 + .byte 15,"textfiles",0 + .byte 13,"Stealth Susie",0 + .byte 17,"wiz21b",0 + .byte 17,"Trixter",0 + .byte 18,"LGR",0 + .byte 16,"Hellmood",0 + .byte 17,"Foone",0 + .byte 20," ",0 + .byte 14,"Talbot 0101",0 + .byte 12,"Utopia BBS (410)",0 + .byte 10,"Weave's World Talker",0 + .byte 8,"Tell 'em Deater sent ya",0 + ; end + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 12,"Apple II Forever",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte 20," ",0 + .byte $FF diff --git a/demos/driven/part20_credits/fonts/font_4am_1x8_data.s b/demos/driven/part20_credits/fonts/font_4am_1x8_data.s new file mode 100644 index 00000000..927f1069 --- /dev/null +++ b/demos/driven/part20_credits/fonts/font_4am_1x8_data.s @@ -0,0 +1,880 @@ +font_1x8_row0: + .byte $08 ; + .byte $08 ; + .byte $00 ; + .byte $10 ; + .byte $10 ; + .byte $14 ; + .byte $14 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; + .byte $00 ; + .byte $14 ; + .byte $00 ; + .byte $08 ; ! + .byte $14 ; " + .byte $14 ; # + .byte $08 ; $ + .byte $06 ; % + .byte $0C ; & + .byte $08 ; ' + .byte $08 ; ( + .byte $08 ; ) + .byte $00 ; * + .byte $00 ; + + .byte $00 ; , + .byte $00 ; - + .byte $00 ; . + .byte $00 ; / + .byte $1C ; 0 + .byte $08 ; 1 + .byte $1C ; 2 + .byte $1C ; 3 + .byte $10 ; 4 + .byte $3E ; 5 + .byte $18 ; 6 + .byte $3E ; 7 + .byte $1C ; 8 + .byte $1C ; 9 + .byte $00 ; : + .byte $00 ; ; + .byte $10 ; < + .byte $00 ; = + .byte $04 ; > + .byte $1C ; ? + .byte $1C ; @ + .byte $08 ; A + .byte $1E ; B + .byte $18 ; C + .byte $0E ; D + .byte $3E ; E + .byte $3E ; F + .byte $38 ; G + .byte $22 ; H + .byte $1C ; I + .byte $38 ; J + .byte $26 ; K + .byte $0E ; L + .byte $22 ; M + .byte $22 ; N + .byte $08 ; O + .byte $1E ; P + .byte $1C ; Q + .byte $1E ; R + .byte $1C ; S + .byte $3E ; T + .byte $22 ; U + .byte $22 ; V + .byte $22 ; W + .byte $22 ; X + .byte $22 ; Y + .byte $3E ; Z + .byte $3C ; [ + .byte $00 ; \ + .byte $1E ; ] + .byte $08 ; ^ + .byte $00 ; _ + .byte $08 ; ` + .byte $00 ; a + .byte $06 ; b + .byte $00 ; c + .byte $30 ; d + .byte $00 ; e + .byte $18 ; f + .byte $00 ; g + .byte $06 ; h + .byte $08 ; i + .byte $20 ; j + .byte $06 ; k + .byte $0C ; l + .byte $00 ; m + .byte $00 ; n + .byte $00 ; o + .byte $00 ; p + .byte $00 ; q + .byte $00 ; r + .byte $00 ; s + .byte $00 ; t + .byte $00 ; u + .byte $00 ; v + .byte $00 ; w + .byte $00 ; x + .byte $00 ; y + .byte $00 ; z + .byte $30 ; { + .byte $08 ; | + .byte $06 ; } + .byte $2C ; ~ + .byte $00 ; +font_1x8_row1: + .byte $08 ; + .byte $08 ; + .byte $00 ; + .byte $08 ; + .byte $08 ; + .byte $14 ; + .byte $14 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; + .byte $00 ; + .byte $14 ; + .byte $00 ; + .byte $1C ; ! + .byte $14 ; " + .byte $14 ; # + .byte $3C ; $ + .byte $26 ; % + .byte $12 ; & + .byte $08 ; ' + .byte $04 ; ( + .byte $10 ; ) + .byte $22 ; * + .byte $08 ; + + .byte $00 ; , + .byte $00 ; - + .byte $00 ; . + .byte $20 ; / + .byte $22 ; 0 + .byte $0C ; 1 + .byte $22 ; 2 + .byte $22 ; 3 + .byte $18 ; 4 + .byte $02 ; 5 + .byte $04 ; 6 + .byte $22 ; 7 + .byte $22 ; 8 + .byte $22 ; 9 + .byte $08 ; : + .byte $08 ; ; + .byte $08 ; < + .byte $00 ; = + .byte $08 ; > + .byte $22 ; ? + .byte $22 ; @ + .byte $14 ; A + .byte $24 ; B + .byte $24 ; C + .byte $14 ; D + .byte $24 ; E + .byte $24 ; F + .byte $04 ; G + .byte $22 ; H + .byte $08 ; I + .byte $10 ; J + .byte $24 ; K + .byte $04 ; L + .byte $36 ; M + .byte $26 ; N + .byte $14 ; O + .byte $24 ; P + .byte $22 ; Q + .byte $24 ; R + .byte $22 ; S + .byte $2A ; T + .byte $22 ; U + .byte $22 ; V + .byte $22 ; W + .byte $22 ; X + .byte $22 ; Y + .byte $22 ; Z + .byte $04 ; [ + .byte $02 ; \ + .byte $10 ; ] + .byte $14 ; ^ + .byte $00 ; _ + .byte $08 ; ` + .byte $00 ; a + .byte $04 ; b + .byte $00 ; c + .byte $10 ; d + .byte $00 ; e + .byte $24 ; f + .byte $00 ; g + .byte $04 ; h + .byte $00 ; i + .byte $00 ; j + .byte $04 ; k + .byte $08 ; l + .byte $00 ; m + .byte $00 ; n + .byte $00 ; o + .byte $00 ; p + .byte $00 ; q + .byte $00 ; r + .byte $00 ; s + .byte $04 ; t + .byte $00 ; u + .byte $00 ; v + .byte $00 ; w + .byte $00 ; x + .byte $00 ; y + .byte $00 ; z + .byte $08 ; { + .byte $08 ; | + .byte $08 ; } + .byte $1A ; ~ + .byte $08 ; +font_1x8_row2: + .byte $7F ; + .byte $08 ; + .byte $7F ; + .byte $3E ; + .byte $36 ; + .byte $17 ; + .byte $74 ; + .byte $17 ; + .byte $74 ; + .byte $1F ; + .byte $7C ; + .byte $7F ; + .byte $14 ; + .byte $00 ; + .byte $1C ; ! + .byte $14 ; " + .byte $3E ; # + .byte $02 ; $ + .byte $10 ; % + .byte $0C ; & + .byte $04 ; ' + .byte $02 ; ( + .byte $20 ; ) + .byte $1C ; * + .byte $08 ; + + .byte $00 ; , + .byte $00 ; - + .byte $00 ; . + .byte $10 ; / + .byte $32 ; 0 + .byte $0A ; 1 + .byte $20 ; 2 + .byte $20 ; 3 + .byte $14 ; 4 + .byte $1E ; 5 + .byte $02 ; 6 + .byte $10 ; 7 + .byte $22 ; 8 + .byte $22 ; 9 + .byte $08 ; : + .byte $08 ; ; + .byte $04 ; < + .byte $3E ; = + .byte $10 ; > + .byte $20 ; ? + .byte $2A ; @ + .byte $22 ; A + .byte $24 ; B + .byte $02 ; C + .byte $24 ; D + .byte $04 ; E + .byte $04 ; F + .byte $02 ; G + .byte $22 ; H + .byte $08 ; I + .byte $10 ; J + .byte $14 ; K + .byte $04 ; L + .byte $2A ; M + .byte $2A ; N + .byte $22 ; O + .byte $24 ; P + .byte $22 ; Q + .byte $24 ; R + .byte $02 ; S + .byte $08 ; T + .byte $22 ; U + .byte $22 ; V + .byte $22 ; W + .byte $14 ; X + .byte $14 ; Y + .byte $10 ; Z + .byte $04 ; [ + .byte $04 ; \ + .byte $10 ; ] + .byte $22 ; ^ + .byte $00 ; _ + .byte $10 ; ` + .byte $1C ; a + .byte $04 ; b + .byte $1C ; c + .byte $10 ; d + .byte $1C ; e + .byte $04 ; f + .byte $1C ; g + .byte $1C ; h + .byte $0C ; i + .byte $30 ; j + .byte $24 ; k + .byte $08 ; l + .byte $16 ; m + .byte $1A ; n + .byte $1C ; o + .byte $1E ; p + .byte $3C ; q + .byte $1A ; r + .byte $3C ; s + .byte $1E ; t + .byte $22 ; u + .byte $22 ; v + .byte $22 ; w + .byte $22 ; x + .byte $22 ; y + .byte $3E ; z + .byte $08 ; { + .byte $08 ; | + .byte $08 ; } + .byte $00 ; ~ + .byte $14 ; +font_1x8_row3: + .byte $00 ; + .byte $08 ; + .byte $00 ; + .byte $7F ; + .byte $41 ; + .byte $10 ; + .byte $04 ; + .byte $10 ; + .byte $04 ; + .byte $10 ; + .byte $04 ; + .byte $00 ; + .byte $14 ; + .byte $00 ; + .byte $08 ; ! + .byte $00 ; " + .byte $14 ; # + .byte $1C ; $ + .byte $08 ; % + .byte $2A ; & + .byte $00 ; ' + .byte $02 ; ( + .byte $20 ; ) + .byte $3E ; * + .byte $3E ; + + .byte $00 ; , + .byte $3E ; - + .byte $00 ; . + .byte $08 ; / + .byte $2A ; 0 + .byte $08 ; 1 + .byte $18 ; 2 + .byte $18 ; 3 + .byte $12 ; 4 + .byte $20 ; 5 + .byte $1E ; 6 + .byte $08 ; 7 + .byte $1C ; 8 + .byte $3C ; 9 + .byte $00 ; : + .byte $00 ; ; + .byte $02 ; < + .byte $00 ; = + .byte $20 ; > + .byte $10 ; ? + .byte $3A ; @ + .byte $22 ; A + .byte $1C ; B + .byte $02 ; C + .byte $24 ; D + .byte $1C ; E + .byte $1C ; F + .byte $02 ; G + .byte $3E ; H + .byte $08 ; I + .byte $10 ; J + .byte $0C ; K + .byte $04 ; L + .byte $22 ; M + .byte $32 ; N + .byte $22 ; O + .byte $1C ; P + .byte $22 ; Q + .byte $1C ; R + .byte $1C ; S + .byte $08 ; T + .byte $22 ; U + .byte $22 ; V + .byte $2A ; W + .byte $08 ; X + .byte $08 ; Y + .byte $08 ; Z + .byte $04 ; [ + .byte $08 ; \ + .byte $10 ; ] + .byte $00 ; ^ + .byte $00 ; _ + .byte $00 ; ` + .byte $20 ; a + .byte $1C ; b + .byte $22 ; c + .byte $1C ; d + .byte $22 ; e + .byte $0E ; f + .byte $22 ; g + .byte $24 ; h + .byte $08 ; i + .byte $20 ; j + .byte $14 ; k + .byte $08 ; l + .byte $2A ; m + .byte $26 ; n + .byte $22 ; o + .byte $24 ; p + .byte $12 ; q + .byte $24 ; r + .byte $02 ; s + .byte $04 ; t + .byte $22 ; u + .byte $22 ; v + .byte $22 ; w + .byte $14 ; x + .byte $22 ; y + .byte $10 ; z + .byte $06 ; { + .byte $00 ; | + .byte $30 ; } + .byte $00 ; ~ + .byte $22 ; +font_1x8_row4: + .byte $7F ; + .byte $08 ; + .byte $7F ; + .byte $3F ; + .byte $21 ; + .byte $17 ; + .byte $74 ; + .byte $1F ; + .byte $7C ; + .byte $17 ; + .byte $74 ; + .byte $7F ; + .byte $14 ; + .byte $00 ; + .byte $08 ; ! + .byte $00 ; " + .byte $3E ; # + .byte $20 ; $ + .byte $04 ; % + .byte $12 ; & + .byte $00 ; ' + .byte $02 ; ( + .byte $20 ; ) + .byte $1C ; * + .byte $08 ; + + .byte $08 ; , + .byte $00 ; - + .byte $00 ; . + .byte $04 ; / + .byte $26 ; 0 + .byte $08 ; 1 + .byte $04 ; 2 + .byte $20 ; 3 + .byte $3E ; 4 + .byte $20 ; 5 + .byte $22 ; 6 + .byte $04 ; 7 + .byte $22 ; 8 + .byte $20 ; 9 + .byte $08 ; : + .byte $08 ; ; + .byte $04 ; < + .byte $3E ; = + .byte $10 ; > + .byte $08 ; ? + .byte $1A ; @ + .byte $3E ; A + .byte $24 ; B + .byte $02 ; C + .byte $24 ; D + .byte $04 ; E + .byte $04 ; F + .byte $32 ; G + .byte $22 ; H + .byte $08 ; I + .byte $12 ; J + .byte $0C ; K + .byte $04 ; L + .byte $22 ; M + .byte $22 ; N + .byte $22 ; O + .byte $04 ; P + .byte $2A ; Q + .byte $0C ; R + .byte $20 ; S + .byte $08 ; T + .byte $22 ; U + .byte $22 ; V + .byte $2A ; W + .byte $14 ; X + .byte $08 ; Y + .byte $04 ; Z + .byte $04 ; [ + .byte $10 ; \ + .byte $10 ; ] + .byte $00 ; ^ + .byte $00 ; _ + .byte $00 ; ` + .byte $3C ; a + .byte $24 ; b + .byte $02 ; c + .byte $12 ; d + .byte $3E ; e + .byte $04 ; f + .byte $22 ; g + .byte $24 ; h + .byte $08 ; i + .byte $20 ; j + .byte $0C ; k + .byte $08 ; l + .byte $2A ; m + .byte $22 ; n + .byte $22 ; o + .byte $24 ; p + .byte $12 ; q + .byte $04 ; r + .byte $1C ; s + .byte $04 ; t + .byte $22 ; u + .byte $22 ; v + .byte $2A ; w + .byte $08 ; x + .byte $22 ; y + .byte $08 ; z + .byte $08 ; { + .byte $08 ; | + .byte $08 ; } + .byte $00 ; ~ + .byte $22 ; +font_1x8_row5: + .byte $00 ; + .byte $08 ; + .byte $08 ; + .byte $3F ; + .byte $21 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; ! + .byte $00 ; " + .byte $14 ; # + .byte $1E ; $ + .byte $32 ; % + .byte $12 ; & + .byte $00 ; ' + .byte $04 ; ( + .byte $10 ; ) + .byte $22 ; * + .byte $08 ; + + .byte $08 ; , + .byte $00 ; - + .byte $08 ; . + .byte $02 ; / + .byte $22 ; 0 + .byte $08 ; 1 + .byte $22 ; 2 + .byte $22 ; 3 + .byte $10 ; 4 + .byte $22 ; 5 + .byte $22 ; 6 + .byte $04 ; 7 + .byte $22 ; 8 + .byte $10 ; 9 + .byte $08 ; : + .byte $08 ; ; + .byte $08 ; < + .byte $00 ; = + .byte $08 ; > + .byte $00 ; ? + .byte $02 ; @ + .byte $22 ; A + .byte $24 ; B + .byte $24 ; C + .byte $14 ; D + .byte $24 ; E + .byte $04 ; F + .byte $24 ; G + .byte $22 ; H + .byte $08 ; I + .byte $12 ; J + .byte $14 ; K + .byte $24 ; L + .byte $22 ; M + .byte $22 ; N + .byte $14 ; O + .byte $04 ; P + .byte $1C ; Q + .byte $14 ; R + .byte $22 ; S + .byte $08 ; T + .byte $22 ; U + .byte $14 ; V + .byte $36 ; W + .byte $22 ; X + .byte $08 ; Y + .byte $22 ; Z + .byte $04 ; [ + .byte $20 ; \ + .byte $10 ; ] + .byte $00 ; ^ + .byte $00 ; _ + .byte $00 ; ` + .byte $22 ; a + .byte $24 ; b + .byte $22 ; c + .byte $12 ; d + .byte $02 ; e + .byte $04 ; f + .byte $3C ; g + .byte $24 ; h + .byte $08 ; i + .byte $22 ; j + .byte $14 ; k + .byte $08 ; l + .byte $2A ; m + .byte $22 ; n + .byte $22 ; o + .byte $1C ; p + .byte $1C ; q + .byte $04 ; r + .byte $20 ; s + .byte $24 ; t + .byte $32 ; u + .byte $14 ; v + .byte $2A ; w + .byte $14 ; x + .byte $3C ; y + .byte $04 ; z + .byte $08 ; { + .byte $08 ; | + .byte $08 ; } + .byte $00 ; ~ + .byte $3E ; +font_1x8_row6: + .byte $00 ; + .byte $08 ; + .byte $08 ; + .byte $7E ; + .byte $4A ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $14 ; + .byte $00 ; + .byte $08 ; ! + .byte $00 ; " + .byte $14 ; # + .byte $08 ; $ + .byte $30 ; % + .byte $2C ; & + .byte $00 ; ' + .byte $08 ; ( + .byte $08 ; ) + .byte $00 ; * + .byte $00 ; + + .byte $04 ; , + .byte $00 ; - + .byte $08 ; . + .byte $00 ; / + .byte $1C ; 0 + .byte $3E ; 1 + .byte $3E ; 2 + .byte $1C ; 3 + .byte $38 ; 4 + .byte $1C ; 5 + .byte $1C ; 6 + .byte $04 ; 7 + .byte $1C ; 8 + .byte $0C ; 9 + .byte $00 ; : + .byte $04 ; ; + .byte $10 ; < + .byte $00 ; = + .byte $04 ; > + .byte $08 ; ? + .byte $3C ; @ + .byte $22 ; A + .byte $1E ; B + .byte $18 ; C + .byte $0E ; D + .byte $3E ; E + .byte $0E ; F + .byte $38 ; G + .byte $22 ; H + .byte $1C ; I + .byte $0C ; J + .byte $26 ; K + .byte $3E ; L + .byte $22 ; M + .byte $22 ; N + .byte $08 ; O + .byte $0E ; P + .byte $20 ; Q + .byte $26 ; R + .byte $1C ; S + .byte $1C ; T + .byte $1C ; U + .byte $08 ; V + .byte $22 ; W + .byte $22 ; X + .byte $1C ; Y + .byte $3E ; Z + .byte $3C ; [ + .byte $00 ; \ + .byte $1E ; ] + .byte $00 ; ^ + .byte $00 ; _ + .byte $00 ; ` + .byte $3C ; a + .byte $1C ; b + .byte $1C ; c + .byte $3C ; d + .byte $1C ; e + .byte $0E ; f + .byte $20 ; g + .byte $26 ; h + .byte $1C ; i + .byte $22 ; j + .byte $24 ; k + .byte $1C ; l + .byte $22 ; m + .byte $22 ; n + .byte $1C ; o + .byte $04 ; p + .byte $10 ; q + .byte $0E ; r + .byte $1E ; s + .byte $18 ; t + .byte $2C ; u + .byte $08 ; v + .byte $36 ; w + .byte $22 ; x + .byte $20 ; y + .byte $3E ; z + .byte $30 ; { + .byte $08 ; | + .byte $06 ; } + .byte $00 ; ~ + .byte $00 ; +font_1x8_row7: + .byte $00 ; + .byte $08 ; + .byte $08 ; + .byte $36 ; + .byte $36 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; + .byte $14 ; + .byte $14 ; + .byte $00 ; + .byte $14 ; + .byte $00 ; + .byte $00 ; ! + .byte $00 ; " + .byte $00 ; # + .byte $00 ; $ + .byte $00 ; % + .byte $00 ; & + .byte $00 ; ' + .byte $00 ; ( + .byte $00 ; ) + .byte $00 ; * + .byte $00 ; + + .byte $00 ; , + .byte $00 ; - + .byte $00 ; . + .byte $00 ; / + .byte $00 ; 0 + .byte $00 ; 1 + .byte $00 ; 2 + .byte $00 ; 3 + .byte $00 ; 4 + .byte $00 ; 5 + .byte $00 ; 6 + .byte $00 ; 7 + .byte $00 ; 8 + .byte $00 ; 9 + .byte $00 ; : + .byte $00 ; ; + .byte $00 ; < + .byte $00 ; = + .byte $00 ; > + .byte $00 ; ? + .byte $00 ; @ + .byte $00 ; A + .byte $00 ; B + .byte $00 ; C + .byte $00 ; D + .byte $00 ; E + .byte $00 ; F + .byte $00 ; G + .byte $00 ; H + .byte $00 ; I + .byte $00 ; J + .byte $00 ; K + .byte $00 ; L + .byte $00 ; M + .byte $00 ; N + .byte $00 ; O + .byte $00 ; P + .byte $00 ; Q + .byte $00 ; R + .byte $00 ; S + .byte $00 ; T + .byte $00 ; U + .byte $00 ; V + .byte $00 ; W + .byte $00 ; X + .byte $00 ; Y + .byte $00 ; Z + .byte $00 ; [ + .byte $00 ; \ + .byte $00 ; ] + .byte $00 ; ^ + .byte $7F ; _ + .byte $00 ; ` + .byte $00 ; a + .byte $00 ; b + .byte $00 ; c + .byte $00 ; d + .byte $00 ; e + .byte $00 ; f + .byte $1E ; g + .byte $00 ; h + .byte $00 ; i + .byte $1C ; j + .byte $00 ; k + .byte $00 ; l + .byte $00 ; m + .byte $00 ; n + .byte $00 ; o + .byte $0E ; p + .byte $38 ; q + .byte $00 ; r + .byte $00 ; s + .byte $00 ; t + .byte $00 ; u + .byte $00 ; v + .byte $00 ; w + .byte $00 ; x + .byte $1E ; y + .byte $00 ; z + .byte $00 ; { + .byte $00 ; | + .byte $00 ; } + .byte $00 ; ~ + .byte $00 ; diff --git a/demos/driven/part20_credits/vertical_scroll.s b/demos/driven/part20_credits/vertical_scroll.s new file mode 100644 index 00000000..31d75f07 --- /dev/null +++ b/demos/driven/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/driven/qload.s b/demos/driven/qload.s index a00ff901..ed3f508f 100644 --- a/demos/driven/qload.s +++ b/demos/driven/qload.s @@ -163,47 +163,46 @@ error_string: .endif which_disk_array: - .byte 1,1,1,1 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte 1,1,1,1 ; GORILLA,LEAVES,LENS,PLASMA - .byte 1,1,1,1 ; CUBE,DOTS,SPHERES,OCEAN - .byte 1,1 ; POLAR,FAKE_BIOS + .byte 1,1,1,1 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte 1,1,1,1 ; + .byte 1,1,1,1 ; + .byte 1,1 ; load_address_array: - .byte $D0,$D0,$80,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte $60,$60,$60,$60 ; GORILLA,LEAVES,LENS,PLASMA - .byte $60,$60,$60,$60 ; CUBE,DOTS,SPHERES,OCEAN - .byte $60,$80 ; POLAR,FAKE_BIOS + .byte $D0,$D0,$80,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte $60,$60,$60,$60 ; + .byte $60,$60,$60,$60 ; + .byte $60,$80 ; start_address: - .byte $D0,$D0,$80,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte $60,$60,$60,$80 ; GORILLA,LEAVES,LENS,PLASMA - .byte $80,$80,$80,$60 ; CUBE,DOTS,SPHERES,OCEAN - .byte $80,$80 ; POLAR,FAKE_BIOS + .byte $D0,$D0,$80,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte $60,$60,$60,$80 ; + .byte $80,$80,$80,$60 ; + .byte $80,$80 ; aux_dest: - .byte $D0,$D0,$A0,$A0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte $70,$50,$40,$30 ; GORILLA,LEAVES,LENS,PLASMA - .byte $20,$10,$80,$20 ; CUBE,DOTS,SPHERES,OCEAN - .byte $10,$A0 ; POLAR,FAKE_BIOS + .byte $D0,$D0,$A0,$A0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte $70,$50,$40,$30 ; + .byte $20,$10,$80,$20 ; + .byte $10,$A0 ; track_array: - .byte 2,4,10,15 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte 19,21,23,24 ; GORILLA,LEAVES,LENS,PLASMA - .byte 25,26,27,28 ; CUBE,DOTS,SPHERES,OCEAN - .byte 34,9 ; POLAR,FAKE_BIOS + .byte 2,4,9,13 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte 19,21,23,24 ; + .byte 25,26,27,28 ; + .byte 34,9 ; sector_array: - .byte 0,0,0,0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte 0,0,0,0 ; GORILLA,LEAVES,LENS,PLASMA - .byte 0,0,0,0 ; CUBE,DOTS,SPHERES,OCEAN - .byte 0,0 ; POLAR,FAKE_BIOS - + .byte 0,0,0,0 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte 0,0,0,0 ; + .byte 0,0,0,0 ; + .byte 0,0 ; length_array: - .byte 32,48,64,48 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS - .byte 32,32,16,16 ; GORILLA,LEAVES,LENS,PLASMA - .byte 16,16,16,96 ; CUBE,DOTS,SPHERES,OCEAN - .byte 16,16 ; POLAR,FAKE_BIOS + .byte 32,48,48,64 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CREDITS + .byte 32,32,16,16 ; + .byte 16,16,16,96 ; + .byte 16,16 ; PT3_ENABLE_APPLE_IIC = 1 diff --git a/demos/driven/start.s b/demos/driven/start.s index d6129f53..7abf136f 100644 --- a/demos/driven/start.s +++ b/demos/driven/start.s @@ -148,7 +148,7 @@ load_program_loop: ; load from disk - lda #13 ; INTRO + lda #2 ; INTRO sta WHICH_LOAD jsr load_file @@ -161,7 +161,7 @@ load_program_loop: cli ; start music jsr $8000 -.if 0 + ;======================= ;======================= @@ -173,70 +173,25 @@ load_program_loop: jsr mute_ay_both jsr clear_ay_both ; stop from making noise - ; load music + ; load credits - lda #1 ; MUSIC_MAIN + lda #3 ; CREDITS sta WHICH_LOAD jsr load_file - ; load from disk - - lda #3 ; CHESS - sta WHICH_LOAD - jsr load_file - ; restart music - - ;============================ - ; Re-Init the Mockingboard - ;============================ - - ; NOTE: I don't know how much of this is actually necessary - ; wasted a lot of time debugging, leaving it as-is - ; as it seems to be working - - lda #0 - sta DONE_PLAYING - - lda #1 - sta LOOP - - ;======================== - ; patch mockingboard - - lda SOUND_STATUS - beq skip_mbp2 - jsr mockingboard_patch ; patch to work in slots other than 4? -skip_mbp2: - - jsr mockingboard_init - ;======================= - ; Set up 50Hz interrupt - ;======================== - - - jsr mockingboard_setup_interrupt - jsr reset_ay_both - jsr clear_ay_both - - ;================== - ; init song - ;================== - - jsr pt3_init_song - cli ; start interrupts (music) ;======================= ;======================= - ; Run Chess + ; Run Credits ;======================= ;======================= jsr $8000 - +.if 0 ;========================== ;========================== ; Run 4-9, copy from AUX