mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-16 11:30:55 +00:00
410 lines
6.9 KiB
ArmAsm
410 lines
6.9 KiB
ArmAsm
; 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 ; unrolled
|
|
jsr hgr_page2_clearscreen ; unrolled
|
|
|
|
; jsr hgr_make_tables
|
|
|
|
|
|
;=======================
|
|
;=======================
|
|
; scroll job
|
|
;=======================
|
|
;=======================
|
|
; so the way this works is that it only displays PAGE1
|
|
; and it prints new credits just off the bottom of it which
|
|
; is essentially the top of PAGE2
|
|
; then it scrolls things up
|
|
|
|
ldx #0
|
|
stx FRAME
|
|
|
|
; print message
|
|
|
|
|
|
lda #<final_credits ; store location of string
|
|
sta BACKUP_OUTL
|
|
lda #>final_credits
|
|
sta BACKUP_OUTH
|
|
|
|
scroll_loop:
|
|
|
|
jsr hgr_vertical_scroll
|
|
|
|
|
|
;============================================
|
|
; clear lines to get rid of stray old chars
|
|
;============================================
|
|
; just erase line 158 and 159
|
|
|
|
; $39D0, $3DD0
|
|
|
|
clc
|
|
lda #$39
|
|
adc DRAW_PAGE
|
|
sta cl_smc+2
|
|
|
|
clc
|
|
lda #$3d
|
|
adc DRAW_PAGE
|
|
sta cl_smc+5
|
|
|
|
ldy #39
|
|
lda #$00
|
|
cl_inner_loop:
|
|
|
|
cl_smc:
|
|
sta $39D0,Y
|
|
sta $3DD0,Y
|
|
dey
|
|
bpl cl_inner_loop
|
|
|
|
;=============================
|
|
;=============================
|
|
; draw text
|
|
;=============================
|
|
;=============================
|
|
|
|
;=======================
|
|
; draw one line at 158
|
|
;=======================
|
|
|
|
lda #158 ;
|
|
sta CV
|
|
lda BACKUP_OUTL ; get saved text location
|
|
ldy BACKUP_OUTH ; and load direct in A/Y
|
|
ldx FRAME ; load which line of text to draw
|
|
jsr draw_condensed_1x8
|
|
|
|
; X points to last char printed?
|
|
|
|
;=========================================
|
|
; check if increment to next line of text
|
|
;=========================================
|
|
; flip over if frame==9
|
|
|
|
lda FRAME
|
|
cmp #9
|
|
bcc skip_next_text
|
|
|
|
; point to location after
|
|
sec ; always add 1
|
|
txa ; afterward X points to end of string
|
|
adc OUTL ; (OUTL is already+1)
|
|
sta BACKUP_OUTL
|
|
lda #$0
|
|
adc OUTH
|
|
sta BACKUP_OUTH
|
|
lda #$ff
|
|
sta FRAME
|
|
skip_next_text:
|
|
|
|
;===========================
|
|
; draw second line at 159
|
|
;===========================
|
|
|
|
lda #159 ;
|
|
sta CV
|
|
lda BACKUP_OUTL ; get saved text location
|
|
ldy BACKUP_OUTH ; and load direct in A/Y
|
|
ldx FRAME
|
|
inx
|
|
jsr draw_condensed_1x8
|
|
|
|
;=================================
|
|
; increment the frame
|
|
;=================================
|
|
|
|
inc FRAME ; next frame
|
|
|
|
; lda FRAME ; wrap frame after 10 lines
|
|
; cmp #10
|
|
; bne no_update_message
|
|
|
|
; lda #0
|
|
; sta FRAME
|
|
|
|
;=============================
|
|
; draw sprites
|
|
;=============================
|
|
|
|
lda #18
|
|
sta CURSOR_X
|
|
|
|
lda #160
|
|
sta CURSOR_Y
|
|
|
|
inc GUITAR_FRAME
|
|
|
|
lda GUITAR_FRAME
|
|
and #7
|
|
tax
|
|
lda guitar_pattern,X
|
|
tax
|
|
|
|
lda guitar_l,X
|
|
sta INL
|
|
lda guitar_h,X
|
|
sta INH
|
|
|
|
jsr hgr_draw_sprite
|
|
|
|
|
|
;===========================
|
|
; keeper1
|
|
|
|
lda GUITAR_FRAME
|
|
and #$1f
|
|
tax
|
|
lda keeper1_pattern,X
|
|
tax
|
|
|
|
|
|
lda #14
|
|
sta CURSOR_X
|
|
|
|
lda #160
|
|
sta CURSOR_Y
|
|
|
|
lda keeper_l,X
|
|
sta INL
|
|
lda keeper_h,X
|
|
sta INH
|
|
|
|
jsr hgr_draw_sprite
|
|
|
|
;====================
|
|
; keeper2
|
|
|
|
lda GUITAR_FRAME
|
|
and #$1f
|
|
tax
|
|
lda keeper2_pattern,X
|
|
tax
|
|
|
|
|
|
lda #22
|
|
sta CURSOR_X
|
|
|
|
lda #160
|
|
sta CURSOR_Y
|
|
|
|
lda keeper_l,X
|
|
sta INL
|
|
lda keeper_h,X
|
|
sta INH
|
|
|
|
jsr hgr_draw_sprite
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;=============================
|
|
; do the scroll
|
|
;=============================
|
|
|
|
jsr wait_vblank
|
|
|
|
jsr hgr_page_flip
|
|
|
|
jmp scroll_loop
|
|
|
|
.align $100
|
|
.include "../wait_keypress.s"
|
|
; .include "../zx02_optim.s"
|
|
.include "../hgr_clear_screen.s"
|
|
.include "vertical_scroll.s"
|
|
|
|
.include "font_4am_1x8_oneline.s"
|
|
.include "fonts/font_4am_1x8_data.s"
|
|
|
|
; .include "font_4am_1x10.s"
|
|
; .include "fonts/font_4am_1x10_data.s"
|
|
|
|
.include "../irq_wait.s"
|
|
.include "../hgr_page_flip.s"
|
|
|
|
.include "../vblank.s"
|
|
|
|
.include "hgr_sprite.s"
|
|
|
|
.include "graphics/guitar_sprites.inc"
|
|
|
|
guitar_pattern:
|
|
.byte 0,0,1,1,2,2,1,1
|
|
|
|
guitar_l:
|
|
.byte <guitar0,<guitar1,<guitar2
|
|
guitar_h:
|
|
.byte >guitar0,>guitar1,>guitar2
|
|
|
|
.include "graphics/keeper1_sprites.inc"
|
|
.include "graphics/keeper2_sprites.inc"
|
|
|
|
keeper_l:
|
|
.byte <keeper_r0,<keeper_r1,<keeper_r2
|
|
.byte <keeper_r3,<keeper_r4,<keeper_r5
|
|
.byte <keeper_r6,<keeper_r7
|
|
.byte <keeper_l0,<keeper_l1,<keeper_l2
|
|
.byte <keeper_l3,<keeper_l4,<keeper_l5
|
|
.byte <keeper_l6,<keeper_l7
|
|
|
|
keeper_h:
|
|
.byte >keeper_r0,>keeper_r1,>keeper_r2
|
|
.byte >keeper_r3,>keeper_r4,>keeper_r5
|
|
.byte >keeper_r6,>keeper_r7
|
|
.byte >keeper_l0,>keeper_l1,>keeper_l2
|
|
.byte >keeper_l3,>keeper_l4,>keeper_l5
|
|
.byte >keeper_l6,>keeper_l7
|
|
|
|
|
|
|
|
|
|
|
|
keeper1_pattern:
|
|
.byte 1,1,2,2,1,1,2,2
|
|
.byte 1,2,3,4,5,4,3,4
|
|
.byte 5,4,3,4,5,6,7,5
|
|
.byte 7,6,5,4,3,2,1,2
|
|
|
|
|
|
|
|
keeper2_pattern:
|
|
.byte 1+8,1+8,2+8,2+8,1+8,1+8,2+8,2+8
|
|
.byte 1+8,2+8,3+8,4+8,5+8,4+8,3+8,4+8
|
|
.byte 5+8,4+8,3+8,4+8,5+8,6+8,7+8,5+8
|
|
.byte 7+8,6+8,5+8,4+8,3+8,2+8,1+8,2+8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final_credits:
|
|
.byte 20," ",0
|
|
.byte 16,"DRI\/EN",0
|
|
.byte 20," ",0
|
|
.byte 15,"by Desire",0
|
|
.byte 20," ",0
|
|
.byte 7,"This demo was first shown",0
|
|
.byte 10,"at Demosplash 2024",0
|
|
.byte 8,"held in Pittsburgh, PA,",0
|
|
.byte 12,"in November 2024.",0
|
|
.byte 20," ",0
|
|
.byte 13,"Apologies to:",0
|
|
.byte 18,"Cyan",0
|
|
|
|
.byte 8,"No Wharks were harmed in",0
|
|
.byte 8,"the making of this demo.",0
|
|
|
|
; TODO: Cyan disclaimer
|
|
|
|
; .byte 14,"Future Crew",0
|
|
.byte 20," ",0
|
|
.byte 15,"Code used:",0
|
|
; Deater
|
|
.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
|
|
|
|
; Graphics
|
|
|
|
; Music
|
|
|
|
; .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
|