botdemo: more work on title animation

This commit is contained in:
Vince Weaver 2020-11-16 00:12:56 -05:00
parent 9d9d4899cd
commit 5bfdb59945
6 changed files with 160 additions and 60 deletions

View File

@ -36,7 +36,7 @@ botdemo.o: botdemo.s \
zp.inc hardware.inc nozp.inc timeline.inc \ zp.inc hardware.inc nozp.inc timeline.inc \
commands.s bg.inc \ commands.s bg.inc \
interrupt_handler.s \ interrupt_handler.s \
wipe.s wipe.s mock_anim.s
ca65 -o botdemo.o botdemo.s -l botdemo.lst ca65 -o botdemo.o botdemo.s -l botdemo.lst

View File

@ -13,20 +13,19 @@ DO_LOAD = 1
DO_LIST = 2 DO_LIST = 2
DO_RUN = 3 DO_RUN = 3
;==========================================
; we are loaded at $6000
;
; since we are now decompressed here after load
; we don't have to worry about running into DOS3.3 at $9600
;
; we shouldn't need to set HIMEM as we don't use many vars
; and variable memory starts right after the program
bot_demo: bot_demo:
;===================
; init some stuff
; we have from $6000 to $9600 (DOS 3.3)
; which is $3600 = 12 + 1.5 = 13.5k
; we don't need to set HIMEM as we don't use many vars
; and variable memory starts right after the program it seems
;=================== ;===================
; PT3 Setup ; PT3 player Setup
lda #0 lda #0
sta DONE_PLAYING sta DONE_PLAYING
@ -52,17 +51,22 @@ mockingboard_not_found:
;=================== ;===================
; init screen ; init screen
;===================
jsr TEXT jsr TEXT
jsr HOME jsr SETGR
bit SET_GR ; jsr HOME
bit TEXTGR ; bit SET_GR
; bit TEXTGR
bit KEYRESET bit KEYRESET
;=================== ;===================
; init vars ; init vars
;===================
;============================= ;=============================
; Load bg ; Load title screen
;=============================
lda #<bg_rle lda #<bg_rle
sta GBASL sta GBASL
@ -71,40 +75,19 @@ mockingboard_not_found:
lda #$c lda #$c
jsr load_rle_gr jsr load_rle_gr
jsr do_wipe ;==============================
; wipe it to page1 gr
;==============================
; jsr gr_copy_to_current ; copy to page1 jsr do_wipe
;============================= ;=============================
; mockingboard where available ; mockingboard where available
;=============================
lda #5 jsr mock_anim
sta CH
lda #21
sta CV
jsr VTAB
lda #<mock_string command_loop:
ldy #>mock_string
jsr STROUT
lda #12
sta CH
lda #22
sta CV
jsr VTAB
lda #<mock2_string
ldy #>mock2_string
jsr STROUT
done:
lda trigger lda trigger
beq not_trigger beq not_trigger
@ -113,7 +96,7 @@ done:
lda command lda command
cmp #DONE cmp #DONE
beq done beq command_loop
cmp #DO_LIST cmp #DO_LIST
bne not_do_list bne not_do_list
@ -133,14 +116,7 @@ not_do_load:
not_trigger: not_trigger:
jmp done jmp command_loop
mock_string:
.byte ") ) ) MOCKINGBOARD SOUND ( ( (",0
mock2_string:
.byte "WHERE AVAILABLE",0
command: .byte $00 command: .byte $00
which: .byte $00 which: .byte $00
@ -163,6 +139,7 @@ original_stack: .byte $00
.include "timeline.inc" .include "timeline.inc"
.include "wipe.s" .include "wipe.s"
.include "mock_anim.s"
.include "nozp.inc" .include "nozp.inc"

View File

@ -33,6 +33,7 @@ HLINE = $F819 ;; HLINE Y,$2C at A
VLINE = $F828 ;; VLINE A,$2D at Y VLINE = $F828 ;; VLINE A,$2D at Y
CLRSCR = $F832 ;; Clear low-res screen CLRSCR = $F832 ;; Clear low-res screen
CLRTOP = $F836 ;; clear only top of low-res screen CLRTOP = $F836 ;; clear only top of low-res screen
SETGR = $FB40 ;; GR
SETCOL = $F864 ;; COLOR=A SETCOL = $F864 ;; COLOR=A
TEXT = $FB36 TEXT = $FB36
TABV = $FB5B ;; VTAB to A TABV = $FB5B ;; VTAB to A

View File

@ -3,9 +3,10 @@
20 PRINT 20 PRINT
30 PRINT " A COLLECTION OF BASIC DEMOS" 30 PRINT " A COLLECTION OF BASIC DEMOS"
40 PRINT " THAT EACH FIT IN A 280 CHARACTER TWEET" 40 PRINT " THAT EACH FIT IN A 280 CHARACTER TWEET"
42 PRINT " FIRST TESTED ON THE @APPLEIIBOT" 42 PRINT
45 PRINT 45 PRINT " FIRST TESTED ON THE @APPLEIIBOT"
50 HTAB 15:PRINT " _ " 50 PRINT
60 HTAB 15:PRINT " _: :_ _" 60 HTAB 15:PRINT " _ "
70 HTAB 15:PRINT ":_: _: : " 70 HTAB 15:PRINT " _: :_ _"
80 PRINT CHR$(4)"BRUN LOADER" 80 HTAB 15:PRINT ":_: _: : "
90 PRINT CHR$(4)"BRUN LOADER"

View File

@ -92,9 +92,9 @@ no_tick_oflo:
ldx original_stack ldx original_stack
txs txs
lda #>done lda #>command_loop
pha pha
lda #<done lda #<command_loop
pha pha
lda #0 ; program status word lda #0 ; program status word

121
bot_demo/mock_anim.s Normal file
View File

@ -0,0 +1,121 @@
;=============================
; mockingboard where available
;=============================
mock_anim:
lda #11
sta CH
lda #21
sta CV
jsr VTAB
lda #<mock_string
ldy #>mock_string
jsr STROUT
lda #9
sta paren_limit_smc+1
jsr paren_move
lda #7
sta paren_limit_smc+1
jsr paren_move
lda #5
sta paren_limit_smc+1
jsr paren_move
; flip the parens
lda #9
sta paren_flip1_smc+1
lda #30
sta paren_flip2_smc+1
jsr paren_flip
lda #7
sta paren_flip1_smc+1
lda #32
sta paren_flip2_smc+1
jsr paren_flip
lda #5
sta paren_flip1_smc+1
lda #34
sta paren_flip2_smc+1
jsr paren_flip
; where available
lda #12
sta CH
lda #22
sta CV
jsr VTAB
lda #<mock2_string
ldy #>mock2_string
jsr STROUT
rts
; animate the parenthesis
paren_move:
ldx #0
ldy #39
parenthesis_loop:
lda #' '|$80
sta $6d0,X
sta $6d0,Y
inx
dey
lda #'('|$80
sta $6d0,X
lda #')'|$80
sta $6d0,Y
lda #128
jsr WAIT
paren_limit_smc:
cpx #9
bne parenthesis_loop
rts
; flip the parenthesis
paren_flip:
paren_flip1_smc:
ldx #9
lda #')'|$80
sta $6d0,X
paren_flip2_smc:
ldy #30
lda #'('|$80
sta $6d0,Y
lda #200
jsr WAIT
rts
mock_string:
.byte "MOCKINGBOARD SOUND",0
; .byte ") ) ) MOCKINGBOARD SOUND ( ( (",0
mock2_string:
.byte "WHERE AVAILABLE",0