peasant: work on jhonka ending

This commit is contained in:
Vince Weaver
2025-08-18 08:17:30 -04:00
parent e71c174543
commit d79c9af10e
8 changed files with 202 additions and 26 deletions

View File

@@ -36,9 +36,10 @@ jhonka_core.o: jhonka_core.s ../zp.inc ../hardware.inc ../qload.inc \
../location_common/init_common.s \
sprites_jhonka/sprites_jhonka.inc \
sprites_jhonka/sprites_riches.inc \
sprites_jhonka/sprites_beat.inc \
../move_peasant_new.s ../draw_peasant_new.s \
../new_map_location.s ../keyboard.s \
../wait_a_bit.s borders.s \
../wait_a_bit.s borders.s jhonka_beat.s \
jhonka_actions.s draw_jhonka.s update_bg.s
ca65 -o jhonka_core.o jhonka_core.s -l jhonka_core.lst

View File

@@ -74,24 +74,44 @@ jhonka_y:
.byte 121,121,121,124,124,124
sprites_xsize:
.byte 5,5,6,6,5,6 ; jhonka0..jhonka5
.byte 5,5,6,6 ; jhonka0..jhonka3
.byte 5,5,6,6 ; jhonka4..jhonka7
.byte 5,6 ; jhonka8..jhonka9
sprites_ysize:
.byte 24,26,26,23,31,24,24,26 ; jhonka0..jhonka5
.byte 24,26,26,23 ; jhonka0..jhonka3
.byte 24,26,26,23 ; jhonka4..jhonka7
.byte 31,24 ; jhonka8..jhonka9
; note: 6 never used?
; 0 = club on left, club down, knees bent
; 1 = club on left, club down, standing
; 2 = club on left, club out, standing
; 3 = club of left, club out, knees bent
; 4 = club on right, club down, knees bent
; 5 = club on right, club down, standing
; 6 = club on right, club out, standing
; 7 = club of right, club out, knees bent
; 8 = club on right, club raised
; 9 = club on right, club hitting
sprites_data_l:
.byte <jhonka0_sprite,<jhonka1_sprite,<jhonka2_sprite
.byte <jhonka3_sprite,<jhonka4_sprite,<jhonka5_sprite
.byte <jhonka0_sprite,<jhonka1_sprite,<jhonka2_sprite,<jhonka3_sprite
.byte <jhonka4_sprite,<jhonka5_sprite,<jhonka6_sprite,<jhonka7_sprite
.byte <jhonka8_sprite,<jhonka9_sprite
sprites_data_h:
.byte >jhonka0_sprite,>jhonka1_sprite,>jhonka2_sprite
.byte >jhonka3_sprite,>jhonka4_sprite,>jhonka5_sprite
.byte >jhonka0_sprite,>jhonka1_sprite,>jhonka2_sprite,>jhonka3_sprite
.byte >jhonka4_sprite,>jhonka5_sprite,>jhonka6_sprite,>jhonka7_sprite
.byte >jhonka8_sprite,>jhonka9_sprite
sprites_mask_l:
.byte <jhonka0_mask,<jhonka1_mask,<jhonka2_mask
.byte <jhonka3_mask,<jhonka4_mask,<jhonka5_mask
.byte <jhonka0_mask,<jhonka1_mask,<jhonka2_mask,<jhonka3_mask
.byte <jhonka4_mask,<jhonka5_mask,<jhonka6_mask,<jhonka7_mask
.byte <jhonka8_mask,<jhonka9_mask
sprites_mask_h:
.byte >jhonka0_mask,>jhonka1_mask,>jhonka2_mask
.byte >jhonka3_mask,>jhonka4_mask,>jhonka5_mask
.byte >jhonka0_mask,>jhonka1_mask,>jhonka2_mask,>jhonka3_mask
.byte >jhonka4_mask,>jhonka5_mask,>jhonka6_mask,>jhonka7_mask
.byte >jhonka8_mask,>jhonka9_mask

View File

@@ -249,6 +249,17 @@ jhonka_verb_yes:
; we don't need to restore verb table because we're dying?
ldx #<jhonka_yes_message
ldy #>jhonka_yes_message
jsr partial_message_step
jsr jhonka_beat
ldx #<jhonka_yes_message2
ldy #>jhonka_yes_message2
jsr finish_parse_message
; this kills you
lda #LOAD_GAME_OVER
sta WHICH_LOAD
@@ -256,13 +267,7 @@ jhonka_verb_yes:
lda #NEW_FROM_DISK
sta LEVEL_OVER
ldx #<jhonka_yes_message
ldy #>jhonka_yes_message
jsr partial_message_step
ldx #<jhonka_yes_message2
ldy #>jhonka_yes_message2
jmp finish_parse_message
rts
;=================

View File

@@ -0,0 +1,120 @@
;===================
; draw jhonka beat
;===================
; draw jhonka as he beats us up
; you say "yes"
; prints the "I KILL YOU" message, while still jumping?
; Jhonka/you initial position X=112,87
; flips left/right somehow
; 0 arm out, X=140 Y=113
; 1 arm out, X=140 Y=122
; 2 club down, X=126, Y=116
; 3 arm out, X=126 Y=107
; 4 arm out,knees bent X=133, Y=99
; 5 again, X=126 Y=96
; 6 club down, knees bent, X=126 Y=95
; 7 attack1, X=119, Y=88
; 8 attack2, X=119, Y=87 peasant=1, 105,86
; 9 attack1, X=119, Y=88 peasant=1, 105,86
;10 attack2, X=119, Y=87 peasant=2, 105,88
;11 attack1, X=119, Y=88 peasant=2, 105,88
;12 attack2, X=119, Y=87 peasant=3, 105,90
;13 attack1, X=119, Y=88 peasant=3, 105,90
;14 attack2, X=119, Y=87 peasant=4, 105,95
;15 attack1, X=119, Y=88 peasant=4, 105,95
;16 attack2, X=119, Y=87 peasant=5, 98,103
;17 attack1, X=119, Y=88 peasant=5, 98,103
; then leave showing as print message
jhonka_beat:
lda #0
sta BEAT_COUNT
lda #SUPPRESS_JHONKA
sta SUPPRESS_DRAWING
beat_loop:
jsr update_screen
; draw peasant if needed
; draw jhonka
ldy BEAT_COUNT
lda beat_x,Y
sta SPRITE_X
lda beat_y,Y
sta SPRITE_Y
ldx beat_which,Y
jsr hgr_draw_sprite_mask
jsr hgr_page_flip
jsr wait_until_keypress
;=========================
; move to next frame
inc BEAT_COUNT
lda BEAT_COUNT
cmp #18
bne beat_loop
done_beat:
lda #0
sta SUPPRESS_DRAWING
rts
; 0 arm out, X=140 Y=113
; 1 arm out, X=140 Y=122
; 2 club down, X=126, Y=116
; 3 arm out, X=126 Y=107
; 4 arm out,knees bent X=133, Y=99
; 5 again, X=126 Y=96
; 6 club down, knees bent, X=126 Y=95
; 7 attack1, X=119, Y=88
; 8 attack2, X=119, Y=87 peasant=1, 105,86
; 9 attack1, X=119, Y=88 peasant=1, 105,86
;10 attack2, X=119, Y=87 peasant=2, 105,88
;11 attack1, X=119, Y=88 peasant=2, 105,88
;12 attack2, X=119, Y=87 peasant=3, 105,90
;13 attack1, X=119, Y=88 peasant=3, 105,90
;14 attack2, X=119, Y=87 peasant=4, 105,95
;15 attack1, X=119, Y=88 peasant=4, 105,95
;16 attack2, X=119, Y=87 peasant=5, 98,103
;17 attack1, X=119, Y=88 peasant=5, 98,103
beat_x:
.byte 20,20,18,18, 19,18,18,17
.byte 17,17,17,17, 17,17,17,17
.byte 17,17
beat_y:
.byte 113,122,116,107, 99,96,95,88
.byte 87, 88, 87, 88, 87,88,87,88
.byte 87, 88
beat_which:
.byte 7,7,4,5, 7,7,4,8
.byte 9,8,9,8, 9,8,9,8
.byte 9,8
; note: 6 never used?
; 4 = club on right, club down, knees bent
; 5 = club on right, club down, standing
; 6 = club on right, club out, standing
; 7 = club of right, club out, knees bent
; 8 = club on right, club raised
; 9 = club on right, club hitting

View File

@@ -173,7 +173,9 @@ really_level_over:
.include "draw_jhonka.s"
.include "sprites_jhonka/sprites_jhonka.inc"
.include "sprites_jhonka/sprites_riches.inc"
.include "sprites_jhonka/sprites_beat.inc"
.include "update_bg.s"
.include "jhonka_beat.s"
USE_BG_PALETTE=1
.include "../hgr_routines/hgr_sprite_mask.s"
@@ -192,13 +194,22 @@ update_screen:
jsr hgr_copy_faster
;=====================
; always draw peasant
; draw peasant
lda SUPPRESS_DRAWING
and #SUPPRESS_PEASANT
bne skip_draw_peasant
jsr draw_peasant
skip_draw_peasant:
;=====================
; draw jhonka
lda SUPPRESS_DRAWING
and #SUPPRESS_JHONKA
bne skip_draw_jhonka
jsr draw_jhonka
skip_draw_jhonka:
rts

View File

@@ -1,6 +1,6 @@
HGR_SPRITE = ../../../../utils/hgr-utils/hgr_make_sprite
all: sprites_jhonka.inc sprites_riches.inc
all: sprites_jhonka.inc sprites_riches.inc sprites_beat.inc
sprites_jhonka.inc: sprites_jhonka.png
@@ -9,19 +9,36 @@ sprites_jhonka.inc: sprites_jhonka.png
$(HGR_SPRITE) -l jhonka1_sprite sprites_jhonka.png 56 31 90 57 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka2_sprite sprites_jhonka.png 98 31 139 57 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka3_sprite sprites_jhonka.png 154 34 195 57 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka4_sprite sprites_jhonka.png 14 121 48 152 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka5_sprite sprites_jhonka.png 49 128 90 152 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka8_sprite sprites_jhonka.png 14 121 48 152 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka9_sprite sprites_jhonka.png 49 128 90 152 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka0_mask sprites_jhonka.png 14 62 48 86 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka1_mask sprites_jhonka.png 56 60 90 86 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka2_mask sprites_jhonka.png 98 60 139 86 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka3_mask sprites_jhonka.png 154 63 195 86 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka4_mask sprites_jhonka.png 14 154 48 185 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka5_mask sprites_jhonka.png 49 161 90 185 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka8_mask sprites_jhonka.png 14 154 48 185 >> sprites_jhonka.inc
$(HGR_SPRITE) -l jhonka9_mask sprites_jhonka.png 49 161 90 185 >> sprites_jhonka.inc
sprites_riches.inc: sprites_riches.png
$(HGR_SPRITE) -s -l nostack_sprite sprites_riches.png 154 55 181 72 > sprites_riches.inc
$(HGR_SPRITE) -s -l riches_sprite sprites_riches.png 91 100 139 126 >> sprites_riches.inc
clean:
rm -f *~ sprites_jhonka.inc
sprites_beat.inc: sprites_beaten.png
$(HGR_SPRITE) -s -l smash1_sprite sprites_beaten.png 98 88 111 119 > sprites_beat.inc
$(HGR_SPRITE) -s -l smash2_sprite sprites_beaten.png 126 91 139 119 >> sprites_beat.inc
$(HGR_SPRITE) -s -l smash3_sprite sprites_beaten.png 154 93 167 119 >> sprites_beat.inc
$(HGR_SPRITE) -s -l smash4_sprite sprites_beaten.png 182 98 195 119 >> sprites_beat.inc
$(HGR_SPRITE) -s -l smash5_sprite sprites_beaten.png 203 106 223 119 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka4_sprite sprites_beaten.png 14 33 48 57 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka5_sprite sprites_beaten.png 56 31 90 57 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka6_sprite sprites_beaten.png 98 31 139 57 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka7_sprite sprites_beaten.png 154 34 195 57 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka4_mask sprites_beaten.png 14 62 48 86 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka5_mask sprites_beaten.png 56 60 90 86 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka6_mask sprites_beaten.png 98 60 139 86 >> sprites_beat.inc
$(HGR_SPRITE) -l jhonka7_mask sprites_beaten.png 154 63 195 86 >> sprites_beat.inc
clean:
rm -f *~ sprites_jhonka.inc sprites_riches.inc sprites_beat.inc

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -342,6 +342,7 @@ SUPPRESS_DRAWING=$C5 ; don't draw peasant
CUSTOM_PEASANT= $08
SUPPRESS_KEEPER= $10
SUPPRESS_ARROW = $20
SUPPRESS_JHONKA = $40
SAVED_Y1 = $C7 ; climb (for now)
SAVED_Y2 = $C8 ; climb
@@ -362,6 +363,7 @@ SLEEP_COUNT = $C9 ; trogdor
MUD_COUNT = $C9 ; puddle
HAY_JUMP_COUNT = $C9 ; hay
BEAT_COUNT = $CA ; jhonka
BUCKET_STATE = $CA ; well
IN_QUIZ = $CA ; outer1/2/3,jhonka
GARY_COUNT = $CA ; gary