ootw: c15: more laser work

This commit is contained in:
Vince Weaver 2020-02-14 19:26:36 -05:00
parent 06a2fbe7da
commit f0be818671
2 changed files with 159 additions and 11 deletions

View File

@ -46,8 +46,20 @@ draw_trapezoid_loop:
trapezoid_color_smc: trapezoid_color_smc:
lda #$11 lda #$11
ldx trapezoid_x_start ldx trapezoid_x_start
bmi trap_clamp0
cpx #40
bcc trapezoid_draw_loop ; blt
ldx #39
jmp trapezoid_draw_loop
trap_clamp0:
ldx #0
jmp trapezoid_draw_loop
trapezoid_draw_loop: trapezoid_draw_loop:
trapezoid_draw_loop_smc: trapezoid_draw_loop_smc:
sta $c00,X sta $c00,X

View File

@ -576,9 +576,9 @@ fg_guard_no_laser:
lsr lsr
tay tay
lda shot_lookup,Y lda shot_lookup1,Y
sta INL sta INL
lda shot_lookup+1,Y lda shot_lookup1+1,Y
sta INH sta INH
jsr draw_trapezoid jsr draw_trapezoid
@ -592,7 +592,10 @@ skip_this:
c15_room1_foreground: c15_room1_foreground:
cmp #1 cmp #1
bne c15_draw_friend_cliff beq actual_room1_foreground
jmp c15_draw_friend_cliff
actual_room1_foreground:
; run soldier/laser in the front ; run soldier/laser in the front
@ -663,7 +666,12 @@ no_update_enemy_walk:
skip_enemy_walk: skip_enemy_walk:
; test shots ; occasional laser
; FRAMEL: every 8th frame (111) update, draw 4-long animation
; cycle through 4 possible shots
; FIXME: we could randomly adjust some of the parameters?
lda FRAMEL lda FRAMEL
and #$18 and #$18
@ -671,11 +679,39 @@ skip_enemy_walk:
lsr lsr
tay tay
lda shot_lookup,Y lda FRAMEL
sta INL and #$60
lda shot_lookup+1,Y beq shot4_base
sta INH cmp #$20
beq shot3_base
cmp #$40
beq shot2_base
shot1_base:
lda shot_lookup1,Y
sta INL
lda shot_lookup1+1,Y
jmp draw_shot
shot2_base:
lda shot_lookup2,Y
sta INL
lda shot_lookup2+1,Y
jmp draw_shot
shot3_base:
lda shot_lookup3,Y
sta INL
lda shot_lookup3+1,Y
jmp draw_shot
shot4_base:
lda shot_lookup4,Y
sta INL
lda shot_lookup4+1,Y
draw_shot:
sta INH
jsr draw_trapezoid jsr draw_trapezoid
@ -974,12 +1010,30 @@ guard_laser:
.byte $1A,$1A,$1A,$11,$A1,$A1,$A1,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA .byte $1A,$1A,$1A,$11,$A1,$A1,$A1,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA
shot_lookup: shot_lookup1:
.word shot1_frame1 .word shot1_frame1
.word shot1_frame2 .word shot1_frame2
.word shot1_frame3 .word shot1_frame3
.word shot1_hole .word shot1_hole
shot_lookup2:
.word shot2_frame1
.word shot2_frame2
.word shot2_frame3
.word shot2_hole
shot_lookup3:
.word shot3_frame1
.word shot3_frame2
.word shot3_frame3
.word shot3_hole
shot_lookup4:
.word shot4_frame1
.word shot4_frame2
.word shot4_frame3
.word shot4_hole
shot1_frame1: shot1_frame1:
.byte 2,128 ; LEFT SLOPE H/L .byte 2,128 ; LEFT SLOPE H/L
@ -989,8 +1043,7 @@ shot1_frame1:
.byte 36,46 ; ENDY/STARTY .byte 36,46 ; ENDY/STARTY
shot1_frame2: shot1_frame2:
.byte 2,0 ; LEFT SLOPE H/L .byte 2,0 ; LEFT SLOPE H/L
; .byte 0,$60 ; RIGHT SLOPE H/L ; approximately 1/3? .byte 0,$80 ; RIGHT SLOPE H/L
.byte 0,$80 ; RIGHT SLOPE H/L ; approximately 1/3?
.byte 5,0 ; STARTX H/L .byte 5,0 ; STARTX H/L
.byte 16,128 ; ENDX H/L .byte 16,128 ; ENDX H/L
.byte 30,46 ; ENDY/STARTY .byte 30,46 ; ENDY/STARTY
@ -1007,6 +1060,89 @@ shot1_hole:
.byte 0,0 ; ENDX H/L .byte 0,0 ; ENDX H/L
.byte 0,$ff ; ENDY/STARTY .byte 0,$ff ; ENDY/STARTY
; shot 2
shot2_frame1:
.byte $ff,00 ; LEFT SLOPE H/L
.byte $fe,00 ; RIGHT SLOPE H/L
.byte 19,0 ; STARTX H/L
.byte 32,0 ; ENDX H/L
.byte 28,46 ; ENDY/STARTY
shot2_frame2:
.byte $ff,00 ; LEFT SLOPE H/L
.byte $fe,$80 ; RIGHT SLOPE H/L ; approximately 1/3?
.byte 17,0 ; STARTX H/L
.byte 23,0 ; ENDX H/L
.byte 18,36 ; ENDY/STARTY
shot2_frame3:
.byte 0,0 ; LEFT SLOPE H/L
.byte 0,0 ; RIGHT SLOPE H/L
.byte 7,0 ; STARTX H/L
.byte 9,0 ; ENDX H/L
.byte 18,20 ; ENDY/STARTY
shot2_hole:
.byte 6,20 ; LEFT SLOPE H/L
.byte 0,0 ; RIGHT SLOPE H/L
.byte 0,0 ; STARTX H/L
.byte 0,0 ; ENDX H/L
.byte 0,$ff ; ENDY/STARTY
; shot3
shot3_frame1:
.byte $FE,0 ; LEFT SLOPE H/L
.byte $FE,$80 ; RIGHT SLOPE H/L
.byte 37,0 ; STARTX H/L
.byte 40,0 ; ENDX H/L
.byte 18,24 ; ENDY/STARTY
shot3_frame2:
.byte $FD,0 ; LEFT SLOPE H/L
.byte $FD,0 ; RIGHT SLOPE H/L
.byte 19,0 ; STARTX H/L
.byte 23,0 ; ENDX H/L
.byte 12,16 ; ENDY/STARTY
shot3_frame3:
.byte 0,0 ; LEFT SLOPE H/L
.byte 0,0 ; RIGHT SLOPE H/L
.byte 9,0 ; STARTX H/L
.byte 10,0 ; ENDX H/L
.byte 10,12 ; ENDY/STARTY
shot3_hole:
.byte 7,12 ; LEFT SLOPE H/L
.byte 0,0 ; RIGHT SLOPE H/L
.byte 0,0 ; STARTX H/L
.byte 0,0 ; ENDX H/L
.byte 0,$ff ; ENDY/STARTY
; shot4
shot4_frame1:
.byte $FD,$00 ; LEFT SLOPE H/L
.byte $FF,$80 ; RIGHT SLOPE H/L
.byte 13,0 ; STARTX H/L
.byte 18,0 ; ENDX H/L
.byte $FE,6 ; ENDY/STARTY
shot4_frame2:
.byte $FD,$00 ; LEFT SLOPE H/L
.byte $FF,$00 ; RIGHT SLOPE H/L
.byte 22,0 ; STARTX H/L
.byte 24,0 ; ENDX H/L
.byte 0,10 ; ENDY/STARTY
shot4_frame3:
.byte 0,0 ; LEFT SLOPE H/L
.byte 0,0 ; RIGHT SLOPE H/L
.byte 24,0 ; STARTX H/L
.byte 25,9 ; ENDX H/L
.byte 10,12 ; ENDY/STARTY
shot4_hole:
.byte 23,12 ; LEFT SLOPE H/L
.byte 0,0 ; RIGHT SLOPE H/L
.byte 0,0 ; STARTX H/L
.byte 0,0 ; ENDX H/L
.byte 0,$ff ; ENDY/STARTY
; shot notes ; shot notes