
	; someone pressed UP

up_action:


	; set X and Y value
	; convert tile values to X,Y
	; X=((DUKE_X/2)-1)+TILEX

	lda     DUKE_X
	lsr
	sec
	sbc	#1
	clc
	adc	TILEMAP_X
        sta     XPOS

	; Y = (DUKEY/4)+TILEY
	lda	DUKE_Y
	lsr
	lsr
	clc
	adc	TILEMAP_Y
	sta	YPOS

	; $39,$22 = 57,34

	; check if it's a key slot
;check_red_keyhole:
;
;
;	; key slot is 280,148
;	; 280,148 (-80,-12) -> 200,136 -> (/4,/4) -> 50,34
;
;	lda	XPOS
;	cmp	#50
;	beq	redkey_x
;	cmp	#51
;	bne	check_if_exit

;redkey_x:
;
;	lda	YPOS
;	cmp	#34
;	bne	check_if_exit
;
;	; check that we have the key
;	lda	INVENTORY
;	and	#INV_RED_KEY
;	bne	open_the_wall
;
;no_red_key:
;	jsr	buzzer_noise
;	jmp	done_up_action
;
	; open the red wall
	; there has to be a more efficient way of doing this
;open_the_wall:
;	; reset smc
;	lda	#>BIG_TILEMAP
;	sta	rwr_smc1+2
;	sta	rwr_smc2+2
;
;remove_red_wall_outer:
;	ldx	#0
;remove_red_wall_loop:
;rwr_smc1:
;	lda	BIG_TILEMAP,X
;	cmp	#49			; red key tile
;	bne	not_red_tile
;	lda	#2			; lblue bg tile
;rwr_smc2:
;	sta	BIG_TILEMAP,X
;not_red_tile:
;	inx
;	bne	remove_red_wall_loop
;
;	inc	rwr_smc1+2
;	inc	rwr_smc2+2
;
;	lda	rwr_smc1+2
;	cmp	#(>BIG_TILEMAP)+40
;	bne	remove_red_wall_outer
;
;	; refresh local tilemap
;
;	jsr	copy_tilemap_subset
;
;	jsr	rumble_noise

;	jmp	done_up_action


	; check if it's the exit
check_if_exit:

	; exit is 924,84
	; 924,84 (-80,-12) -> 844,72 -> (/4,/4) -> 211,18

	lda	XPOS
	cmp	#211
	beq	exit_x

	cmp	#212
	bne	done_up_action

exit_x:
	lda	YPOS
	cmp	#18
	bne	done_up_action

	lda	#1
	sta	DOOR_ACTIVATED

	sta	FRAMEL		; restart timer

done_up_action:

	rts


	;==========================
	; open the door, end level
	;==========================
check_open_door:
	lda	DOOR_ACTIVATED
	beq	done_open_door

	asl
	tay
	lda	door_opening,Y
	sta	INL
	lda	door_opening+1,Y
	sta	INH

	; need to find actual door location
	; it's at 211,18
	; Y is going to be at 20 unless something weird is going on
	; X is going to be ((211-TILE_X)+2)*2

	lda	#213		; +2, edge of screen
	sec
	sbc	TILEMAP_X
	asl
	sta	XPOS

	lda	#20
	sta	YPOS

	jsr	put_sprite_crop

	lda	FRAMEL
	and	#$7
	bne	done_open_door

	; increment

	inc	DOOR_ACTIVATED
	lda	DOOR_ACTIVATED
	cmp	#6
	bne	done_open_door

	jsr	level_end

done_open_door:
	rts



door_opening:
	.word	door_sprite0
	.word	door_sprite0
	.word	door_sprite1
	.word	door_sprite2
	.word	door_sprite1
	.word	door_sprite0

door_sprite0:
	.byte	4,4
	.byte	$15,$55,$55,$f5
	.byte	$55,$f5,$5f,$55
	.byte	$25,$25,$25,$25
	.byte	$55,$55,$55,$55

door_sprite1:
	.byte	4,4
	.byte	$51,$f5,$f5,$5f
	.byte	$55,$05,$05,$50
	.byte	$05,$50,$50,$55
	.byte	$52,$55,$55,$52

door_sprite2:
	.byte	4,4
	.byte	$f5,$05,$05,$f0
	.byte	$55,$00,$00,$55
	.byte	$55,$00,$00,$55
	.byte	$05,$50,$50,$25

