dos33fsprogs/games/monkey/monkey_bar_inside2.s

282 lines
4.4 KiB
ArmAsm

; stuff regarding 2nd room of scumm bar
; if x<4 goto MONKEY_BAR_INSIDE1 at 34,24
bar_inside2_check_exit:
lda GUYBRUSH_X
cmp #4
bcc bar_inside2_to_bar_inside1
cmp #33
bcs bar_inside2_to_bar_inside3
bcc bar_inside2_no_exit
bar_inside2_to_bar_inside1:
lda GUYBRUSH_DIRECTION
cmp #DIR_LEFT
bne bar_inside2_no_exit
lda #MONKEY_BAR_INSIDE1
sta LOCATION
lda #34
sta GUYBRUSH_X
sta DESTINATION_X
lda #24
sta GUYBRUSH_Y
sta DESTINATION_Y
jsr change_location
jmp bar_inside2_no_exit
bar_inside2_to_bar_inside3:
lda GUYBRUSH_DIRECTION
cmp #DIR_RIGHT
bne bar_inside2_no_exit
lda #MONKEY_BAR_INSIDE3
sta LOCATION
lda #5
sta GUYBRUSH_X
sta DESTINATION_X
lda #24
sta GUYBRUSH_Y
sta DESTINATION_Y
jsr change_location
jmp bar_inside2_no_exit
bar_inside2_no_exit:
rts
;================================
;================================
; bar_inside2 adjust destination
;================================
;================================
bar_inside2_adjust_destination:
; just make Y always 24
lda #24
sta DESTINATION_Y
; lda DESTINATION_X
; cmp #33
bcc done_mb2_adjust
; lda #33
; sta DESTINATION_X
done_mb2_adjust:
rts
;================================
;================================
; bar_inside2 check bounds
;================================
;================================
bar_inside2_check_bounds:
; just make Y always 20
rts
;================================
;================================
; bar inside animations
;================================
;================================
bar_inside2_animate:
lda FRAMEL
and #$10
beq bar2_other_fire
lda #<bar2_fire1_sprite
sta INL
lda #>bar2_fire1_sprite
jmp bar2_draw_fire
bar2_other_fire:
lda #<bar2_fire2_sprite
sta INL
lda #>bar2_fire2_sprite
bar2_draw_fire:
sta INH
lda #25
sta XPOS
lda #22
sta YPOS
jsr put_sprite_crop
lda FRAMEL
and #$60
beq bar2_other_arm
lda #<bar2_pirate_mug1_sprite
sta INL
lda #>bar2_pirate_mug1_sprite
jmp bar2_draw_arm
bar2_other_arm:
lda #<bar2_pirate_mug2_sprite
sta INL
lda #>bar2_pirate_mug2_sprite
bar2_draw_arm:
sta INH
lda #7
sta XPOS
lda #26
sta YPOS
jsr put_sprite_crop
rts
bar2_fire1_sprite:
.byte 2,2
.byte $dA,$AA
.byte $d1,$dd
bar2_fire2_sprite:
.byte 2,2
.byte $AA,$dA
.byte $1d,$dd
bar2_pirate_mug1_sprite:
.byte 3,3
.byte $25,$00,$05
.byte $22,$82,$74
.byte $d2,$8b,$77
bar2_pirate_mug2_sprite:
.byte 3,3
.byte $25,$b7,$75
.byte $62,$26,$84
.byte $d2,$88,$88
;===================================
;===================================
; actions
;===================================
;===================================
;=============================
bar2_door_action:
bar2_door_nothing:
lda #VERB_WALK
sta CURRENT_VERB
rts
;=============================
fireplace_action:
lda CURRENT_VERB
asl
tay
lda fireplace_actions,Y
cmp #$ff
beq fireplace_nothing
sta MESSAGE_L
lda fireplace_actions+1,Y
sta MESSAGE_H
jmp do_display_message
fireplace_nothing:
lda #VERB_WALK
sta CURRENT_VERB
rts
fireplace_actions:
.word $FFFF ; give
.word doesnt_open ; open
.word doesnt_work ; close
.word cant_pick_up ; pick_up
.word fireplace_look ; look_at
.word $FFFF ; talk_to
.word for_what ; use
.word icant_move ; push
.word icant_move ; pull
fireplace_look:
.byte 18,21,"COZY.",0
;=============================
impt_pirate_action:
lda CURRENT_VERB
asl
tay
lda impt_pirate_actions,Y
cmp #$ff
beq impt_pirate_nothing
sta MESSAGE_L
lda impt_pirate_actions+1,Y
sta MESSAGE_H
jmp do_display_message
impt_pirate_nothing:
lda #VERB_WALK
sta CURRENT_VERB
rts
impt_pirate_actions:
.word $FFFF ; give
.word $FFFF ; open
.word $FFFF ; close
.word $FFFF ; pick_up
.word impt_pirate_look ; look_at
.word impt_pirate_look ; talk_to
.word $FFFF ; use
.word $FFFF ; push
.word $FFFF ; pull
impt_pirate_look:
.byte 8,21,"WHAT BE YE WANTIN' BOY?",0
;=============================
curtain_action:
lda CURRENT_VERB
asl
tay
lda curtain_actions,Y
cmp #$ff
beq curtain_nothing
sta MESSAGE_L
lda curtain_actions+1,Y
sta MESSAGE_H
jmp do_display_message
curtain_nothing:
lda #VERB_WALK
sta CURRENT_VERB
rts
curtain_actions:
.word $FFFF ; give
.word doesnt_open ; open
.word doesnt_work ; close
.word cant_pick_up ; pick_up
.word not_special ; look_at
.word $FFFF ; talk_to
.word for_what ; use
.word icant_move ; push
.word icant_move ; pull