lemm: initial lemming

This commit is contained in:
Vince Weaver 2022-03-10 01:10:42 -05:00
parent 08eaef60d6
commit 860324783e
7 changed files with 119 additions and 3 deletions

View File

@ -29,7 +29,7 @@ LEMM_TEST: lemm_test.o
lemm_test.o: lemm_test.s zp.inc hardware.inc \
graphics/graphics_test.inc \
interrupt_handler.s keyboard.s
interrupt_handler.s
ca65 -o lemm_test.o lemm_test.s -l lemm_test.lst
####
@ -40,8 +40,8 @@ LEMM: lemm.o
lemm.o: lemm.s zp.inc hardware.inc \
graphics/graphics_test.inc \
intro_level1.s update_time.s hgr_sprite.s draw_flames.s \
draw_door.s \
interrupt_handler.s
draw_door.s move_lemming.s draw_lemming.s \
interrupt_handler.s keyboard.s
ca65 -o lemm.o lemm.s -l lemm.lst

22
games/lemm/draw_lemming.s Normal file
View File

@ -0,0 +1,22 @@
draw_lemming:
lda lemming_out
beq done_draw_lemming
lda #<lemming_fall1_sprite
sta INL
lda #>lemming_fall1_sprite
sta INH
ldx lemming_x
stx XPOS
lda lemming_y
sta YPOS
jsr hgr_draw_sprite
done_draw_lemming:
rts

View File

@ -49,6 +49,7 @@ sprites.inc: sprites.png
$(HGR_SPRITE) -s -l door2_sprite sprites.png 7 76 55 91 >> sprites.inc
$(HGR_SPRITE) -s -l door3_sprite sprites.png 7 98 55 114 >> sprites.inc
$(HGR_SPRITE) -s -l door4_sprite sprites.png 7 118 55 137 >> sprites.inc
$(HGR_SPRITE) -s -l lemming_fall1_sprite sprites.png 56 32 62 41 >> sprites.inc

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -321,6 +321,28 @@ no_load_chunk:
door_is_open:
;======================
; release lemmings
;======================
lda LEMMINGS_TO_RELEASE
beq done_release_lemmings
lda DOOR_OPEN
beq done_release_lemmings
lda FRAMEL
and #$f
bne done_release_lemmings
lda #1
sta lemming_out
dec LEMMINGS_TO_RELEASE
done_release_lemmings:
jsr draw_flames
lda TIMER_COUNT
@ -333,6 +355,10 @@ door_is_open:
sta TIMER_COUNT
timer_not_yet:
jsr move_lemmings
jsr draw_lemming
jsr handle_keypress
; jsr draw_pointer
@ -411,6 +437,8 @@ load_song_chunk_good:
; .include "print_help.s"
.include "gr_fast_clear.s"
.include "move_lemming.s"
.include "draw_lemming.s"
.include "hgr_14x14_sprite.s"
.include "text_print.s"

64
games/lemm/move_lemming.s Normal file
View File

@ -0,0 +1,64 @@
move_lemmings:
lda lemming_out
beq done_move_lemming
lda lemming_status
cmp #LEMMING_FALLING
beq do_lemming_falling
cmp #LEMMING_WALKING
beq do_lemming_walking
cmp #LEMMING_DIGGING
beq do_lemming_digging
jmp done_move_lemming
do_lemming_falling:
inc lemming_y
lda lemming_y
clc
adc #9
tay
lda hposn_high,Y
sta GBASH
lda hposn_low,Y
sta GBASL
ldy lemming_x
lda (GBASL),Y
and #$7f
beq done_move_lemming
lda #LEMMING_WALKING
sta lemming_status
jmp done_move_lemming
do_lemming_walking:
do_lemming_digging:
done_move_lemming:
rts
lemming_x:
.byte 12
lemming_y:
.byte 45
lemming_out:
.byte $0
LEMMING_FALLING = 1
LEMMING_WALKING = 2
LEMMING_DIGGING = 3
lemming_status:
.byte LEMMING_FALLING
lemming_job:
.byte $00

View File

@ -62,6 +62,7 @@ LOAD_NEXT_CHUNK = $7F
OVER_LEMMING = $80
TIMER_COUNT = $81
UPDATE_POINTER = $82
LEMMINGS_TO_RELEASE = $83
APPLEII_MODEL = $8B