diff --git a/ootw/Makefile b/ootw/Makefile index b19e2beb..9a411856 100644 --- a/ootw/Makefile +++ b/ootw/Makefile @@ -274,6 +274,7 @@ OOTW_C15: ootw_c15.o ootw_c15.o: ootw_c15.s \ gr_copy.s gr_copy_offset.s gr_fast_clear.s gr_pageflip.s gr_unrle.s \ gr_putsprite.s gr_putsprite_flipped.s gr_putsprite_crop.s \ + gr_trapezoid.s \ keyboard.s gr_run_sequence.s physicist.s \ collision.s door.s laser.s gun.s blast.s shield.s \ ootw_graphics/sprites/physicist.inc \ diff --git a/ootw/gr_trapezoid.s b/ootw/gr_trapezoid.s index c4dcfea1..ce653dff 100644 --- a/ootw/gr_trapezoid.s +++ b/ootw/gr_trapezoid.s @@ -8,13 +8,11 @@ draw_trapezoid: - draw_trapezoid_loop: - clc -trapezoid_startx_smc: - lda #5 - adc gr_offsets,Y +; clc +; lda trapezoid_x_start + lda gr_offsets,Y sta trapezoid_draw_loop_smc+1 lda gr_offsets+1,Y @@ -24,15 +22,35 @@ trapezoid_startx_smc: trapezoid_color_smc: lda #$11 -trapezoid_width_smc: - ldx #0 + ldx trapezoid_x_start trapezoid_draw_loop: trapezoid_draw_loop_smc: sta $c00,X - dex + inx + cpx trapezoid_x_end bne trapezoid_draw_loop + ; add in 8.8 fixed point (should we make this 6.2 instead? + clc + lda trapezoid_x_start+1 + adc trapezoid_left_slope+1 + sta trapezoid_x_start+1 + + lda trapezoid_x_start + adc trapezoid_left_slope + sta trapezoid_x_start + + clc + lda trapezoid_x_end+1 + adc trapezoid_right_slope+1 + sta trapezoid_x_end+1 + + lda trapezoid_x_end + adc trapezoid_right_slope + sta trapezoid_x_end + + dey dey trapezoid_endy_smc: @@ -40,3 +58,14 @@ trapezoid_endy_smc: bne draw_trapezoid_loop rts + + +trapezoid_x_start: + .byte 0,0 +trapezoid_left_slope: + .byte 0,0 +trapezoid_x_end: + .byte 0,0 +trapezoid_right_slope: + .byte 0,0 + diff --git a/ootw/ootw_c15.s b/ootw/ootw_c15.s index 4cbfa043..64d611ba 100644 --- a/ootw/ootw_c15.s +++ b/ootw/ootw_c15.s @@ -559,9 +559,52 @@ c15_room1_foreground: cmp #1 bne c15_draw_friend_cliff + lda #$11 + sta trapezoid_color_smc+1 + + ldy #46 + lda #36 + sta trapezoid_endy_smc+1 + + lda #0 + sta trapezoid_x_start+1 + sta trapezoid_x_end+1 + + lda #2 + sta trapezoid_x_start + lda #15 + sta trapezoid_x_end + + lda #2 + sta trapezoid_left_slope + lda #128 + sta trapezoid_left_slope+1 + + lda #0 + sta trapezoid_right_slope + lda #128 + sta trapezoid_right_slope+1 + + jsr draw_trapezoid +; shot2 +; startx = 3 +; endx = 14.5 +; left_slope = 2.0 0 1 0 0 1 +; right_slope = 0.33 0.66 1.00 1.33 1.66 1.99 +; starty=46, endy=30 + +; 1/2 1/4 1/8 +; 0.33 in binary = .0 1 1 .25+.125=.375 + +; shot3 +; startx = 17, endx=19 +; left_slope=2 +; right_slope=2 +; starty=32, endy=28 + ; Room 5 friend slowly working to left c15_draw_friend_cliff: