; Closing Credits NUM_CREDITS EQU 16 ;=================== ; init credits ;=================== init_credits: ldy #0 lda (OUTL),Y ; get the first byte of credit ; which is the X-coord sta CH ; store HTAB value lda #22 ; text Y=22 sta CV ; store VTAB value lda #$f0 ; -16 sta NAMEX ; we're clicking 10 times to get to our char rts ;=========================== ;=========================== ; draw_credits ;=========================== ;=========================== draw_credits: credit_loop: inner_loop: jsr htab_vtab ; put the cursor (BASL/BASH) at CH,CV ldy #1 ; skip the x-coord to get to string print_loop: lda (OUTL),Y ; get the character beq done_print ; if 0 then end of string clc adc NAMEX ; subtract the char back ora #$80 ; convert ASCII to apple normal text sta (BASL),Y ; store it directly to screen iny ; point to next character jmp print_loop ; loop done_print: ;================== ; click ;================== lda LOOP ; get wait-at-end loop counter beq not_waiting ; if not waiting, skip ahead clc ; decrement counter adc #$ff sta LOOP bne done_click ; if not zero, skip ahead jsr next_credit ; was zero, skip to next credit jsr init_credits jmp done_click not_waiting: lda FRAME_COUNT ; slow down by x128 and #$7f beq done_click bit SPEAKER ; click the speaker ldx NAMEX ; get the mutate counter inx ; increment stx NAMEX cpx #0 ; if not 1, then continue bne done_click lda YY cmp #NUM_CREDITS-1 ; wait after NUM_CREDITS-1 bne short_loop long_loop: lda #$ff bne store_loop short_loop: lda #$48 ; set delay to show the credit before store_loop: sta LOOP ; continuing done_click: rts ;================== ; Next credit ;================== next_credit: lda #8 ; point to text line sta CH lda #22 sta CV lda OUTH ; save credits pointer pha lda OUTL pha lda #>empty ; point to empty string sta OUTH lda #<empty sta OUTL jsr print_both_pages ; clear line on both pages pla ; restore credits pointer sta OUTL pla sta OUTH ldy #0 skip_credit: ; skip ahead to next credit lda (OUTL),Y inc OUTL bne overflow inc OUTH overflow: cmp #0 beq done_skip bne skip_credit done_skip: ldx YY ; increment credit pointer inx stx YY rts ;=============================== ; draw the above-credits chrome ;=============================== credits_draw_bottom: lda #$ff sta COLOR ; HLIN Y, V2 AT A ldy #7 lda #32 sta V2 lda #38 jsr hlin_double lda #$75 sta COLOR ; hlin_double(PAGE0,0,6,38); ldy #0 lda #6 sta V2 lda #38 jsr hlin_double ; hlin_double(PAGE0,33,40,38); ldy #33 lda #40 sta V2 lda #38 jsr hlin_double ; hlin_double(PAGE0,8,31,36); ldy #8 lda #31 sta V2 lda #36 jsr hlin_double lda #$70 sta COLOR ; hlin_double(PAGE0,7,7,36); ldy #7 lda #7 sta V2 lda #36 jsr hlin_double ; hlin_double(PAGE0,32,32,36); ldy #32 lda #32 sta V2 lda #36 jmp hlin_double ; tail call, will return for us ;============================ ; Draw text mode boilerplate ;============================ credits_draw_text_background: ; text wings lda #$20 sta COLOR ; hlin_double(0,7,40) ldy #0 lda #7 sta V2 lda #40 jsr hlin_double ; hlin_double(32,40,40) ldy #32 lda #40 sta V2 lda #40 jsr hlin_double ; hlin_double(0,7,44) ldy #0 lda #7 sta V2 lda #44 jsr hlin_double ; hlin_double(0,7,44) ldy #32 lda #40 sta V2 lda #44 jsr hlin_double ; hlin_double(7,33,48) ldy #7 lda #32 sta V2 lda #46 jsr hlin_double lda #13 sta CH lda #20 sta CV lda #>thankz sta OUTH lda #<thankz sta OUTL jmp move_and_print ; tail call empty: .asciiz " " ; offset can't be 0 or it confuses the next-credit code ; subtract one from centering(?) credits: .byte 10 ; 17 .asciiz "MUSIC: WAVE BY EA" .byte 13 ; 11 .asciiz "LZ4: QKUMBA" .byte 11 ; 16 .asciiz "FASTMUL: S. JUDD" .byte 14 ; 9 .asciiz "FROGGYSUE" .byte 14 ; 10 .asciiz "UTOPIA BBS" .byte 11 ; 15 .asciiz "FORD & PIANOMAN" .byte 12 ; 13 .asciiz "THE 7HORSEMEN" .byte 10 ; 18 .asciiz "MITHLUIN & ROOSTER" .byte 9 ; 20 .asciiz "WEAVE'S WORLD TALKER" .byte 11 ; 17 .asciiz "DAISY,JUNE,TALONK" .byte 13 ; 12 .asciiz "TALBOT 0101B" .byte 12 ; 13 .asciiz "STEALTH SUSIE" .byte 11 ; 16 .asciiz "ECE GRAD BOWLING" .byte 13 ; 11 .asciiz "CORNELL GCF" .byte 8 ; 21 .asciiz "ALL MSTIES EVERYWHERE" ;.asciiz "AAAAAAAAAAAAAAAAAAAAA" .byte 17 ; 3 .asciiz "..." thankz: .asciiz "SPECIAL THANKS"