mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-26 00:29:29 +00:00
ootw: update c15 laser handling
This commit is contained in:
parent
b9bd74e5a8
commit
d43a0a97b5
42
ootw/gr_trapezoid.s
Normal file
42
ootw/gr_trapezoid.s
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
; color -> trapezoid_color_smc+1
|
||||||
|
; width -> trapezoid_width_smc+1
|
||||||
|
; starty = Y
|
||||||
|
; endy -> trapezoid_endy_smc+1
|
||||||
|
; startx-> trapezoid_startx_smc+1
|
||||||
|
; LEFTSLOPE, RIGHTSLOPE
|
||||||
|
|
||||||
|
draw_trapezoid:
|
||||||
|
|
||||||
|
|
||||||
|
draw_trapezoid_loop:
|
||||||
|
|
||||||
|
clc
|
||||||
|
trapezoid_startx_smc:
|
||||||
|
lda #5
|
||||||
|
adc gr_offsets,Y
|
||||||
|
sta trapezoid_draw_loop_smc+1
|
||||||
|
|
||||||
|
lda gr_offsets+1,Y
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta trapezoid_draw_loop_smc+2
|
||||||
|
|
||||||
|
trapezoid_color_smc:
|
||||||
|
lda #$11
|
||||||
|
trapezoid_width_smc:
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
trapezoid_draw_loop:
|
||||||
|
trapezoid_draw_loop_smc:
|
||||||
|
sta $c00,X
|
||||||
|
dex
|
||||||
|
bne trapezoid_draw_loop
|
||||||
|
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
trapezoid_endy_smc:
|
||||||
|
cpy #0
|
||||||
|
bne draw_trapezoid_loop
|
||||||
|
|
||||||
|
rts
|
17
ootw/laser.s
17
ootw/laser.s
|
@ -12,31 +12,46 @@
|
||||||
|
|
||||||
; should handle shooting while crouching
|
; should handle shooting while crouching
|
||||||
|
|
||||||
MAX_LASERS = 2
|
; in general, 0 for physicist, 1/2 for alien
|
||||||
|
|
||||||
|
MAX_LASERS = 3
|
||||||
|
|
||||||
|
; 0=not out, else out. ff=can't hurt
|
||||||
laser_out:
|
laser_out:
|
||||||
laser0_out: .byte $0
|
laser0_out: .byte $0
|
||||||
laser1_out: .byte $0
|
laser1_out: .byte $0
|
||||||
|
laser2_out: .byte $0
|
||||||
|
laser3_out: .byte $0
|
||||||
|
|
||||||
laser_start:
|
laser_start:
|
||||||
laser0_start: .byte $0
|
laser0_start: .byte $0
|
||||||
laser1_start: .byte $0
|
laser1_start: .byte $0
|
||||||
|
laser2_start: .byte $0
|
||||||
|
laser3_start: .byte $0
|
||||||
|
|
||||||
laser_end:
|
laser_end:
|
||||||
laser0_end: .byte $0
|
laser0_end: .byte $0
|
||||||
laser1_end: .byte $0
|
laser1_end: .byte $0
|
||||||
|
laser2_end: .byte $0
|
||||||
|
laser3_end: .byte $0
|
||||||
|
|
||||||
laser_y:
|
laser_y:
|
||||||
laser0_y: .byte $0
|
laser0_y: .byte $0
|
||||||
laser1_y: .byte $0
|
laser1_y: .byte $0
|
||||||
|
laser2_y: .byte $0
|
||||||
|
laser3_y: .byte $0
|
||||||
|
|
||||||
laser_direction:
|
laser_direction:
|
||||||
laser0_direction: .byte $0
|
laser0_direction: .byte $0
|
||||||
laser1_direction: .byte $0
|
laser1_direction: .byte $0
|
||||||
|
laser2_direction: .byte $0
|
||||||
|
laser3_direction: .byte $0
|
||||||
|
|
||||||
laser_count:
|
laser_count:
|
||||||
laser0_count: .byte $0
|
laser0_count: .byte $0
|
||||||
laser1_count: .byte $0
|
laser1_count: .byte $0
|
||||||
|
laser2_count: .byte $0
|
||||||
|
laser3_count: .byte $0
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
; fire laser
|
; fire laser
|
||||||
|
|
|
@ -151,6 +151,10 @@ ootw_c15_setup_room_and_play:
|
||||||
;==============================
|
;==============================
|
||||||
; each room init
|
; each room init
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta LEFT_SHOOT_LIMIT
|
||||||
|
lda #39
|
||||||
|
sta RIGHT_SHOOT_LIMIT
|
||||||
|
|
||||||
;==============================
|
;==============================
|
||||||
; setup per-room variables
|
; setup per-room variables
|
||||||
|
@ -462,7 +466,41 @@ c15_no_bg_action:
|
||||||
|
|
||||||
lda WHICH_ROOM
|
lda WHICH_ROOM
|
||||||
cmp #0
|
cmp #0
|
||||||
bne c15_no_fg_action
|
bne c15_room1_foreground
|
||||||
|
|
||||||
|
c15_room0_foreground:
|
||||||
|
; Room 0 laser fire
|
||||||
|
|
||||||
|
lda laser1_out
|
||||||
|
bne handle_laser2
|
||||||
|
|
||||||
|
handle_laser1:
|
||||||
|
jsr random16
|
||||||
|
lda SEEDL
|
||||||
|
and #$7 ; 0..7 (+1 carry)
|
||||||
|
adc #20 ; make random
|
||||||
|
sta laser1_y
|
||||||
|
|
||||||
|
lda #1 ; right
|
||||||
|
sta laser1_direction
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta laser1_start
|
||||||
|
sta laser1_count
|
||||||
|
|
||||||
|
lda #10
|
||||||
|
sta laser1_end
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
sta laser1_out
|
||||||
|
|
||||||
|
jmp done_handle_laser
|
||||||
|
|
||||||
|
handle_laser2:
|
||||||
|
lda laser2_out
|
||||||
|
bne done_handle_laser
|
||||||
|
|
||||||
|
done_handle_laser:
|
||||||
|
|
||||||
; Room 0 draw guard
|
; Room 0 draw guard
|
||||||
c15_draw_fg_guard:
|
c15_draw_fg_guard:
|
||||||
|
@ -495,7 +533,7 @@ fg_guard_draw:
|
||||||
jsr put_sprite_crop
|
jsr put_sprite_crop
|
||||||
|
|
||||||
|
|
||||||
; draw laser
|
; draw forground lasers
|
||||||
|
|
||||||
lda FRAMEL
|
lda FRAMEL
|
||||||
and #$1f
|
and #$1f
|
||||||
|
@ -516,6 +554,15 @@ fg_guard_no_laser:
|
||||||
|
|
||||||
jmp c15_no_fg_action
|
jmp c15_no_fg_action
|
||||||
|
|
||||||
|
|
||||||
|
c15_room1_foreground:
|
||||||
|
cmp #1
|
||||||
|
bne c15_draw_friend_cliff
|
||||||
|
|
||||||
|
|
||||||
|
jsr draw_trapezoid
|
||||||
|
|
||||||
|
|
||||||
; Room 5 friend slowly working to left
|
; Room 5 friend slowly working to left
|
||||||
c15_draw_friend_cliff:
|
c15_draw_friend_cliff:
|
||||||
|
|
||||||
|
@ -640,6 +687,8 @@ end_message:
|
||||||
.include "keyboard.s"
|
.include "keyboard.s"
|
||||||
.include "gr_overlay.s"
|
.include "gr_overlay.s"
|
||||||
.include "gr_run_sequence.s"
|
.include "gr_run_sequence.s"
|
||||||
|
.include "random16.s"
|
||||||
|
.include "gr_trapezoid.s"
|
||||||
|
|
||||||
.include "physicist.s"
|
.include "physicist.s"
|
||||||
.include "alien.s"
|
.include "alien.s"
|
||||||
|
@ -806,3 +855,7 @@ guard_laser:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user