mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-01 01:06:33 +00:00
452 lines
7.4 KiB
ArmAsm
452 lines
7.4 KiB
ArmAsm
;=============================
|
|
; OOTW -- Intro -- The Scanner
|
|
;=============================
|
|
|
|
intro_05_scanner:
|
|
|
|
;===============================
|
|
;===============================
|
|
; Scanner
|
|
;===============================
|
|
;===============================
|
|
|
|
scanner:
|
|
lda #<(intro_scanner_lzsa)
|
|
sta getsrc_smc+1 ; LZSA_SRC_LO
|
|
lda #>(intro_scanner_lzsa)
|
|
sta getsrc_smc+2 ; LZSA_SRC_HI
|
|
|
|
lda #$c ; load to off-screen $c00
|
|
jsr decompress_lzsa2_fast
|
|
|
|
jsr gr_copy_to_current
|
|
jsr page_flip
|
|
|
|
lda #<scanning_sequence
|
|
sta INTRO_LOOPL
|
|
lda #>scanning_sequence
|
|
sta INTRO_LOOPH
|
|
|
|
jsr run_sequence
|
|
|
|
;===============================
|
|
;===============================
|
|
; Spinny DNA / Key
|
|
;===============================
|
|
;===============================
|
|
|
|
scanner2:
|
|
lda #<(ai_bg_lzsa)
|
|
sta getsrc_smc+1 ; LZSA_SRC_LO
|
|
lda #>(ai_bg_lzsa)
|
|
sta getsrc_smc+2 ; LZSA_SRC_HI
|
|
|
|
lda #$c ; load to off-screen $c00
|
|
jsr decompress_lzsa2_fast
|
|
|
|
jsr clear_bottom
|
|
bit TEXTGR ; split graphics/text
|
|
|
|
jsr gr_copy_to_current_40x40
|
|
jsr page_flip
|
|
|
|
jsr clear_bottom
|
|
|
|
;=============================
|
|
; Identification (nothing)
|
|
;=============================
|
|
|
|
lda #0
|
|
sta DNA_OUT
|
|
sta DNA_PROGRESS
|
|
|
|
lda #<ai_sequence
|
|
sta INTRO_LOOPL
|
|
lda #>ai_sequence
|
|
sta INTRO_LOOPH
|
|
|
|
jsr run_sequence_static
|
|
|
|
; slices / | - / nothing (pause)
|
|
; more slices / | - / nothing (pause)
|
|
; small circle / | - / nothing (pause)
|
|
; big circle / | - / nothing (pause)
|
|
|
|
; jsr gr_copy_to_current_40x40
|
|
; jsr draw_dna
|
|
; jsr page_flip
|
|
|
|
; approx one rotation until "Good evening"
|
|
; two rotation, then switch to key + Ferrari
|
|
; three rotations, then done
|
|
|
|
; - !!! DNA START 1 line
|
|
; / !!! DNA start 1 line
|
|
; !!! DNA 2 lines
|
|
; DNA 5 lines
|
|
; Good evening professor.
|
|
; DNA all lines
|
|
|
|
; Triggers:
|
|
; + DNA starts midway through big circle
|
|
; + Good evening printed at DNA_OUT=5
|
|
; + Switch to key, print ferrari
|
|
|
|
|
|
; Key |
|
|
; I see you have driven here in your \ Ferrari.
|
|
; Key - / nothing (pause)
|
|
|
|
|
|
ldx #35
|
|
spin_on_key:
|
|
txa
|
|
pha
|
|
|
|
jsr draw_dna
|
|
jsr page_flip
|
|
|
|
pla
|
|
tax
|
|
|
|
lda #250
|
|
jsr WAIT
|
|
|
|
dex
|
|
bne spin_on_key
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
;=================================
|
|
; Display a sequence of images
|
|
; with /-|/ static overlay
|
|
|
|
run_sequence_static:
|
|
ldy #0 ; init
|
|
|
|
run_sequence_static_loop:
|
|
|
|
lda (INTRO_LOOPL),Y ; draw DNA
|
|
sta DNA_OUT
|
|
iny
|
|
|
|
lda (INTRO_LOOPL),Y ; pause for time
|
|
beq run_sequence_static_done
|
|
tax
|
|
|
|
lda DNA_OUT
|
|
bne pause_draw_dna
|
|
|
|
jsr long_wait
|
|
jmp done_pause_dna
|
|
pause_draw_dna:
|
|
txa
|
|
pha
|
|
|
|
tya
|
|
pha
|
|
|
|
jsr draw_dna
|
|
jsr page_flip
|
|
|
|
pla
|
|
tay
|
|
|
|
pla
|
|
tax
|
|
|
|
lda #250
|
|
jsr WAIT
|
|
|
|
dex
|
|
bne pause_draw_dna
|
|
|
|
done_pause_dna:
|
|
|
|
iny ; point to overlay
|
|
|
|
lda #10 ; set up static loop
|
|
sta STATIC_LOOPER
|
|
|
|
sty INTRO_LOOPER ; save for later
|
|
|
|
static_loop:
|
|
|
|
lda (INTRO_LOOPL),Y
|
|
sta getsrc_smc+1 ; LZSA_SRC_LO
|
|
iny
|
|
lda (INTRO_LOOPL),Y
|
|
sta getsrc_smc+2 ; LZSA_SRC_HI
|
|
|
|
lda #$10 ; load to $1000
|
|
jsr decompress_lzsa2_fast
|
|
|
|
jsr gr_overlay_40x40
|
|
|
|
ldy STATIC_LOOPER
|
|
lda static_pattern,Y
|
|
sta getsrc_smc+1 ; LZSA_SRC_LO
|
|
lda static_pattern+1,Y
|
|
sta getsrc_smc+2 ; LZSA_SRC_HI
|
|
|
|
lda #$10 ; load to $1000
|
|
jsr decompress_lzsa2_fast
|
|
|
|
|
|
; force 40x40 overlay
|
|
|
|
jsr gr_overlay_40x40_noload
|
|
|
|
lda DNA_OUT
|
|
beq no_dna
|
|
|
|
jsr draw_dna
|
|
|
|
no_dna:
|
|
jsr page_flip
|
|
|
|
ldy INTRO_LOOPER
|
|
|
|
ldx #3
|
|
jsr long_wait
|
|
|
|
dec STATIC_LOOPER
|
|
dec STATIC_LOOPER
|
|
|
|
bpl static_loop
|
|
|
|
iny
|
|
iny
|
|
|
|
jmp run_sequence_static_loop
|
|
run_sequence_static_done:
|
|
rts
|
|
|
|
|
|
|
|
|
|
|
|
;====================================
|
|
; Draw DNA
|
|
;====================================
|
|
draw_dna:
|
|
|
|
lda #0 ; count
|
|
sta DNA_COUNT
|
|
|
|
draw_dna_loop:
|
|
clc
|
|
lda DNA_COUNT
|
|
adc #10
|
|
sta YPOS
|
|
|
|
lda #26
|
|
sta XPOS
|
|
|
|
lda DNA_COUNT ; 0, 4, 8, 12, 16....
|
|
lsr
|
|
clc
|
|
adc DNA_PROGRESS ; 0,2,4,6,8,...
|
|
|
|
and #$e
|
|
tax
|
|
|
|
lda dna_list,X
|
|
sta INL
|
|
lda dna_list+1,X
|
|
sta INH
|
|
|
|
jsr put_sprite
|
|
|
|
lda DNA_COUNT
|
|
clc
|
|
adc #4
|
|
sta DNA_COUNT
|
|
|
|
; for DNA_PROGRESS 0,2,4,6,8,10,12 we only want to print
|
|
; first X lines (gradually fade in)
|
|
; after that, draw the whole thing
|
|
|
|
lda DNA_PROGRESS
|
|
cmp #14
|
|
bpl dna_full
|
|
|
|
asl
|
|
cmp DNA_COUNT
|
|
bpl draw_dna_loop
|
|
bmi dna_full_done
|
|
|
|
dna_full:
|
|
lda DNA_COUNT
|
|
cmp #28
|
|
bne draw_dna_loop
|
|
|
|
dna_full_done:
|
|
|
|
inc DNA_PROGRESS
|
|
inc DNA_PROGRESS
|
|
|
|
; see if printing message
|
|
lda DNA_PROGRESS
|
|
cmp #10
|
|
bne no_good_message
|
|
|
|
lda #<good_evening
|
|
sta OUTL
|
|
lda #>good_evening
|
|
sta OUTH
|
|
jsr print_both_pages
|
|
jmp no_ferrari_message
|
|
|
|
no_good_message:
|
|
cmp #$30
|
|
bne no_ferrari_message
|
|
|
|
lda #<ferrari
|
|
sta OUTL
|
|
lda #>ferrari
|
|
sta OUTH
|
|
jsr print_both_pages
|
|
jsr print_both_pages
|
|
|
|
|
|
no_ferrari_message:
|
|
rts
|
|
|
|
|
|
|
|
|
|
;=================================
|
|
;=================================
|
|
; Intro Segment 05 Data (Scanner)
|
|
;=================================
|
|
;=================================
|
|
|
|
.include "graphics/05_scanner/intro_scanner.inc"
|
|
.include "graphics/05_scanner/intro_scanning.inc"
|
|
.include "graphics/05_scanner/intro_ai_bg.inc"
|
|
.include "graphics/05_scanner/intro_ai.inc"
|
|
|
|
|
|
; Scanning sequence
|
|
|
|
scanning_sequence:
|
|
.byte 15
|
|
.word scan01_lzsa
|
|
.byte 128+15 ; .word scan02_lzsa
|
|
.byte 128+15 ; .word scan03_lzsa
|
|
.byte 128+15 ; .word scan04_lzsa
|
|
.byte 128+15 ; .word scan05_lzsa
|
|
.byte 128+15 ; .word scan06_lzsa
|
|
.byte 128+15 ; .word scan07_lzsa
|
|
.byte 128+15 ; .word scan08_lzsa
|
|
.byte 128+15 ; .word scan09_lzsa
|
|
.byte 128+15 ; .word scan10_lzsa
|
|
.byte 128+20 ; .word scan11_lzsa
|
|
.byte 128+20 ; .word scan12_lzsa
|
|
.byte 128+20 ; .word scan13_lzsa
|
|
.byte 128+20 ; .word scan14_lzsa
|
|
.byte 128+20 ; .word scan15_lzsa
|
|
.byte 128+20 ; .word scan16_lzsa
|
|
.byte 128+40 ; .word scan17_lzsa
|
|
.byte 128+40 ; .word scan18_lzsa
|
|
.byte 128+40 ; .word scan19_lzsa
|
|
.byte 40
|
|
.word scan19_lzsa
|
|
.byte 0
|
|
|
|
|
|
; AI sequence
|
|
|
|
ai_sequence:
|
|
.byte 0,50 ; pause at start, no dna
|
|
.word ai01_lzsa ; slices
|
|
|
|
.byte 0,50 ; pause at start, no dna
|
|
.word ai02_lzsa ; slices_zoom
|
|
|
|
.byte 0,50 ; pasue as start, no dna
|
|
.word ai03_lzsa ; little circle
|
|
|
|
.byte 0,50 ; pause at start, no dna
|
|
.word ai04_lzsa ; big circle
|
|
|
|
.byte 1,20 ; pause longer, yes dna
|
|
.word ai05_lzsa ; key
|
|
|
|
.byte 0,0
|
|
; .word ai05_lzsa ; key
|
|
; .byte 0
|
|
|
|
static_pattern:
|
|
.word nothing_lzsa ; 0
|
|
.word nothing_lzsa ; 2
|
|
.word static01_lzsa ; 4
|
|
.word static03_lzsa ; 6
|
|
.word static02_lzsa ; 8
|
|
.word static01_lzsa ; 10
|
|
|
|
; Scanning text
|
|
|
|
good_evening:
|
|
.byte 2,21,"GOOD EVENING PROFESSOR.",0
|
|
ferrari:
|
|
.byte 2,21,"I SEE YOU HAVE DRIVEN HERE IN YOUR",0
|
|
.byte 2,22,"FERRARI.",0
|
|
|
|
|
|
dna_list:
|
|
.word dna0_sprite
|
|
.word dna1_sprite
|
|
.word dna2_sprite
|
|
.word dna3_sprite
|
|
.word dna4_sprite
|
|
.word dna5_sprite
|
|
.word dna6_sprite
|
|
.word dna7_sprite
|
|
|
|
dna0_sprite:
|
|
.byte $7,$2
|
|
.byte $66,$40,$40,$40,$40,$40,$cc
|
|
.byte $06,$00,$00,$00,$00,$00,$0c
|
|
|
|
dna1_sprite:
|
|
.byte $7,$2
|
|
.byte $00,$66,$40,$40,$40,$cc,$00
|
|
.byte $00,$06,$00,$00,$00,$0c,$00
|
|
|
|
dna2_sprite:
|
|
.byte $7,$2
|
|
.byte $00,$00,$66,$40,$cc,$00,$00
|
|
.byte $00,$00,$06,$00,$0c,$00,$00
|
|
|
|
dna3_sprite:
|
|
.byte $7,$2
|
|
.byte $00,$00,$00,$66,$00,$00,$00
|
|
.byte $00,$00,$00,$06,$00,$00,$00
|
|
|
|
dna4_sprite:
|
|
.byte $7,$2
|
|
.byte $00,$00,$CC,$40,$66,$00,$00
|
|
.byte $00,$00,$0C,$00,$06,$00,$00
|
|
|
|
dna5_sprite:
|
|
.byte $7,$2
|
|
.byte $00,$CC,$40,$40,$40,$66,$00
|
|
.byte $00,$0C,$00,$00,$00,$06,$00
|
|
|
|
dna6_sprite:
|
|
.byte $7,$2
|
|
.byte $CC,$40,$40,$40,$40,$40,$66
|
|
.byte $0C,$00,$00,$00,$00,$00,$06
|
|
|
|
dna7_sprite:
|
|
.byte $7,$2
|
|
.byte $66,$40,$40,$40,$40,$40,$cc
|
|
.byte $06,$00,$00,$00,$00,$00,$0c
|
|
|