ootw: more work on cage end scene

This commit is contained in:
Vince Weaver 2019-07-19 12:12:10 -04:00
parent 3381971db9
commit 3bad7ffb44
4 changed files with 147 additions and 60 deletions

View File

@ -15,18 +15,6 @@ ootw_c2:
sta GAME_OVER
sta PHYSICIST_STATE
sta ON_ELEVATOR
sta CITY_MOVIE_SEEN
sta CART_OUT
sta DUDE_OUT
lda #39
sta DUDE_X
lda #$FA
sta CART_X
lda #1
sta JAIL_POWER_ON
lda #22
sta PHYSICIST_Y

View File

@ -26,12 +26,6 @@ ootw_cage:
lda #$c ; load image off-screen $c00
jsr load_rle_gr
;=================================
; copy to screen
jsr gr_copy_to_current
jsr page_flip
;=================================
; setup vars
@ -124,43 +118,7 @@ done_drawing_cage:
; draw laser
;======================
lda SHOOTING_BOTTOM
beq done_draw_laser
; 30 - 27, 30-24, 30-21
lda #$11
sta COLOR
ldx SHOOTING_BOTTOM
stx V2
ldx SHOOTING_TOP
ldy #21 ; X location
jsr vlin
; if shooting top < 10, decrement Y2
lda SHOOTING_TOP
cmp #10
bcs shoot_up_noadj ; bge
dec SHOOTING_BOTTOM
dec SHOOTING_BOTTOM
dec SHOOTING_BOTTOM
dec SHOOTING_BOTTOM
shoot_up_noadj:
lda SHOOTING_TOP
beq done_draw_laser
dec SHOOTING_TOP
dec SHOOTING_TOP
dec SHOOTING_TOP
dec SHOOTING_TOP
done_draw_laser:
jsr draw_laser
;======================
; draw guard
@ -292,11 +250,9 @@ check_amp4:
;===========================
; Done with cage, enter jail
; Done with cage, run ending sequence
bit KEYRESET ; clear keyboard
rts
jmp cage_ending
cage_continue:
bit KEYRESET ; clear keyboard
@ -397,6 +353,50 @@ done_cage:
rts
;======================
; Draw Laser
;======================
draw_laser:
lda SHOOTING_BOTTOM
beq done_draw_laser
; 30 - 27, 30-24, 30-21
lda #$11
sta COLOR
ldx SHOOTING_BOTTOM
stx V2
ldx SHOOTING_TOP
ldy #21 ; X location
jsr vlin
; if shooting top < 10, decrement Y2
lda SHOOTING_TOP
cmp #10
bcs shoot_up_noadj ; bge
dec SHOOTING_BOTTOM
dec SHOOTING_BOTTOM
dec SHOOTING_BOTTOM
dec SHOOTING_BOTTOM
shoot_up_noadj:
lda SHOOTING_TOP
beq done_draw_laser
dec SHOOTING_TOP
dec SHOOTING_TOP
dec SHOOTING_TOP
dec SHOOTING_TOP
done_draw_laser:
rts
cage_amp1_sprites:
.word cage_center_sprite
.word cage_right1_sprite
@ -709,3 +709,87 @@ little_guy_out2_sprite:
.byte $AA,$AA,$A7,$A7
.byte $AA,$AA,$AA,$AA
;============================
; Cage Ending
;============================
cage_ending:
;================================
; copy background to current page
;================================
jsr gr_copy_to_current
;=======================
; draw miners mining
;=======================
jsr ootw_draw_miners
;==========================
; draw cage (if applicable)
;==========================
lda #11
sta XPOS
lda #0
sta YPOS
lda #<cage_center_sprite
sta INL
lda #>cage_center_sprite
sta INH
jsr put_sprite_crop
;======================
; draw laser
;======================
jsr draw_laser
;===========================
; draw guard (if applicable)
;===========================
lda #34
sta XPOS
lda #28
sta YPOS
lda changing_guard_sprites,Y
sta INL
lda changing_guard_sprites+1,Y
sta INH
jsr put_sprite_crop
;===============
; page flip
jsr page_flip
;================
; inc frame count
inc FRAMEL
bne end_cage_frame_no_oflo
inc FRAMEH
end_cage_frame_no_oflo:
done_cage_end:
bit KEYRESET ; clear keyboard
rts

View File

@ -8,6 +8,20 @@ ootw_jail:
lda #0
sta ON_ELEVATOR
sta TELEPORTING
sta CITY_MOVIE_SEEN
sta CART_OUT
sta DUDE_OUT
sta friend_direction
lda #1
sta JAIL_POWER_ON
sta GUN_OUT
sta friend_out
lda #39
sta DUDE_X
lda #$FA
sta CART_X
;==============================
; setup per-room variables

View File

@ -124,12 +124,13 @@ LEFT_LIMIT = $E0 ; ALL
RIGHT_LIMIT = $E1 ; ALL
WHICH_SLUG = $E2 ; C1
TELEPORTING = $E2 ; C2
TELEPORTING = $E2 ; C2 jail
WHICH_CAVE = $E3 ; C1
WHICH_JAIL = $E3 ; C2
BEAST_OUT = $E4 ; C1
GUN_OUT = $E4 ; C2 jail
GAME_OVER = $E5 ; ALL
DNA_OUT = $E5 ; INTRO