lemm: erase background

This commit is contained in:
Vince Weaver 2022-03-10 23:02:08 -05:00
parent 914cca35c5
commit a7b6c84b93
5 changed files with 111 additions and 21 deletions

View File

@ -1,8 +1,29 @@
erase_lemming:
ldy #0
lda lemming_out,Y
beq done_erase_lemming
lda lemming_y,Y
sta SAVED_Y1
clc
adc #8
sta SAVED_Y2
lda lemming_x,Y
tax
inx
jsr hgr_partial_restore
done_erase_lemming:
rts
draw_lemming:
ldy #0
lda lemming_out
lda lemming_out,Y
beq done_draw_lemming
lda #<lemming_fall1_sprite
@ -10,9 +31,9 @@ draw_lemming:
lda #>lemming_fall1_sprite
sta INH
ldx lemming_x
ldx lemming_x,Y
stx XPOS
lda lemming_y
lda lemming_y,Y
sta YPOS
jsr hgr_draw_sprite

View File

@ -0,0 +1,45 @@
;=======================
; HGR Partial Restore
;=======================
; loads from $40 (page2)
; save to $20 (page1)
; restores from X = A<=to<=X
; Y = SAVED_Y1 to SAVED_Y2
hgr_partial_restore:
sta partial_restore_x1_smc+1
stx partial_restore_x2_smc+1
ldx SAVED_Y2
partial_restore_yloop:
lda hposn_low,X
sta prx_smc2+1
sta prx_smc1+1
lda hposn_high,X
sta prx_smc2+2
clc
adc #$20
sta prx_smc1+2
partial_restore_x2_smc:
ldy #$27
partial_restore_xloop:
prx_smc1:
lda $d000,Y
prx_smc2:
sta $d000,Y
dey
partial_restore_x1_smc:
cpy #$00
bpl partial_restore_xloop
dex
cpx SAVED_Y1
bcs partial_restore_yloop ; bge
rts

View File

@ -357,6 +357,8 @@ done_release_lemmings:
sta TIMER_COUNT
timer_not_yet:
jsr erase_lemming
jsr move_lemmings
jsr draw_lemming
@ -439,6 +441,8 @@ load_song_chunk_good:
; .include "print_help.s"
.include "gr_fast_clear.s"
.include "hgr_partial_save.s"
.include "move_lemming.s"
.include "draw_lemming.s"

View File

@ -16,34 +16,26 @@ move_lemmings:
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
jsr collision_check_ground
jmp done_move_lemming
do_lemming_walking:
clc
lda lemming_x
adc lemming_direction
sta lemming_x
jsr collision_check_ground
do_lemming_digging:
done_move_lemming:
rts
lemming_direction:
.byte 1
lemming_x:
.byte 12
lemming_y:
@ -62,3 +54,29 @@ lemming_status:
lemming_job:
.byte $00
collision_check_ground:
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 ground_falling
ground_walking:
lda #LEMMING_WALKING
jmp done_check_ground
ground_falling:
lda #LEMMING_FALLING
done_check_ground:
sta lemming_status
rts

View File

@ -63,6 +63,8 @@ OVER_LEMMING = $80
TIMER_COUNT = $81
UPDATE_POINTER = $82
LEMMINGS_TO_RELEASE = $83
SAVED_Y1 = $84
SAVED_Y2 = $85
APPLEII_MODEL = $8B