lemm: add level5
This commit is contained in:
parent
6d946b7f23
commit
62ce6377fb
|
@ -44,7 +44,7 @@ lemm.o: lemm.s zp.inc hardware.inc \
|
|||
hgr_hlin.s hgr_vlin.s update_menu.s \
|
||||
interrupt_handler.s keyboard.s draw_pointer.s \
|
||||
pointer_sprites.inc \
|
||||
level1.s
|
||||
level1.s level5.s
|
||||
ca65 -o lemm.o lemm.s -l lemm.lst
|
||||
|
||||
|
||||
|
|
|
@ -5,17 +5,17 @@ LZSA = ~/research/lzsa/lzsa/lzsa
|
|||
B2D = ../../../utils/bmp2dhr/b2d
|
||||
HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite
|
||||
|
||||
all: graphics_test.inc graphics_level1.inc sprites.inc
|
||||
all: graphics_test.inc graphics_level1.inc graphics_level5.inc sprites.inc
|
||||
|
||||
###
|
||||
|
||||
graphics_test.inc: \
|
||||
level1.lzsa \
|
||||
level2.lzsa \
|
||||
level2_fine.lzsa
|
||||
level5.lzsa \
|
||||
level5_fine.lzsa
|
||||
echo "level1_lzsa: .incbin \"level1.lzsa\"" > graphics_test.inc
|
||||
echo "level2_lzsa: .incbin \"level2.lzsa\"" >> graphics_test.inc
|
||||
echo "level2_fine_lzsa: .incbin \"level2_fine.lzsa\"" >> graphics_test.inc
|
||||
echo "level5_lzsa: .incbin \"level5.lzsa\"" >> graphics_test.inc
|
||||
echo "level5_fine_lzsa: .incbin \"level5_fine.lzsa\"" >> graphics_test.inc
|
||||
|
||||
|
||||
graphics_level1.inc: \
|
||||
|
@ -24,6 +24,12 @@ graphics_level1.inc: \
|
|||
echo "level1_lzsa: .incbin \"level1.lzsa\"" > graphics_level1.inc
|
||||
echo "level1_preview_lzsa: .incbin \"level1_preview.lzsa\"" >> graphics_level1.inc
|
||||
|
||||
graphics_level5.inc: \
|
||||
level5.lzsa \
|
||||
level5_preview.lzsa
|
||||
echo "level5_lzsa: .incbin \"level5.lzsa\"" > graphics_level5.inc
|
||||
echo "level5_preview_lzsa: .incbin \"level5_preview.lzsa\"" >> graphics_level5.inc
|
||||
|
||||
###
|
||||
|
||||
sprites.inc: sprites.png
|
||||
|
@ -135,19 +141,28 @@ level1_preview.hgr: level1_preview.png
|
|||
|
||||
###
|
||||
|
||||
level2.lzsa: level2.hgr
|
||||
$(LZSA) -r -f2 level2.hgr level2.lzsa
|
||||
level5.lzsa: level5.hgr
|
||||
$(LZSA) -r -f2 level5.hgr level5.lzsa
|
||||
|
||||
level2.hgr: level2.png
|
||||
$(PNG2HGR) level2.png > level2.hgr
|
||||
level5.hgr: level5.png
|
||||
$(PNG2HGR) level5.png > level5.hgr
|
||||
|
||||
###
|
||||
|
||||
level2_fine.lzsa: level2_fine.hgr
|
||||
$(LZSA) -r -f2 level2_fine.hgr level2_fine.lzsa
|
||||
|
||||
level2_fine.hgr: level2_fine.png
|
||||
$(PNG2HGR) level2_fine.png > level2_fine.hgr
|
||||
level5_preview.lzsa: level5_preview.hgr
|
||||
$(LZSA) -r -f2 level5_preview.hgr level5_preview.lzsa
|
||||
|
||||
level5_preview.hgr: level5_preview.png
|
||||
$(PNG2HGR) level5_preview.png > level5_preview.hgr
|
||||
|
||||
###
|
||||
|
||||
level5_fine.lzsa: level5_fine.hgr
|
||||
$(LZSA) -r -f2 level5_fine.hgr level5_fine.lzsa
|
||||
|
||||
level5_fine.hgr: level5_fine.png
|
||||
$(PNG2HGR) level5_fine.png > level5_fine.hgr
|
||||
|
||||
####
|
||||
|
||||
|
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
|
@ -3,11 +3,24 @@
|
|||
; print the intro message for level1
|
||||
;=====================================
|
||||
|
||||
intro_level1:
|
||||
intro_level:
|
||||
|
||||
lda WHICH_LEVEL
|
||||
cmp #1
|
||||
bne its_level_5_preview
|
||||
|
||||
its_level_1_preview:
|
||||
lda #<level1_preview_lzsa
|
||||
sta getsrc_smc+1 ; LZSA_SRC_LO
|
||||
lda #>level1_preview_lzsa
|
||||
jmp done_load_preview
|
||||
|
||||
its_level_5_preview:
|
||||
lda #<level5_preview_lzsa
|
||||
sta getsrc_smc+1 ; LZSA_SRC_LO
|
||||
lda #>level5_preview_lzsa
|
||||
done_load_preview:
|
||||
|
||||
sta getsrc_smc+2 ; LZSA_SRC_HI
|
||||
|
||||
lda #$20
|
||||
|
@ -25,9 +38,22 @@ intro_level1:
|
|||
|
||||
; print messages
|
||||
|
||||
lda WHICH_LEVEL
|
||||
cmp #1
|
||||
bne its_level_5_text
|
||||
|
||||
its_level_1_text:
|
||||
lda #<level1_intro_text
|
||||
sta OUTL
|
||||
lda #>level1_intro_text
|
||||
jmp its_level_1_text_done
|
||||
|
||||
its_level_5_text:
|
||||
lda #<level5_intro_text
|
||||
sta OUTL
|
||||
lda #>level5_intro_text
|
||||
|
||||
its_level_1_text_done:
|
||||
sta OUTH
|
||||
|
||||
; print the text
|
||||
|
@ -150,7 +176,6 @@ level5_intro_text:
|
|||
.byte 8,23,"PRESS RETURN TO CONINUE",0
|
||||
|
||||
|
||||
|
||||
.align $100
|
||||
|
||||
; split screen?
|
||||
|
|
|
@ -202,7 +202,23 @@ zurg:
|
|||
play_level1:
|
||||
jsr do_level1
|
||||
|
||||
jmp play_level1
|
||||
lda LEVEL_OVER
|
||||
cmp #LEVEL_WIN
|
||||
beq play_level5
|
||||
bne play_level1
|
||||
|
||||
|
||||
;=======================
|
||||
; do level5
|
||||
;=======================
|
||||
|
||||
play_level5:
|
||||
jsr do_level5
|
||||
|
||||
lda LEVEL_OVER
|
||||
cmp #LEVEL_WIN
|
||||
beq play_level1
|
||||
bne play_level5
|
||||
|
||||
|
||||
|
||||
|
@ -241,9 +257,6 @@ load_song_chunk_good:
|
|||
; includes
|
||||
;==========================
|
||||
|
||||
; .include "gr_pageflip.s"
|
||||
; .include "gr_copy.s"
|
||||
; .include "wait_a_bit.s"
|
||||
.include "gr_offsets.s"
|
||||
.include "decompress_fast_v2.s"
|
||||
|
||||
|
@ -253,6 +266,7 @@ load_song_chunk_good:
|
|||
.include "joystick.s"
|
||||
|
||||
.include "level1.s"
|
||||
.include "level5.s"
|
||||
|
||||
.include "gr_fast_clear.s"
|
||||
|
||||
|
@ -297,6 +311,7 @@ config_string:
|
|||
|
||||
|
||||
.include "graphics/graphics_level1.inc"
|
||||
.include "graphics/graphics_level5.inc"
|
||||
.include "graphics/sprites.inc"
|
||||
|
||||
music_parts_h:
|
||||
|
|
|
@ -241,9 +241,9 @@ load_graphics_loop:
|
|||
|
||||
jsr wait_until_keypress
|
||||
|
||||
lda #<level2_lzsa
|
||||
lda #<level5_lzsa
|
||||
sta getsrc_smc+1 ; LZSA_SRC_LO
|
||||
lda #>level2_lzsa
|
||||
lda #>level5_lzsa
|
||||
sta getsrc_smc+2 ; LZSA_SRC_HI
|
||||
|
||||
lda #$20
|
||||
|
@ -252,9 +252,9 @@ load_graphics_loop:
|
|||
|
||||
jsr wait_until_keypress
|
||||
|
||||
lda #<level2_fine_lzsa
|
||||
lda #<level5_fine_lzsa
|
||||
sta getsrc_smc+1 ; LZSA_SRC_LO
|
||||
lda #>level2_fine_lzsa
|
||||
lda #>level5_fine_lzsa
|
||||
sta getsrc_smc+2 ; LZSA_SRC_HI
|
||||
|
||||
lda #$20
|
||||
|
|
|
@ -27,7 +27,9 @@ do_level1:
|
|||
; show title screen
|
||||
;=======================
|
||||
|
||||
jsr intro_level1
|
||||
lda #1
|
||||
sta WHICH_LEVEL
|
||||
jsr intro_level
|
||||
|
||||
;=======================
|
||||
; Load Graphics
|
||||
|
@ -131,10 +133,10 @@ do_level1:
|
|||
; Main Loop
|
||||
;===================
|
||||
;===================
|
||||
main_loop:
|
||||
l1_main_loop:
|
||||
|
||||
lda LOAD_NEXT_CHUNK ; see if we need to load next chunk
|
||||
beq no_load_chunk ; outside IRQ to avoid glitch in music
|
||||
beq l1_no_load_chunk ; outside IRQ to avoid glitch in music
|
||||
|
||||
jsr load_song_chunk
|
||||
|
||||
|
@ -142,29 +144,29 @@ main_loop:
|
|||
sta LOAD_NEXT_CHUNK
|
||||
|
||||
|
||||
no_load_chunk:
|
||||
l1_no_load_chunk:
|
||||
|
||||
|
||||
lda DOOR_OPEN
|
||||
bne door_is_open
|
||||
bne l1_door_is_open
|
||||
|
||||
jsr draw_door
|
||||
|
||||
door_is_open:
|
||||
l1_door_is_open:
|
||||
|
||||
;======================
|
||||
; release lemmings
|
||||
;======================
|
||||
|
||||
lda LEMMINGS_TO_RELEASE
|
||||
beq done_release_lemmings
|
||||
beq l1_done_release_lemmings
|
||||
|
||||
lda DOOR_OPEN
|
||||
beq done_release_lemmings
|
||||
beq l1_done_release_lemmings
|
||||
|
||||
lda FRAMEL
|
||||
and #$f
|
||||
bne done_release_lemmings
|
||||
bne l1_done_release_lemmings
|
||||
|
||||
inc LEMMINGS_OUT
|
||||
jsr update_lemmings_out
|
||||
|
@ -174,20 +176,20 @@ door_is_open:
|
|||
|
||||
dec LEMMINGS_TO_RELEASE
|
||||
|
||||
done_release_lemmings:
|
||||
l1_done_release_lemmings:
|
||||
|
||||
|
||||
jsr draw_flames
|
||||
|
||||
lda TIMER_COUNT
|
||||
cmp #$50
|
||||
bcc timer_not_yet
|
||||
bcc l1_timer_not_yet
|
||||
|
||||
jsr update_time
|
||||
|
||||
lda #$0
|
||||
sta TIMER_COUNT
|
||||
timer_not_yet:
|
||||
l1_timer_not_yet:
|
||||
|
||||
|
||||
; main drawing loop
|
||||
|
@ -210,12 +212,12 @@ timer_not_yet:
|
|||
inc FRAMEL
|
||||
|
||||
lda LEVEL_OVER
|
||||
bne level_over
|
||||
bne l1_level_over
|
||||
|
||||
jmp main_loop
|
||||
jmp l1_main_loop
|
||||
|
||||
|
||||
level_over:
|
||||
l1_level_over:
|
||||
|
||||
bit SET_TEXT
|
||||
|
||||
|
|
|
@ -0,0 +1,230 @@
|
|||
|
||||
do_level5:
|
||||
|
||||
;==============
|
||||
; set up music
|
||||
;==============
|
||||
|
||||
lda #0
|
||||
sta CURRENT_CHUNK
|
||||
sta DONE_PLAYING
|
||||
sta BASE_FRAME_L
|
||||
sta BUTTON_LOCATION
|
||||
|
||||
lda #$D0
|
||||
sta CHUNK_NEXT_LOAD ; Load at $D0
|
||||
jsr load_song_chunk
|
||||
|
||||
lda #$D0 ; music starts at $d000
|
||||
sta CHUNK_NEXT_PLAY
|
||||
sta BASE_FRAME_H
|
||||
|
||||
lda #1
|
||||
sta LOOP
|
||||
sta CURRENT_CHUNK
|
||||
|
||||
;=======================
|
||||
; show title screen
|
||||
;=======================
|
||||
|
||||
lda #5
|
||||
sta WHICH_LEVEL
|
||||
jsr intro_level
|
||||
|
||||
;=======================
|
||||
; Load Graphics
|
||||
;=======================
|
||||
|
||||
lda #$20
|
||||
sta HGR_PAGE
|
||||
jsr hgr_make_tables
|
||||
|
||||
bit SET_GR
|
||||
bit PAGE0
|
||||
bit HIRES
|
||||
bit FULLGR
|
||||
|
||||
lda #<level5_lzsa
|
||||
sta getsrc_smc+1 ; LZSA_SRC_LO
|
||||
lda #>level5_lzsa
|
||||
sta getsrc_smc+2 ; LZSA_SRC_HI
|
||||
|
||||
lda #$20
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
lda #<level5_lzsa
|
||||
sta getsrc_smc+1 ; LZSA_SRC_LO
|
||||
lda #>level5_lzsa
|
||||
sta getsrc_smc+2 ; LZSA_SRC_HI
|
||||
|
||||
lda #$40
|
||||
|
||||
jsr decompress_lzsa2_fast
|
||||
|
||||
|
||||
;=======================
|
||||
; Setup cursor
|
||||
;=======================
|
||||
|
||||
lda #0
|
||||
sta OVER_LEMMING
|
||||
lda #10
|
||||
sta CURSOR_X
|
||||
lda #100
|
||||
sta CURSOR_Y
|
||||
|
||||
;=======================
|
||||
; Init Lemmings
|
||||
;=======================
|
||||
|
||||
lda #0
|
||||
sta lemming_out
|
||||
lda #12
|
||||
sta lemming_x
|
||||
lda #45
|
||||
sta lemming_y
|
||||
lda #1
|
||||
sta lemming_direction
|
||||
lda #LEMMING_FALLING
|
||||
sta lemming_status
|
||||
|
||||
;=======================
|
||||
; Play "Let's Go"
|
||||
;=======================
|
||||
|
||||
|
||||
;=======================
|
||||
; start music
|
||||
;=======================
|
||||
|
||||
; cli
|
||||
|
||||
;=======================
|
||||
; init vars
|
||||
;=======================
|
||||
|
||||
lda #0
|
||||
sta LEVEL_OVER
|
||||
sta DOOR_OPEN
|
||||
sta FRAMEL
|
||||
sta LOAD_NEXT_CHUNK
|
||||
sta JOYSTICK_ENABLED
|
||||
sta LEMMINGS_OUT
|
||||
|
||||
jsr update_lemmings_out
|
||||
|
||||
lda #1
|
||||
sta LEMMINGS_TO_RELEASE
|
||||
|
||||
; jsr save_bg_14x14 ; save initial bg
|
||||
|
||||
; set up time
|
||||
|
||||
lda #$5
|
||||
sta TIME_MINUTES
|
||||
lda #$00
|
||||
sta TIME_SECONDS
|
||||
|
||||
sta TIMER_COUNT
|
||||
|
||||
;===================
|
||||
;===================
|
||||
; Main Loop
|
||||
;===================
|
||||
;===================
|
||||
l5_main_loop:
|
||||
|
||||
lda LOAD_NEXT_CHUNK ; see if we need to load next chunk
|
||||
beq l5_no_load_chunk ; outside IRQ to avoid glitch in music
|
||||
|
||||
jsr load_song_chunk
|
||||
|
||||
lda #0 ; reset
|
||||
sta LOAD_NEXT_CHUNK
|
||||
|
||||
|
||||
l5_no_load_chunk:
|
||||
|
||||
|
||||
lda DOOR_OPEN
|
||||
bne l5_door_is_open
|
||||
|
||||
jsr draw_door
|
||||
|
||||
l5_door_is_open:
|
||||
|
||||
;======================
|
||||
; release lemmings
|
||||
;======================
|
||||
|
||||
lda LEMMINGS_TO_RELEASE
|
||||
beq l5_done_release_lemmings
|
||||
|
||||
lda DOOR_OPEN
|
||||
beq l5_done_release_lemmings
|
||||
|
||||
lda FRAMEL
|
||||
and #$f
|
||||
bne l5_done_release_lemmings
|
||||
|
||||
inc LEMMINGS_OUT
|
||||
jsr update_lemmings_out
|
||||
|
||||
lda #1
|
||||
sta lemming_out
|
||||
|
||||
dec LEMMINGS_TO_RELEASE
|
||||
|
||||
l5_done_release_lemmings:
|
||||
|
||||
|
||||
jsr draw_flames
|
||||
|
||||
lda TIMER_COUNT
|
||||
cmp #$50
|
||||
bcc l5_timer_not_yet
|
||||
|
||||
jsr update_time
|
||||
|
||||
lda #$0
|
||||
sta TIMER_COUNT
|
||||
l5_timer_not_yet:
|
||||
|
||||
|
||||
; main drawing loop
|
||||
|
||||
jsr erase_lemming
|
||||
|
||||
jsr erase_pointer
|
||||
|
||||
jsr move_lemmings
|
||||
|
||||
jsr draw_lemming
|
||||
|
||||
jsr handle_keypress
|
||||
|
||||
jsr draw_pointer
|
||||
|
||||
lda #$ff
|
||||
jsr wait
|
||||
|
||||
inc FRAMEL
|
||||
|
||||
lda LEVEL_OVER
|
||||
bne l5_level_over
|
||||
|
||||
jmp l5_main_loop
|
||||
|
||||
|
||||
l5_level_over:
|
||||
|
||||
bit SET_TEXT
|
||||
|
||||
jsr disable_music
|
||||
|
||||
jsr outro_level1
|
||||
|
||||
rts
|
||||
|
||||
|
|
@ -70,6 +70,7 @@ SAVED_Y1 = $84
|
|||
SAVED_Y2 = $85
|
||||
LEMMINGS_OUT = $86
|
||||
BUTTON_LOCATION = $87
|
||||
WHICH_LEVEL = $88
|
||||
|
||||
APPLEII_MODEL = $8B
|
||||
|
||||
|
|
Loading…
Reference in New Issue