diff --git a/shapetable_party/dsr_shape.s b/shapetable_party/dsr_shape.s index fff039ed..921e4dba 100644 --- a/shapetable_party/dsr_shape.s +++ b/shapetable_party/dsr_shape.s @@ -1,29 +1,217 @@ -# Person, shoulders up -1 -START -RT RT -RT UP -UP LT -UP UP -UP RT -UP RT -RT DN -LT DN -LT RT NRT -RT UP -DN NDN -LT LT -LT DN NRT -RT RT -DN NLT -LT DN -RT RT -RT RT -RT NDN -LT LT -LT LT -LT LT -LT LT -LT LT -LT -STOP + +; zero page locations +HGR_SHAPE = $1A +SEEDL = $4E +FRAME = $A4 +RND_EXP = $C9 +HGR_PAGE = $E6 +HGR_SCALE = $E7 +HGR_ROTATION = $F9 +SCALE = $FC +XPOS = $FD +XPOSH = $FE +YPOS = $FF + +; soft switches +; Soft Switches +KEYPRESS = $C000 +KEYRESET = $C010 +SPEAKER = $C030 +PAGE0 = $C054 +PAGE1 = $C055 + +; ROM calls +RND = $EFAE +HGR2 = $F3D8 +HCLR = $F3F2 +HCLR_COLOR = $F3F4 +HPOSN = $F411 +XDRAW0 = $F65D +WAIT = $FCA8 ; delay 1/2(26+27A+5A^2) us + +dsr_person: + + lda #$20 ; clear HGR page0 to white + sta HGR_PAGE + + lda #$ff + jsr HCLR_COLOR + + jsr HGR2 ; clear HGR page1 to black + ; Hi-res graphics, no text at bottom + ; Y=0, A=$60 after this call + + ldx #1 + stx HGR_SCALE + + ldx #30 + stx XPOS + lda #0 + sta XPOSH + sta FRAME + lda #180 + sta YPOS + +crowd_loop: + + jsr xdraw ; draw + + lsr HGR_PAGE ; $40 -> $20 + + jsr xdraw ; draw + + asl HGR_PAGE ; $20 -> $40 + + clc + lda XPOS + adc #20 + sta XPOS + cmp #250 + bne crowd_loop + + ; get ready for DSR loop + + ldx #shape_person + +rot_smc: + lda #0 ; ROT=0 + + + jmp XDRAW0 ; XDRAW 1 AT X,Y + ; Both A and X are 0 at exit + + +scale_lookup: +;.byte 1,2,3,4,5,4,3,2 + +shape_person: +; Person, shoulders up + +;.byte $01,$00,$04,$00, +.byte $2d,$25,$3c,$24 +.byte $2c,$2c,$35,$37,$6f,$25,$16,$3f +.byte $77,$2d,$1e,$37,$2d,$2d,$15,$3f +.byte $3f,$3f,$3f,$3f,$07,$00 + +shape_arm: +;.byte $49,$49,$49,$24 +;.byte $24,$24,$ac,$36,$36,$36,$00 + +shape_dsr: +.byte $2d,$36,$ff,$3f +.byte $24,$ad,$22,$24,$94,$21,$2c,$4d +.byte $91,$3f,$36,$00 + + + ;=========================== + ; BEEP + ;=========================== +beep: + ; BEEP + ; repeat 34 times + lda #34 ; 2 +tone1_loop: + ldy #21 ; 2 + jsr delay_tone ; 3 + + ldy #24 ; 2 + jsr delay_tone ; 3 + + ldy #235 ; 2 + jsr delay_tone ; 3 + + sec ; 1 + sbc #1 ; 2 + bne tone1_loop ; 2 + + rts ; 1 + + + ; Try X=6 Y=21 cycles=757 + ; Try X=6 Y=24 cycles=865 + ; Try X=7 Y=235 cycles=9636 + +delay_tone: +loopC: ldx #6 ; 2 +loopD: dex ; 1 + bne loopD ; 2 + dey ; 1 + bne loopC ; 2 + + bit SPEAKER ; 3 ; click speaker + + rts ; 1 +