ootw: c1: beast now properly climbs slope on rope screen

This commit is contained in:
Vince Weaver
2019-08-18 12:37:21 -04:00
parent d7fbc51e19
commit 69cf4408c2
4 changed files with 53 additions and 16 deletions

View File

@@ -16,6 +16,9 @@ setup_beast:
lda #B_STANDING lda #B_STANDING
sta BEAST_STATE sta BEAST_STATE
lda #26
sta BEAST_Y
lda BEAST_DIRECTION lda BEAST_DIRECTION
beq setup_beast_left beq setup_beast_left
@@ -71,6 +74,11 @@ check_beast_right:
check_beast_left: check_beast_left:
; no attack if swinging
lda PHYSICIST_STATE
cmp #P_SWINGING
beq stop_beast
; Pp^pp Bbbbbb ; Pp^pp Bbbbbb
; if B=p ; if B=p
clc clc
@@ -86,8 +94,6 @@ stop_beast:
sta BEAST_STATE sta BEAST_STATE
rts rts
beast_no_stop: beast_no_stop:
inc BEAST_GAIT ; cycle through animation inc BEAST_GAIT ; cycle through animation
@@ -193,7 +199,7 @@ finally_draw_beast:
lda BEAST_X lda BEAST_X
sta XPOS sta XPOS
lda #26 lda BEAST_Y ; was 26
sec sec
sbc EARTH_OFFSET ; adjust for earthquakes sbc EARTH_OFFSET ; adjust for earthquakes
sta YPOS sta YPOS

View File

@@ -234,6 +234,9 @@ trigger_beast:
lda #1 lda #1
sta BEAST_OUT sta BEAST_OUT
lda #26
sta BEAST_Y
lda #0 lda #0
sta BEAST_DIRECTION sta BEAST_DIRECTION
sta BEAST_GAIT sta BEAST_GAIT

View File

@@ -61,8 +61,8 @@ load_swing_bg:
;================================= ;=================================
; copy $c00 to both pages $400/$800 ; copy $c00 to both pages $400/$800
jsr gr_copy_to_current ; jsr gr_copy_to_current
jsr page_flip ; jsr page_flip
;================================= ;=================================
; setup vars ; setup vars
@@ -157,6 +157,34 @@ beyond_quake:
;================ ;================
; draw beast ; draw beast
; adjust y for slope
lda BEAST_X
cmp #26
bcs beast_no_adjust_y ; bge
cmp #17
bcc beast_on_platform
sec
sbc #3
and #$fe ; our sprite code only draws even y
jmp beast_done_adjust_y
; slope is 15 - 26 ( 28 - 36)
; 26 -> 22
beast_on_platform:
lda #14
bne beast_done_adjust_y
beast_no_adjust_y:
lda #22
beast_done_adjust_y:
sta BEAST_Y
jsr draw_beast jsr draw_beast
rope_no_beast: rope_no_beast:
@@ -192,7 +220,6 @@ done_swing_check:
cmp #17 cmp #17
bcc phys_on_platform bcc phys_on_platform
; lda PHYSICIST_X
sec sec
sbc #3 sbc #3
and #$fe ; our sprite code only draws even y and #$fe ; our sprite code only draws even y

View File

@@ -32,17 +32,18 @@ SEEDL = $4e
SEEDH = $4f SEEDH = $4f
XMAX = $50 XMAX = $50
BEAST_X = $51 BEAST_X = $51 ; L1
BEAST_GAIT = $52 BEAST_Y = $52 ; L1
BEAST_COUNT = $53 BEAST_GAIT = $53 ; L1
BEAST_STATE = $54 BEAST_COUNT = $54 ; L1
B_STANDING = $00 BEAST_STATE = $55
B_RUNNING = $01 B_STANDING = $00
B_FALLING = $02 B_RUNNING = $01
B_DEAD = $03 B_FALLING = $02
BEAST_DIRECTION = $55 B_DEAD = $03
BEAST_DIRECTION = $56 ; L1
;INVFLG = $32
FRAMEL = $60 FRAMEL = $60
FRAMEH = $61 FRAMEH = $61