ootw: c1: more beast fine-tuning

runs slightly faster than physicist now
also enters rooms closer if left room closer
This commit is contained in:
Vince Weaver 2019-08-19 10:32:10 -04:00
parent f102c687bf
commit 84d470c71b
4 changed files with 153 additions and 106 deletions

View File

@ -11,7 +11,6 @@ Before release:
when calculating room calcs, take Y position into account
L1 -- fix beast ending
L1 -- have beast death scene
L1 -- have beast collapse
L1 -- fix slugs
@ -56,8 +55,10 @@ door behavior:
- beast on hill and 2nd screen -- complex, only appears if
you happen to leave same time beast does? then movement
depends on xposition?
- earthquake can happen while on rope?
- earthquake should happen while on rope
- sometimes falling rocks can follow you to next screen
- beast can/should trip and fall if it gets close in the pool
room while running?
+ L2
- gun movement: gun is held by head when running

View File

@ -73,7 +73,9 @@ ootw:
; Enter the game
;=======================
jsr ootw_pool
; jsr ootw_pool
jsr ootw_mesa
;===========================

View File

@ -1,24 +1,32 @@
; FIXME, if beast close on screen #2, have it fall?
;=======================================
;=======================================
; Setup Beast Running -- for each room
;=======================================
;=======================================
; FIXME: distance for count should be related
; to X distance behind on previous screen
setup_beast:
; only move beast if out
lda BEAST_OUT
beq setup_no_beast
; have the beast wait standing offscreen a bit??
; what were you thinking, 6-months-ago Vince?
lda #30
sta BEAST_COUNT
lda #B_STANDING
sta BEAST_STATE
; set Y position
lda #26
sta BEAST_Y
; what we do is based on direction
lda BEAST_DIRECTION
beq setup_beast_left
@ -42,14 +50,30 @@ beast_right_rope:
lda #240
jmp beast_right_set_x
; adjust for distance
beast_right_set_normal:
lda #246 ; -8 = 248
sec
lda #40
sbc BEAST_X
lsr
lsr
adc #240 ;
beast_right_set_x:
sta BEAST_X
jmp setup_no_beast
;==============================
; running left
setup_beast_left:
lda #41
; adjust for how far was on last screen
; /4
lda BEAST_X
lsr
lsr
clc
adc #40
sta BEAST_X
setup_no_beast:
@ -62,6 +86,7 @@ setup_no_beast:
;=======================================
; stop if catch physicist
; also stop if swinging
; run just every slightly faster than physicist
move_beast:
lda BEAST_STATE
@ -119,10 +144,13 @@ beast_no_stop:
inc BEAST_GAIT ; cycle through animation
lda BEAST_GAIT
and #$3
cmp #$2 ; only run roughly 1/4 of time
and #$7
cmp #5
beq b_run
and #$3 ; only run roughly 3/8 of time
bne b_no_move_run
b_run:
lda BEAST_DIRECTION
beq b_run_left

View File

@ -1,6 +1,118 @@
;=========================
;=========================
; Beast
;=========================
;=========================
; FIXME: add tripping+falling sprites
; FIXME: add background beast for first cavern room
; FIXME: better running sprites
;=============================
; big beast sprites
;=============================
beast_standing:
.byte $9,$6
.byte $aa,$0a,$00,$00,$0a,$aa,$aa,$aa,$aa
.byte $aa,$00,$00,$00,$00,$00,$00,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$a0,$aa,$a0,$00,$00,$aa
.byte $aa,$aa,$00,$aa,$aa,$aa,$00,$aa,$00
beast_run_progression:
.word beast_running1
.word beast_running2
.word beast_running3
.word beast_running4
.word beast_running5
.word beast_running6
.word beast_running7
.word beast_running8
.word beast_standing
beast_running1: ; piskel2
.byte $9,$6
.byte $aa,$0a,$00,$00,$0a,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$a0,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$0a,$00,$aa,$aa,$a0,$00,$00,$00
.byte $a0,$a0,$aa,$aa,$aa,$aa,$a0,$0a,$00
beast_running2: ; piskel3
.byte $9,$6
.byte $aa,$0a,$00,$00,$0a,$aa,$aa,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$a0,$a0,$aa,$aa,$a0,$00,$00,$0a
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$00,$00
beast_running3: ; piskel4
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$0a,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$00,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$0a,$00,$aa,$aa,$a0,$a0,$00,$00
.byte $a0,$a0,$aa,$aa,$aa,$aa,$aa,$aa,$aa
beast_running4: ; piskel5
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$0a,$aa,$aa,$aa,$aa
.byte $aa,$00,$00,$00,$00,$00,$00,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$0a,$00,$aa,$aa,$a0,$a0,$00,$0a
.byte $aa,$00,$aa,$aa,$aa,$aa,$aa,$a0,$a0
beast_running5: ; piskel6
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$aa,$aa,$a0,$00,$00,$aa
.byte $aa,$aa,$00,$aa,$aa,$aa,$00,$a0,$00
beast_running6: ; piskel7
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$0a,$aa,$00,$00,$00,$aa
.byte $aa,$aa,$aa,$00,$aa,$00,$a0,$aa,$aa
beast_running7: ; piskel8
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$a0,$a0,$00,$aa,$00,$00,$a0,$aa
.byte $aa,$aa,$aa,$00,$00,$00,$aa,$aa,$aa
beast_running8: ; piskel9
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$a0,$00,$aa,$aa,$aa,$00,$a0,$aa
.byte $aa,$aa,$00,$a0,$aa,$aa,$00,$aa,$aa
;========================
;========================
; Beast in background
;========================
;========================
beast_incoming:
.word beast_bg2 ; 2
@ -110,99 +222,3 @@ beast_bg13: ; going left
.byte $AA,$A0,$AA,$A0,$A0
beast_standing:
.byte $9,$6
.byte $aa,$0a,$00,$00,$0a,$aa,$aa,$aa,$aa
.byte $aa,$00,$00,$00,$00,$00,$00,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$a0,$aa,$a0,$00,$00,$aa
.byte $aa,$aa,$00,$aa,$aa,$aa,$00,$aa,$00
beast_run_progression:
.word beast_running1
.word beast_running2
.word beast_running3
.word beast_running4
.word beast_running5
.word beast_running6
.word beast_running7
.word beast_running8
.word beast_standing
beast_running1: ; piskel2
.byte $9,$6
.byte $aa,$0a,$00,$00,$0a,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$a0,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$0a,$00,$aa,$aa,$a0,$00,$00,$00
.byte $a0,$a0,$aa,$aa,$aa,$aa,$a0,$0a,$00
beast_running2: ; piskel3
.byte $9,$6
.byte $aa,$0a,$00,$00,$0a,$aa,$aa,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$a0,$a0,$aa,$aa,$a0,$00,$00,$0a
.byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$00,$00
beast_running3: ; piskel4
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$0a,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$00,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$0a,$00,$aa,$aa,$a0,$a0,$00,$00
.byte $a0,$a0,$aa,$aa,$aa,$aa,$aa,$aa,$aa
beast_running4: ; piskel5
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$0a,$aa,$aa,$aa,$aa
.byte $aa,$00,$00,$00,$00,$00,$00,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$0a,$00,$aa,$aa,$a0,$a0,$00,$0a
.byte $aa,$00,$aa,$aa,$aa,$aa,$aa,$a0,$a0
beast_running5: ; piskel6
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$aa,$aa,$a0,$00,$00,$aa
.byte $aa,$aa,$00,$aa,$aa,$aa,$00,$a0,$00
beast_running6: ; piskel7
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $a0,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$aa,$00,$0a,$aa,$00,$00,$00,$aa
.byte $aa,$aa,$aa,$00,$aa,$00,$a0,$aa,$aa
beast_running7: ; piskel8
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$a0,$a0,$00,$aa,$00,$00,$a0,$aa
.byte $aa,$aa,$aa,$00,$00,$00,$aa,$aa,$aa
beast_running8: ; piskel9
.byte $9,$6
.byte $aa,$aa,$0a,$0a,$aa,$aa,$aa,$aa,$aa
.byte $0a,$00,$00,$00,$00,$0a,$0a,$aa,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $00,$00,$00,$00,$00,$00,$00,$00,$aa
.byte $aa,$a0,$00,$aa,$aa,$aa,$00,$a0,$aa
.byte $aa,$aa,$00,$a0,$aa,$aa,$00,$aa,$aa