mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-23 05:29:03 +00:00
peasant: kerrek can bonk you now
This commit is contained in:
parent
206ab9676e
commit
b390c96f0a
@ -405,13 +405,363 @@ kerrek_y_distance_negate:
|
||||
adc #1
|
||||
kerrek_y_distance_good:
|
||||
cmp #5
|
||||
bcs kerrek_no_collision
|
||||
bcc kerrek_got_ya
|
||||
|
||||
kerrek_no_collision:
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;=============================
|
||||
; kerrek got ya!
|
||||
;=============================
|
||||
; for now, from right only
|
||||
|
||||
; clear out both
|
||||
; 1. draw peasant looking forward
|
||||
; draw kerrek feet
|
||||
; draw kerrek head
|
||||
; draw kerrek teeth
|
||||
; draw kerrek, arm
|
||||
; 2. draw arm up
|
||||
; 3. draw big hit
|
||||
; 4. erase peasant, draw in ground
|
||||
; 5. draw regular arm
|
||||
; 6. pause a bit
|
||||
; 7. print message
|
||||
kerrek_got_ya:
|
||||
;=====================
|
||||
; game over, man!
|
||||
|
||||
; animate pounding you into ground
|
||||
|
||||
;=============================
|
||||
; step 1
|
||||
;=============================
|
||||
|
||||
; erase old kerrek (FIXME: make common?)
|
||||
|
||||
lda PREV_Y
|
||||
sta SAVED_Y1
|
||||
clc
|
||||
adc #51
|
||||
sta SAVED_Y2
|
||||
|
||||
lda PREV_X
|
||||
tax
|
||||
inx
|
||||
inx
|
||||
jsr hgr_partial_restore
|
||||
|
||||
jsr erase_peasant
|
||||
|
||||
; draw peasant
|
||||
|
||||
lda PEASANT_X
|
||||
and #$FE ; only works on even locations
|
||||
sta PEASANT_X
|
||||
sta CURSOR_X
|
||||
sec
|
||||
sbc #4
|
||||
sta KERREK_X
|
||||
|
||||
lda PEASANT_Y
|
||||
sta CURSOR_Y
|
||||
sec
|
||||
sbc #22
|
||||
sta KERREK_Y
|
||||
|
||||
lda #<peasant_down2_sprite
|
||||
sta INL
|
||||
lda #>peasant_down2_sprite
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite_1x28
|
||||
|
||||
; draw kerrek
|
||||
|
||||
; draw kerrek head
|
||||
|
||||
lda #<kerrek_r_hitting_head_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_head_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; draw kerrek teeth
|
||||
|
||||
lda #<kerrek_r_hitting_teeth_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_teeth_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
clc
|
||||
adc #2
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #8
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; draw kerrek arm
|
||||
|
||||
lda #<kerrek_r_hitting_arm_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_arm_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #11
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; draw kerrek legs
|
||||
|
||||
lda #<kerrek_r_hitting_legs_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_legs_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #21
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; wait a bit
|
||||
|
||||
lda #5
|
||||
jsr wait_a_bit
|
||||
|
||||
;=============================
|
||||
; step 2
|
||||
;=============================
|
||||
|
||||
; erase old kerrek arm
|
||||
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #10
|
||||
sta SAVED_Y1
|
||||
adc #10
|
||||
sta SAVED_Y2
|
||||
|
||||
lda KERREK_X
|
||||
tax
|
||||
inx
|
||||
inx
|
||||
jsr hgr_partial_restore
|
||||
|
||||
|
||||
; draw kerrek
|
||||
|
||||
; draw kerrek head
|
||||
|
||||
lda #<kerrek_r_hitting_arm_up_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_arm_up_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
sec
|
||||
sbc #2
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; wait a bit
|
||||
|
||||
lda #5
|
||||
jsr wait_a_bit
|
||||
|
||||
|
||||
;=============================
|
||||
; step 3
|
||||
;=============================
|
||||
|
||||
; erase old kerrek arm
|
||||
|
||||
lda KERREK_Y
|
||||
sec
|
||||
sbc #2
|
||||
sta SAVED_Y1
|
||||
adc #17
|
||||
sta SAVED_Y2
|
||||
|
||||
lda KERREK_X
|
||||
tax
|
||||
inx
|
||||
inx
|
||||
jsr hgr_partial_restore
|
||||
|
||||
|
||||
; draw kerrek
|
||||
|
||||
|
||||
; draw kerrek head
|
||||
|
||||
lda #<kerrek_r_hitting_head_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_head_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; draw kerrek teeth
|
||||
|
||||
lda #<kerrek_r_hitting_teeth_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_teeth_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
clc
|
||||
adc #2
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #8
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; draw big arm
|
||||
|
||||
lda #<kerrek_r_hitting_arm_down_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_arm_down_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #11
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; wait a bit
|
||||
|
||||
; FIXME: sound effect
|
||||
|
||||
lda #5
|
||||
jsr wait_a_bit
|
||||
|
||||
|
||||
;=============================
|
||||
; step 4
|
||||
;=============================
|
||||
|
||||
; erase peasant
|
||||
|
||||
jsr erase_peasant
|
||||
|
||||
; draw peasant in ground
|
||||
|
||||
lda PEASANT_X
|
||||
sta CURSOR_X
|
||||
|
||||
lda PEASANT_Y
|
||||
clc
|
||||
adc #15
|
||||
sta CURSOR_Y
|
||||
|
||||
lda #<kerrek_peasant_ground_sprite
|
||||
sta INL
|
||||
lda #>kerrek_peasant_ground_sprite
|
||||
sta INH
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
lda #5
|
||||
jsr wait_a_bit
|
||||
|
||||
|
||||
;=============================
|
||||
; step 5
|
||||
;=============================
|
||||
|
||||
; erase old kerrek
|
||||
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #11
|
||||
sta SAVED_Y1
|
||||
adc #20
|
||||
sta SAVED_Y2
|
||||
|
||||
lda KERREK_X
|
||||
tax
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
jsr hgr_partial_restore
|
||||
|
||||
; draw kerrek
|
||||
|
||||
; draw kerrek arm
|
||||
|
||||
lda #<kerrek_r_hitting_arm_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_arm_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #11
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; draw kerrek legs
|
||||
|
||||
lda #<kerrek_r_hitting_legs_sprite
|
||||
sta INL
|
||||
lda #>kerrek_r_hitting_legs_sprite
|
||||
sta INH
|
||||
lda KERREK_X
|
||||
sta CURSOR_X
|
||||
lda KERREK_Y
|
||||
clc
|
||||
adc #21
|
||||
sta CURSOR_Y
|
||||
|
||||
jsr hgr_draw_sprite
|
||||
|
||||
; wait a bit
|
||||
|
||||
lda #5
|
||||
jsr wait_a_bit
|
||||
|
||||
|
||||
;=============================
|
||||
; step 6
|
||||
;=============================
|
||||
|
||||
; wait a bit
|
||||
|
||||
lda #20
|
||||
jsr wait_a_bit
|
||||
|
||||
|
||||
; print message
|
||||
|
||||
ldx #<kerrek_pound_message
|
||||
ldy #>kerrek_pound_message
|
||||
@ -423,7 +773,6 @@ kerrek_got_ya:
|
||||
lda #NEW_FROM_DISK
|
||||
sta LEVEL_OVER
|
||||
|
||||
kerrek_no_collision:
|
||||
|
||||
rts
|
||||
|
||||
@ -431,6 +780,7 @@ kerrek_no_collision:
|
||||
|
||||
|
||||
|
||||
|
||||
;=======================
|
||||
;=======================
|
||||
;=======================
|
||||
|
@ -14,18 +14,7 @@ really_move_peasant:
|
||||
|
||||
; restore bg behind peasant
|
||||
|
||||
lda PEASANT_Y
|
||||
sta SAVED_Y1
|
||||
clc
|
||||
adc #28
|
||||
sta SAVED_Y2
|
||||
|
||||
ldx PEASANT_X
|
||||
txa
|
||||
inx
|
||||
|
||||
jsr hgr_partial_restore
|
||||
|
||||
jsr erase_peasant
|
||||
|
||||
;=========================
|
||||
;=========================
|
||||
@ -159,6 +148,26 @@ peasant_the_same:
|
||||
rts
|
||||
|
||||
|
||||
;===========================
|
||||
; erase peasant
|
||||
;===========================
|
||||
|
||||
; restore bg behind peasant
|
||||
erase_peasant:
|
||||
lda PEASANT_Y
|
||||
sta SAVED_Y1
|
||||
clc
|
||||
adc #28
|
||||
sta SAVED_Y2
|
||||
|
||||
ldx PEASANT_X
|
||||
txa
|
||||
inx
|
||||
|
||||
jmp hgr_partial_restore ; tail call
|
||||
|
||||
|
||||
|
||||
|
||||
; when peasants collide
|
||||
|
||||
|
@ -142,6 +142,17 @@ kerrek_sprites.inc: kerrek_sprites.png
|
||||
$(HGR_SPRITE) -s -l kerrek_r1_head_sprite kerrek_sprites.png 21 60 27 68 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r2_sprite kerrek_sprites.png 42 56 55 108 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r2_head_sprite kerrek_sprites.png 56 60 62 66 >> kerrek_sprites.inc
|
||||
# hitting animation
|
||||
$(HGR_SPRITE) -s -l kerrek_r_hitting_legs_sprite kerrek_sprites.png 70 23 83 54 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r_hitting_head_sprite kerrek_sprites.png 70 2 83 13 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r_hitting_teeth_sprite kerrek_sprites.png 84 10 90 12 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r_hitting_arm_sprite kerrek_sprites.png 98 13 118 23 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r_hitting_arm_up_sprite kerrek_sprites.png 126 0 146 23 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_r_hitting_arm_down_sprite kerrek_sprites.png 154 13 188 31 >> kerrek_sprites.inc
|
||||
$(HGR_SPRITE) -s -l kerrek_peasant_ground_sprite kerrek_sprites.png 182 41 188 54 >> kerrek_sprites.inc
|
||||
|
||||
|
||||
|
||||
|
||||
trogdor_sprites.inc: trogdor_sprites.png
|
||||
$(HGR_SPRITE) -s -l dashing0_sprite trogdor_sprites.png 14 6 20 45 > trogdor_sprites.inc
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.7 KiB |
@ -163,11 +163,11 @@ GAME_STATE_2 = $99
|
||||
GREASE_ON_HEAD =$80
|
||||
|
||||
NED_STATUS = $9A
|
||||
; 0 = hiding
|
||||
; 1..127 = countdown to appearing
|
||||
; 128 = hands on tree
|
||||
; 129 = half out
|
||||
; 130+/negative = out
|
||||
; 0 = hiding (no increment)
|
||||
; 1..127 = count up to appearing
|
||||
; 126,255 = hands on tree
|
||||
; 127,254 = half out
|
||||
; 128 = out (no increment)
|
||||
|
||||
BUSH_STATUS = $9B ; status of bush search
|
||||
BUSH_1_SEARCHED = $01
|
||||
|
Loading…
x
Reference in New Issue
Block a user