diff --git a/ootw/beast.s b/ootw/beast.s index 9fd1a117..bab251e3 100644 --- a/ootw/beast.s +++ b/ootw/beast.s @@ -44,6 +44,40 @@ move_beast: ;====================== ; running move_beast_running: + + ;======================= + ; stop at edge or at physicist + + lda BEAST_DIRECTION + beq check_beast_left + +check_beast_right: + + clc + lda BEAST_X + adc #$80 + + cmp RIGHT_LIMIT + bcc beast_no_stop ; (blt==bcc) + bcs stop_beast + +check_beast_left: + + clc + lda BEAST_X + adc #$80 + + cmp LEFT_LIMIT + bcs beast_no_stop ; (bge==bcs) + +stop_beast: + lda #B_STANDING + sta BEAST_STATE + rts + + + +beast_no_stop: inc BEAST_GAIT ; cycle through animation lda BEAST_GAIT diff --git a/ootw/keyboard.s b/ootw/keyboard.s index c489d6a7..71cfb187 100644 --- a/ootw/keyboard.s +++ b/ootw/keyboard.s @@ -80,6 +80,8 @@ left_going_left: beq walk_left cmp #P_WALKING beq run_left + cmp #P_CROUCHING + beq stand_left ;============================= ; already running, do nothing? @@ -93,6 +95,8 @@ left_going_right: beq stand_right cmp #P_STANDING beq stand_left + cmp #P_CROUCHING + beq stand_left ;=========================== ; otherwise? @@ -124,6 +128,8 @@ right_going_right: beq walk_right cmp #P_WALKING beq run_right + cmp #P_CROUCHING + beq stand_right ;============================= ; already running, do nothing? @@ -137,6 +143,8 @@ right_going_left: beq stand_left cmp #P_STANDING beq stand_right + cmp #P_CROUCHING + beq stand_left ;=========================== ; otherwise? diff --git a/ootw/ootw_mesa.s b/ootw/ootw_mesa.s index f1aae933..d4dd33ef 100644 --- a/ootw/ootw_mesa.s +++ b/ootw/ootw_mesa.s @@ -60,6 +60,8 @@ mesa_left: sta GAME_OVER sta LEVELEND_PROGRESS + jsr setup_beast + ;============================ ;============================ ;============================ diff --git a/ootw/ootw_rope.s b/ootw/ootw_rope.s index 9da795bb..8c88191b 100644 --- a/ootw/ootw_rope.s +++ b/ootw/ootw_rope.s @@ -306,10 +306,15 @@ check_swung_off: cmp #$5 bne not_done_rope + + ;========================== + ; swung off screen to right + lda #1 sta PHYSICIST_X sta EARTH_OFFSET sta DIRECTION ; face right + sta BEAST_DIRECTION lda #10 sta PHYSICIST_Y lda #P_FALLING