lemm: add hr expansion

This commit is contained in:
Vince Weaver 2022-04-17 19:28:29 -04:00
parent f782b5d41c
commit d6876d4cde
23 changed files with 2082 additions and 6 deletions

View File

@ -9,7 +9,7 @@ TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft
EMPTY_DISK = ../../empty_disk/empty.dsk
LINKER_SCRIPTS = ../../linker_scripts
all: lemm.dsk
all: lemm.dsk hr_lemm.dsk
#lemm.dsk: HELLO LEMM LEMM_TEST
# cp $(EMPTY_DISK) lemm.dsk
@ -38,6 +38,28 @@ lemm.dsk: QBOOT QLOAD LEMM \
$(DOS33_RAW) lemm.dsk 33 0 LEVEL10 0 0
hr_lemm.dsk: QBOOT QLOAD HR_LEMM \
HR_LEVEL1 HR_LEVEL2 HR_LEVEL3 HR_LEVEL4 HR_LEVEL5 \
LEVEL6 LEVEL7 LEVEL8 LEVEL9 LEVEL10
cp $(EMPTY_DISK) hr_lemm.dsk
$(DOS33_RAW) hr_lemm.dsk 0 0 QBOOT 0 1
$(DOS33_RAW) hr_lemm.dsk 0 2 QBOOT 1 1
$(DOS33_RAW) hr_lemm.dsk 0 4 QBOOT 2 1
$(DOS33_RAW) hr_lemm.dsk 1 0 QLOAD 0 0
$(DOS33_RAW) hr_lemm.dsk 3 0 HR_LEMM 0 0
$(DOS33_RAW) hr_lemm.dsk 6 0 HR_LEVEL1 0 0
$(DOS33_RAW) hr_lemm.dsk 9 0 HR_LEVEL2 0 0
$(DOS33_RAW) hr_lemm.dsk 12 0 HR_LEVEL3 0 0
$(DOS33_RAW) hr_lemm.dsk 15 0 HR_LEVEL4 0 0
$(DOS33_RAW) hr_lemm.dsk 18 0 HR_LEVEL5 0 0
$(DOS33_RAW) hr_lemm.dsk 21 0 LEVEL6 0 0
$(DOS33_RAW) hr_lemm.dsk 24 0 LEVEL7 0 0
$(DOS33_RAW) hr_lemm.dsk 27 0 LEVEL8 0 0
$(DOS33_RAW) hr_lemm.dsk 30 0 LEVEL9 0 0
$(DOS33_RAW) hr_lemm.dsk 33 0 LEVEL10 0 0
###
@ -135,7 +157,23 @@ lemm.o: lemm.s zp.inc hardware.inc qload.inc hgr.inc \
interrupt_handler.s keyboard.s \
pointer_sprites.inc particle_hgr.s release_lemming.s \
title.s audio.s letsgo.s load_music.s
ca65 -o lemm.o lemm.s -l lemm.lst
ca65 -DHR_VERSION=0 -o lemm.o lemm.s -l lemm.lst
####
HR_LEMM: hr_lemm.o
ld65 -o HR_LEMM hr_lemm.o -C ../../linker_scripts/apple2_6000.inc
hr_lemm.o: lemm.s zp.inc hardware.inc qload.inc hgr.inc \
graphics/sprites.inc \
intro_level.s update_time.s draw_flames.s \
draw_door.s move_lemming.s draw_lemming.s \
update_menu.s init_level.s \
interrupt_handler.s keyboard.s \
pointer_sprites.inc particle_hgr.s release_lemming.s \
title.s audio.s letsgo.s load_music.s
ca65 -DHR_VERSION=1 -o hr_lemm.o lemm.s -l hr_lemm.lst
###
@ -312,11 +350,67 @@ generate_common.o: generate_common.c
graphics/graphics_test.inc:
cd graphics && make
####
HR_LEVEL1: hr_level1.o
ld65 -o HR_LEVEL1 hr_level1.o -C ../../linker_scripts/apple2_9000.inc
hr_level1.o: hr_level1.s zp.inc hardware.inc qload.inc lemm.inc \
release_lemming.s \
hr_graphics/graphics_hr_level1.inc
ca65 -o hr_level1.o hr_level1.s -l hr_level1.lst
####
HR_LEVEL2: hr_level2.o
ld65 -o HR_LEVEL2 hr_level2.o -C ../../linker_scripts/apple2_9000.inc
hr_level2.o: hr_level2.s zp.inc hardware.inc qload.inc lemm.inc \
release_lemming.s \
hr_graphics/graphics_hr_level2.inc
ca65 -o hr_level2.o hr_level2.s -l hr_level2.lst
####
HR_LEVEL3: hr_level3.o
ld65 -o HR_LEVEL3 hr_level3.o -C ../../linker_scripts/apple2_9000.inc
hr_level3.o: hr_level3.s zp.inc hardware.inc qload.inc lemm.inc \
release_lemming.s \
hr_graphics/graphics_hr_level3.inc
ca65 -o hr_level3.o hr_level3.s -l hr_level3.lst
####
HR_LEVEL4: hr_level4.o
ld65 -o HR_LEVEL4 hr_level4.o -C ../../linker_scripts/apple2_9000.inc
hr_level4.o: hr_level4.s zp.inc hardware.inc qload.inc lemm.inc \
release_lemming.s \
hr_graphics/graphics_hr_level4.inc
ca65 -o hr_level4.o hr_level4.s -l hr_level4.lst
####
HR_LEVEL5: hr_level5.o
ld65 -o HR_LEVEL5 hr_level5.o -C ../../linker_scripts/apple2_9000.inc
hr_level5.o: hr_level5.s zp.inc hardware.inc qload.inc lemm.inc \
release_lemming.s \
hr_graphics/graphics_hr_level5.inc
ca65 -o hr_level5.o hr_level5.s -l hr_level5.lst
####
clean:
rm -f *~ *.o *.lst HELLO LEMM LEMM_TEST generate_common \
LEVEL1 LEVEL2 LEVEL3 LEVEL4 LEVEL5 \
LEVEL6 LEVEL7 LEVEL8 LEVEL9 LEVEL10 \
HR_LEMM \
HR_LEVEL1 HR_LEVEL2 HR_LEVEL3 HR_LEVEL4 HR_LEVEL5 \
lemm.inc qload.inc

View File

@ -0,0 +1,139 @@
PNG2RLE = ../../../utils/gr-utils/png2rle
PNG2GR = ../../../utils/gr-utils/png2gr
PNG2HGR = ../../../utils/hgr-utils/png2hgr
LZSA = ~/research/lzsa/lzsa/lzsa
B2D = ../../../utils/bmp2dhr/b2d
HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite
all: graphics_hr_level1.inc \
graphics_hr_level2.inc \
graphics_hr_level3.inc \
graphics_hr_level4.inc \
graphics_hr_level5.inc
####
graphics_hr_level1.inc: \
hr_level1.lzsa \
hr_level1_preview.lzsa
echo "hr_level1_lzsa: .incbin \"hr_level1.lzsa\"" > graphics_hr_level1.inc
echo "hr_level1_preview_lzsa: .incbin \"hr_level1_preview.lzsa\"" >> graphics_hr_level1.inc
graphics_hr_level2.inc: \
hr_level2.lzsa \
hr_level2_preview.lzsa
echo "hr_level2_lzsa: .incbin \"hr_level2.lzsa\"" > graphics_hr_level2.inc
echo "hr_level2_preview_lzsa: .incbin \"hr_level2_preview.lzsa\"" >> graphics_hr_level2.inc
graphics_hr_level3.inc: \
hr_level3.lzsa \
hr_level3_preview.lzsa
echo "hr_level3_lzsa: .incbin \"hr_level3.lzsa\"" > graphics_hr_level3.inc
echo "hr_level3_preview_lzsa: .incbin \"hr_level3_preview.lzsa\"" >> graphics_hr_level3.inc
graphics_hr_level4.inc: \
hr_level4.lzsa \
hr_level4_preview.lzsa
echo "hr_level4_lzsa: .incbin \"hr_level4.lzsa\"" > graphics_hr_level4.inc
echo "hr_level4_preview_lzsa: .incbin \"hr_level4_preview.lzsa\"" >> graphics_hr_level4.inc
graphics_hr_level5.inc: \
hr_level5.lzsa \
hr_level5_preview.lzsa
echo "hr_level5_lzsa: .incbin \"hr_level5.lzsa\"" > graphics_hr_level5.inc
echo "hr_level5_preview_lzsa: .incbin \"hr_level5_preview.lzsa\"" >> graphics_hr_level5.inc
###
hr_level1.lzsa: hr_level1.hgr
$(LZSA) -r -f2 hr_level1.hgr hr_level1.lzsa
hr_level1.hgr: l1_sb.png
$(PNG2HGR) l1_sb.png > hr_level1.hgr
###
hr_level1_preview.lzsa: hr_level1_preview.hgr
$(LZSA) -r -f2 hr_level1_preview.hgr hr_level1_preview.lzsa
hr_level1_preview.hgr: l1_preview.png
$(PNG2HGR) l1_preview.png > hr_level1_preview.hgr
###
hr_level2.lzsa: hr_level2.hgr
$(LZSA) -r -f2 hr_level2.hgr hr_level2.lzsa
hr_level2.hgr: l2_taran.png
$(PNG2HGR) l2_taran.png > hr_level2.hgr
###
hr_level2_preview.lzsa: hr_level2_preview.hgr
$(LZSA) -r -f2 hr_level2_preview.hgr hr_level2_preview.lzsa
hr_level2_preview.hgr: l2_preview.png
$(PNG2HGR) l2_preview.png > hr_level2_preview.hgr
###
hr_level3.lzsa: hr_level3.hgr
$(LZSA) -r -f2 hr_level3.hgr hr_level3.lzsa
hr_level3.hgr: l3_hstarmy.png
$(PNG2HGR) l3_hstarmy.png > hr_level3.hgr
###
hr_level3_preview.lzsa: hr_level3_preview.hgr
$(LZSA) -r -f2 hr_level3_preview.hgr hr_level3_preview.lzsa
hr_level3_preview.hgr: l3_preview.png
$(PNG2HGR) l3_preview.png > hr_level3_preview.hgr
###
hr_level4.lzsa: hr_level4.hgr
$(LZSA) -r -f2 hr_level4.hgr hr_level4.lzsa
hr_level4.hgr: l4_bubs.png
$(PNG2HGR) l4_bubs.png > hr_level4.hgr
###
hr_level4_preview.lzsa: hr_level4_preview.hgr
$(LZSA) -r -f2 hr_level4_preview.hgr hr_level4_preview.lzsa
hr_level4_preview.hgr: l4_preview.png
$(PNG2HGR) l4_preview.png > hr_level4_preview.hgr
###
hr_level5.lzsa: hr_level5.hgr
$(LZSA) -r -f2 hr_level5.hgr hr_level5.lzsa
hr_level5.hgr: l5_trog.png
$(PNG2HGR) l5_trog.png > hr_level5.hgr
###
hr_level5_preview.lzsa: hr_level5_preview.hgr
$(LZSA) -r -f2 hr_level5_preview.hgr hr_level5_preview.lzsa
hr_level5_preview.hgr: l5_preview.png
$(PNG2HGR) l5_preview.png > hr_level5_preview.hgr
###
clean:
rm -f *~ *.lzsa *.gr *.hgr

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

298
games/lemm/hr_level1.s Normal file
View File

@ -0,0 +1,298 @@
; Homestar Runner Expansion Level 1
.include "zp.inc"
.include "hardware.inc"
.include "qload.inc"
.include "lemm.inc"
.include "lemming_status.inc"
.byte 1 ; level 1
do_level1:
;==============
; set up stuff
;==============
lda #20
sta CLIMBER_COUNT
sta FLOATER_COUNT
sta EXPLODER_COUNT
sta STOPPER_COUNT
sta BUILDER_COUNT
sta BASHER_COUNT
sta MINER_COUNT
sta DIGGER_COUNT
lda #3
sta DOOR_X
lda #2
sta DOOR_Y
lda #6
sta INIT_X
lda #12
sta INIT_Y
; flame locations
lda #18
sta l_flame_x_smc+1
lda #108
sta l_flame_y_smc+1
sta r_flame_y_smc+1
lda #21
sta r_flame_x_smc+1
; door exit location
lda #17 ;
sta exit_x1_smc+1
lda #21
sta exit_x2_smc+1
lda #97
sta exit_y1_smc+1
lda #130
sta exit_y2_smc+1
lda #$10 ; BCD
sta PERCENT_NEEDED
sta PERCENT_ADD
;==============
; set up intro
;==============
lda #<hr_level1_preview_lzsa
sta level_preview_l_smc+1
lda #>hr_level1_preview_lzsa
sta level_preview_h_smc+1
lda #<level1_intro_text
sta intro_text_smc_l+1
lda #>level1_intro_text
sta intro_text_smc_h+1
;==============
; set up music
;==============
lda #0
sta CURRENT_CHUNK
sta DONE_PLAYING
sta BASE_FRAME_L
sta BUTTON_LOCATION
; set up first song
lda #<music5_parts_l
sta chunk_l_smc+1
lda #>music5_parts_l
sta chunk_l_smc+2
lda #<music5_parts_h
sta chunk_h_smc+1
lda #>music5_parts_h
sta chunk_h_smc+2
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
;=======================
jsr intro_level
;=======================
; Load Graphics
;=======================
lda #$20
sta HGR_PAGE
jsr hgr_make_tables
bit SET_GR
bit PAGE0
bit HIRES
bit FULLGR
lda #<hr_level1_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level1_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$20
jsr decompress_lzsa2_fast
lda #<hr_level1_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level1_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$40
jsr decompress_lzsa2_fast
;=======================
; Setup cursor
;=======================
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X
lda #100
sta CURSOR_Y
;=======================
; init vars
;=======================
lda #10
sta LEMMINGS_TO_RELEASE
; set up time
lda #$5
sta TIME_MINUTES
lda #$00
sta TIME_SECONDS
sta TIMER_COUNT ; ??
jsr init_level
jsr update_remaining_all
;=======================
; Play "Let's Go"
;=======================
jsr play_letsgo
;===================
;===================
; Main Loop
;===================
;===================
l1_main_loop:
;=========================
; load next chunk of music
; if necessary
;=========================
jsr load_music
;=========================
; open door
;=========================
lda DOOR_OPEN
bne l1_door_is_open
jsr draw_door
l1_door_is_open:
;======================
; release lemmings
;======================
jsr release_lemming
;=====================
; animate flames
;=====================
jsr draw_flames
jsr update_timer
; main drawing loop
jsr erase_lemming
jsr erase_pointer
jsr move_lemmings
jsr draw_lemming
jsr handle_keypress
jsr draw_pointer
lda #$f0
jsr wait
inc FRAMEL
lda LEVEL_OVER
bne l1_level_over
jmp l1_main_loop
l1_level_over:
rts
.include "update_timer.s"
.include "hr_graphics/graphics_hr_level1.inc"
music5_parts_h:
.byte >lemm5_part1_lzsa,>lemm5_part2_lzsa,>lemm5_part3_lzsa
.byte >lemm5_part4_lzsa,>lemm5_part5_lzsa,$00
music5_parts_l:
.byte <lemm5_part1_lzsa,<lemm5_part2_lzsa,<lemm5_part3_lzsa
.byte <lemm5_part4_lzsa,<lemm5_part5_lzsa
lemm5_part1_lzsa:
.incbin "music/lemm5.part1.lzsa"
lemm5_part2_lzsa:
.incbin "music/lemm5.part2.lzsa"
lemm5_part3_lzsa:
.incbin "music/lemm5.part3.lzsa"
lemm5_part4_lzsa:
.incbin "music/lemm5.part4.lzsa"
lemm5_part5_lzsa:
.incbin "music/lemm5.part5.lzsa"
level1_intro_text:
.byte 0, 8,"LEVEL 1",0
.byte 11, 8,"YOUR HEAD A SPLODE",0
.byte 9,12,"NUMBER OF LEMMINGS 10",0
.byte 12,14,"10% TO BE SAVED",0
.byte 12,16,"RELEASE RATE 50",0
.byte 13,18,"TIME 5 MINUTES",0
.byte 15,20,"RATING FUN",0
.byte 8,23,"PRESS RETURN TO CONTINUE",0

419
games/lemm/hr_level2.s Normal file
View File

@ -0,0 +1,419 @@
; Homestar Runner Expansion L2
.include "zp.inc"
.include "hardware.inc"
.include "qload.inc"
.include "lemm.inc"
.include "lemming_status.inc"
.byte 2 ; level 2
do_level2:
;======================
; set up initial stuff
;======================
lda #0
sta CLIMBER_COUNT
sta FLOATER_COUNT
sta BUILDER_COUNT
sta BASHER_COUNT
sta MINER_COUNT
sta DIGGER_COUNT
lda #10
sta EXPLODER_COUNT
sta STOPPER_COUNT
lda #2
sta DOOR_X
lda #9
sta DOOR_Y
lda #5
sta INIT_X
lda #19
sta INIT_Y
; flame locations
lda #35 ;
sta l_flame_x_smc+1
lda #82
sta l_flame_y_smc+1
sta r_flame_y_smc+1
lda #37 ;
sta r_flame_x_smc+1
; door exit location
lda #33 ;
sta exit_x1_smc+1
lda #36
sta exit_x2_smc+1
lda #72
sta exit_y1_smc+1
lda #110
sta exit_y2_smc+1
;==============
; set up intro
;==============
lda #<hr_level2_preview_lzsa
sta level_preview_l_smc+1
lda #>hr_level2_preview_lzsa
sta level_preview_h_smc+1
lda #<level2_intro_text
sta intro_text_smc_l+1
lda #>level2_intro_text
sta intro_text_smc_h+1
lda #$20 ; BCD
sta PERCENT_NEEDED
lda #$10
sta PERCENT_ADD
;==============
; set up music
;==============
lda #0
sta CURRENT_CHUNK
sta DONE_PLAYING
sta BASE_FRAME_L
sta BUTTON_LOCATION
; set up first song
lda #<music2_parts_l
sta chunk_l_smc+1
lda #>music2_parts_l
sta chunk_l_smc+2
lda #<music2_parts_h
sta chunk_h_smc+1
lda #>music2_parts_h
sta chunk_h_smc+2
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
;=======================
jsr intro_level
;=======================
; Load Graphics
;=======================
lda #$20
sta HGR_PAGE
jsr hgr_make_tables
bit SET_GR
bit PAGE0
bit HIRES
bit FULLGR
lda #<hr_level2_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level2_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$20
jsr decompress_lzsa2_fast
lda #<hr_level2_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level2_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$40
jsr decompress_lzsa2_fast
;=======================
; Setup cursor
;=======================
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X
lda #100
sta CURSOR_Y
;=======================
; init vars
;=======================
lda #10
sta LEMMINGS_TO_RELEASE
; set up time
lda #$5
sta TIME_MINUTES
lda #$00
sta TIME_SECONDS
sta TIMER_COUNT ; 1/50
jsr init_level
jsr update_remaining_all
;=======================
; Play "Let's Go"
;=======================
jsr play_letsgo
;===================
;===================
; Main Loop
;===================
;===================
l2_main_loop:
;=========================
; load next chunk of music
; if necessary
;=========================
jsr load_music
l2_no_load_chunk:
lda DOOR_OPEN
bne l2_door_is_open
jsr draw_door
l2_door_is_open:
;======================
; release lemmings
;======================
jsr release_lemming
;=====================
; animate flames
;=====================
jsr draw_flames
;=====================
; draw level animation
;=====================
jsr flame_thrower
;====================
; update timer
;====================
jsr update_timer
;====================
; 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 l2_level_over
jmp l2_main_loop
l2_level_over:
rts
.include "update_timer.s"
.include "hr_graphics/graphics_hr_level2.inc"
music2_parts_h:
.byte >lemm2_part1_lzsa,>lemm2_part2_lzsa,>lemm2_part3_lzsa
.byte >lemm2_part4_lzsa,>lemm2_part5_lzsa,>lemm2_part6_lzsa
.byte >lemm2_part7_lzsa,>lemm2_part8_lzsa,>lemm2_part9_lzsa
.byte >lemm2_part10_lzsa,>lemm2_part11_lzsa,>lemm2_part12_lzsa
.byte >lemm2_part13_lzsa,>lemm2_part14_lzsa,>lemm2_part15_lzsa
.byte >lemm2_part16_lzsa; ,>lemm2_part17_lzsa,>lemm2_part18_lzsa
.byte $00
music2_parts_l:
.byte <lemm2_part1_lzsa,<lemm2_part2_lzsa,<lemm2_part3_lzsa
.byte <lemm2_part4_lzsa,<lemm2_part5_lzsa,<lemm2_part6_lzsa
.byte <lemm2_part7_lzsa,<lemm2_part8_lzsa,<lemm2_part9_lzsa
.byte <lemm2_part10_lzsa,<lemm2_part11_lzsa,<lemm2_part12_lzsa
.byte <lemm2_part13_lzsa,<lemm2_part14_lzsa,<lemm2_part15_lzsa
.byte <lemm2_part16_lzsa; ,<lemm2_part17_lzsa,<lemm2_part18_lzsa
lemm2_part1_lzsa:
.incbin "hr_music/lemm2.part1.lzsa"
lemm2_part2_lzsa:
.incbin "hr_music/lemm2.part2.lzsa"
lemm2_part3_lzsa:
.incbin "hr_music/lemm2.part3.lzsa"
lemm2_part4_lzsa:
.incbin "hr_music/lemm2.part4.lzsa"
lemm2_part5_lzsa:
.incbin "hr_music/lemm2.part5.lzsa"
lemm2_part6_lzsa:
.incbin "hr_music/lemm2.part6.lzsa"
lemm2_part7_lzsa:
.incbin "hr_music/lemm2.part7.lzsa"
lemm2_part8_lzsa:
.incbin "hr_music/lemm2.part8.lzsa"
lemm2_part9_lzsa:
.incbin "hr_music/lemm2.part9.lzsa"
lemm2_part10_lzsa:
.incbin "hr_music/lemm2.part10.lzsa"
lemm2_part11_lzsa:
.incbin "hr_music/lemm2.part11.lzsa"
lemm2_part12_lzsa:
.incbin "hr_music/lemm2.part12.lzsa"
lemm2_part13_lzsa:
.incbin "hr_music/lemm2.part13.lzsa"
lemm2_part14_lzsa:
.incbin "hr_music/lemm2.part14.lzsa"
lemm2_part15_lzsa:
.incbin "hr_music/lemm2.part15.lzsa"
lemm2_part16_lzsa:
.incbin "hr_music/lemm2.part16.lzsa"
;lemm2_part17_lzsa:
;.incbin "hr_music/lemm2.part17.lzsa"
;lemm2_part18_lzsa:
;.incbin "hr_music/lemm2.part18.lzsa"
level2_intro_text:
.byte 0, 8,"LEVEL 2",0
.byte 11, 8,"MIRED ON THE MOOR",0
.byte 9,12,"NUMBER OF LEMMINGS 50",0
.byte 12,14,"20% TO BE SAVED",0
.byte 12,16,"RELEASE RATE 50",0
.byte 13,18,"TIME 5 MINUTES",0
.byte 15,20,"RATING FUN",0
.byte 8,23,"PRESS RETURN TO CONTINUE",0
.include "graphics/l6_animation.inc"
;======================
; flame thrower
;======================
flame_thrower:
; erase old
; X a->x, savey1->savey2
lda #65
sta SAVED_Y1
lda #81
sta SAVED_Y2
lda #24
ldx #33
jsr hgr_partial_restore
; draw new
lda FRAMEL
and #$7
tay
lda flame_sprites_l,Y
sta INL
lda flame_sprites_h,Y
sta INH
lda flame_sprites_x,Y
sta XPOS
lda flame_sprites_y,Y
sta YPOS
jsr hgr_draw_sprite
rts
flame_sprites_l:
.byte <flame0_sprite,<flame1_sprite
.byte <flame2_sprite,<flame3_sprite
.byte <flame4_sprite,<flame5_sprite
.byte <flame6_sprite,<flame7_sprite
flame_sprites_h:
.byte >flame0_sprite,>flame1_sprite
.byte >flame2_sprite,>flame3_sprite
.byte >flame4_sprite,>flame5_sprite
.byte >flame6_sprite,>flame7_sprite
flame_sprites_x:
.byte 28,26
.byte 25,25
.byte 24,24
.byte 22,24
; .byte 38,36
; .byte 35,35
; .byte 34,34
; .byte 32,34
flame_sprites_y:
.byte 72,71
.byte 68,69
.byte 70,67
.byte 65,65

304
games/lemm/hr_level3.s Normal file
View File

@ -0,0 +1,304 @@
; Homestar Runner Expansion L3
.include "zp.inc"
.include "hardware.inc"
.include "qload.inc"
.include "lemm.inc"
.include "lemming_status.inc"
.byte 3 ; level 3
do_level3:
;======================
; set up initial stuff
;======================
lda #10
sta CLIMBER_COUNT
sta FLOATER_COUNT
sta EXPLODER_COUNT
sta BUILDER_COUNT
sta BASHER_COUNT
sta MINER_COUNT
sta DIGGER_COUNT
sta STOPPER_COUNT
lda #7
sta DOOR_X
lda #1
sta DOOR_Y
lda #9
sta INIT_X
lda #12
sta INIT_Y
; flame location
lda #34 ;
sta l_flame_x_smc+1
lda #102
sta l_flame_y_smc+1
sta r_flame_y_smc+1
lda #38 ;
sta r_flame_x_smc+1
; door exit location
lda #33 ;
sta exit_x1_smc+1
lda #38
sta exit_x2_smc+1
lda #96
sta exit_y1_smc+1
lda #140
sta exit_y2_smc+1
lda #$10 ; BCD
sta PERCENT_NEEDED
lda #$10
sta PERCENT_ADD
;==============
; set up intro
;==============
lda #<hr_level3_preview_lzsa
sta level_preview_l_smc+1
lda #>hr_level3_preview_lzsa
sta level_preview_h_smc+1
lda #<level3_intro_text
sta intro_text_smc_l+1
lda #>level3_intro_text
sta intro_text_smc_h+1
;==============
; set up music
;==============
lda #0
sta CURRENT_CHUNK
sta DONE_PLAYING
sta BASE_FRAME_L
sta BUTTON_LOCATION
; set up first song
lda #<music11_parts_l
sta chunk_l_smc+1
lda #>music11_parts_l
sta chunk_l_smc+2
lda #<music11_parts_h
sta chunk_h_smc+1
lda #>music11_parts_h
sta chunk_h_smc+2
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
;=======================
jsr intro_level
;=======================
; Load Graphics
;=======================
lda #$20
sta HGR_PAGE
jsr hgr_make_tables
bit SET_GR
bit PAGE0
bit HIRES
bit FULLGR
lda #<hr_level3_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level3_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$20
jsr decompress_lzsa2_fast
lda #<hr_level3_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level3_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$40
jsr decompress_lzsa2_fast
;=======================
; Setup cursor
;=======================
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X
lda #100
sta CURSOR_Y
;=======================
; init vars
;=======================
lda #10
sta LEMMINGS_TO_RELEASE
; set up time
lda #$5
sta TIME_MINUTES
lda #$00
sta TIME_SECONDS
sta TIMER_COUNT ; 1/50
jsr init_level
jsr update_remaining_all
;=======================
; Play "Let's Go"
;=======================
jsr play_letsgo
;===================
;===================
; Main Loop
;===================
;===================
l3_main_loop:
;=========================
; load next chunk of music
; if necessary
;=========================
jsr load_music
;=========================
; open door
;=========================
lda DOOR_OPEN
bne l3_door_is_open
jsr draw_door
l3_door_is_open:
;======================
; release lemmings
;======================
jsr release_lemming
;======================
; animate flames
;======================
jsr draw_flames
jsr update_timer
; 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 l3_level_over
jmp l3_main_loop
l3_level_over:
rts
.include "update_timer.s"
.include "hr_graphics/graphics_hr_level3.inc"
music11_parts_h:
.byte >lemm11_part1_lzsa,>lemm11_part2_lzsa,>lemm11_part3_lzsa
.byte >lemm11_part4_lzsa,>lemm11_part5_lzsa,>lemm11_part6_lzsa
.byte >lemm11_part7_lzsa
.byte $00
music11_parts_l:
.byte <lemm11_part1_lzsa,<lemm11_part2_lzsa,<lemm11_part3_lzsa
.byte <lemm11_part4_lzsa,<lemm11_part5_lzsa,<lemm11_part6_lzsa
.byte <lemm11_part7_lzsa
lemm11_part1_lzsa:
.incbin "music/lemm11.part1.lzsa"
lemm11_part2_lzsa:
.incbin "music/lemm11.part2.lzsa"
lemm11_part3_lzsa:
.incbin "music/lemm11.part3.lzsa"
lemm11_part4_lzsa:
.incbin "music/lemm11.part4.lzsa"
lemm11_part5_lzsa:
.incbin "music/lemm11.part5.lzsa"
lemm11_part6_lzsa:
.incbin "music/lemm11.part6.lzsa"
lemm11_part7_lzsa:
.incbin "music/lemm11.part7.lzsa"
level3_intro_text:
.byte 0, 8,"LEVEL 3",0
.byte 8, 8,"YOU NEVER GAVE ME THE FIVE BUCKS",0
.byte 9,12,"NUMBER OF LEMMINGS 50",0
.byte 12,14,"10% TO BE SAVED",0
.byte 12,16,"RELEASE RATE 50",0
.byte 13,18,"TIME 5 MINUTES",0
.byte 15,20,"RATING FUN",0
.byte 8,23,"PRESS RETURN TO CONTINUE",0

307
games/lemm/hr_level4.s Normal file
View File

@ -0,0 +1,307 @@
; Homestar Runner Expansion L4
.include "zp.inc"
.include "hardware.inc"
.include "qload.inc"
.include "lemm.inc"
.include "lemming_status.inc"
.byte 4 ; level 4
do_level4:
;======================
; set up initial stuff
;======================
lda #20
sta CLIMBER_COUNT
sta FLOATER_COUNT
sta EXPLODER_COUNT
sta STOPPER_COUNT
sta BUILDER_COUNT
sta BASHER_COUNT
sta MINER_COUNT
sta DIGGER_COUNT
lda #31
sta DOOR_X
lda #4
sta DOOR_Y
lda #34
sta INIT_X
lda #14
sta INIT_Y
; flame locations
lda #4 ;
sta l_flame_x_smc+1
lda #86
sta l_flame_y_smc+1
sta r_flame_y_smc+1
lda #8 ;
sta r_flame_x_smc+1
; door exit location
lda #4 ;
sta exit_x1_smc+1
lda #9
sta exit_x2_smc+1
lda #80
sta exit_y1_smc+1
lda #115
sta exit_y2_smc+1
;==============
; set up intro
;==============
lda #<hr_level4_preview_lzsa
sta level_preview_l_smc+1
lda #>hr_level4_preview_lzsa
sta level_preview_h_smc+1
lda #<level4_intro_text
sta intro_text_smc_l+1
lda #>level4_intro_text
sta intro_text_smc_h+1
lda #$50 ; BCD
sta PERCENT_NEEDED
lda #$10
sta PERCENT_ADD
;==============
; set up music
;==============
lda #0
sta CURRENT_CHUNK
sta DONE_PLAYING
sta BASE_FRAME_L
sta BUTTON_LOCATION
; set up first song
lda #<music17_parts_l
sta chunk_l_smc+1
lda #>music17_parts_l
sta chunk_l_smc+2
lda #<music17_parts_h
sta chunk_h_smc+1
lda #>music17_parts_h
sta chunk_h_smc+2
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
;=======================
jsr intro_level
;=======================
; Load Graphics
;=======================
lda #$20
sta HGR_PAGE
jsr hgr_make_tables
bit SET_GR
bit PAGE0
bit HIRES
bit FULLGR
lda #<hr_level4_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level4_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$20
jsr decompress_lzsa2_fast
lda #<hr_level4_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level4_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$40
jsr decompress_lzsa2_fast
;=======================
; Setup cursor
;=======================
lda #$FF
sta OVER_LEMMING
lda #10
sta CURSOR_X
lda #100
sta CURSOR_Y
;=======================
; init vars
;=======================
lda #10
sta LEMMINGS_TO_RELEASE
; set up time
lda #$5
sta TIME_MINUTES
lda #$00
sta TIME_SECONDS
sta TIMER_COUNT ; 1/50
jsr init_level
jsr update_remaining_all
;=======================
; Play "Let's Go"
;=======================
jsr play_letsgo
;===================
;===================
; Main Loop
;===================
;===================
l4_main_loop:
;=========================
; load next chunk of music
; if necessary
;=========================
jsr load_music
l4_no_load_chunk:
lda DOOR_OPEN
bne l4_door_is_open
jsr draw_door
l4_door_is_open:
;======================
; release lemmings
;======================
jsr release_lemming
;=====================
; animate flames
;=====================
jsr draw_flames
jsr update_timer
; 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 l4_level_over
jmp l4_main_loop
l4_level_over:
rts
.include "update_timer.s"
.include "hr_graphics/graphics_hr_level4.inc"
music17_parts_h:
.byte >lemm17_part1_lzsa,>lemm17_part2_lzsa,>lemm17_part3_lzsa
.byte >lemm17_part4_lzsa,>lemm17_part5_lzsa,>lemm17_part6_lzsa
.byte >lemm17_part7_lzsa,>lemm17_part8_lzsa
.byte $00
music17_parts_l:
.byte <lemm17_part1_lzsa,<lemm17_part2_lzsa,<lemm17_part3_lzsa
.byte <lemm17_part4_lzsa,<lemm17_part5_lzsa,<lemm17_part6_lzsa
.byte <lemm17_part7_lzsa,<lemm17_part8_lzsa
lemm17_part1_lzsa:
.incbin "music/lemm17.part1.lzsa"
lemm17_part2_lzsa:
.incbin "music/lemm17.part2.lzsa"
lemm17_part3_lzsa:
.incbin "music/lemm17.part3.lzsa"
lemm17_part4_lzsa:
.incbin "music/lemm17.part4.lzsa"
lemm17_part5_lzsa:
.incbin "music/lemm17.part5.lzsa"
lemm17_part6_lzsa:
.incbin "music/lemm17.part6.lzsa"
lemm17_part7_lzsa:
.incbin "music/lemm17.part7.lzsa"
lemm17_part8_lzsa:
.incbin "music/lemm17.part8.lzsa"
level4_intro_text:
.byte 0, 8,"LEVEL 4",0
.byte 12, 8,"DUCK A L'ORANGE",0
.byte 9,12,"NUMBER OF LEMMINGS 80",0
.byte 12,14,"50% TO BE SAVED",0
.byte 12,16,"RELEASE RATE 99",0
.byte 13,18,"TIME 5 MINUTES",0
.byte 15,20,"RATING FUN",0
.byte 8,23,"PRESS RETURN TO CONTINUE",0

384
games/lemm/hr_level5.s Normal file
View File

@ -0,0 +1,384 @@
; Homestar Runner Expansion L5
.include "zp.inc"
.include "hardware.inc"
.include "qload.inc"
.include "lemm.inc"
.include "lemming_status.inc"
.byte 5 ; level 5
do_level5:
;======================
; set up initial stuff
;======================
lda #10
sta CLIMBER_COUNT
sta FLOATER_COUNT
sta BUILDER_COUNT
sta BASHER_COUNT
sta MINER_COUNT
sta DIGGER_COUNT
sta EXPLODER_COUNT
sta STOPPER_COUNT
lda #30
sta DOOR_X
lda #2
sta DOOR_Y
lda #33
sta INIT_X
lda #13
sta INIT_Y
; flame locations
lda #3 ;
sta l_flame_x_smc+1
lda #59
sta l_flame_y_smc+1
lda #15 ;
sta r_flame_x_smc+1
lda #102 ;
sta r_flame_y_smc+1
; door exit location
lda #7 ;
sta exit_x1_smc+1
lda #10
sta exit_x2_smc+1
lda #110
sta exit_y1_smc+1
lda #140
sta exit_y2_smc+1
;==============
; set up intro
;==============
lda #<hr_level5_preview_lzsa
sta level_preview_l_smc+1
lda #>hr_level5_preview_lzsa
sta level_preview_h_smc+1
lda #<level5_intro_text
sta intro_text_smc_l+1
lda #>level5_intro_text
sta intro_text_smc_h+1
lda #$20 ; BCD
sta PERCENT_NEEDED
lda #$10
sta PERCENT_ADD
;==============
; set up music
;==============
lda #0
sta CURRENT_CHUNK
sta DONE_PLAYING
sta BASE_FRAME_L
sta BUTTON_LOCATION
; set up first song
lda #<music5_parts_l
sta chunk_l_smc+1
lda #>music5_parts_l
sta chunk_l_smc+2
lda #<music5_parts_h
sta chunk_h_smc+1
lda #>music5_parts_h
sta chunk_h_smc+2
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
;=======================
jsr intro_level
;=======================
; Load Graphics
;=======================
lda #$20
sta HGR_PAGE
jsr hgr_make_tables
bit SET_GR
bit PAGE0
bit HIRES
bit FULLGR
lda #<hr_level5_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level5_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$20
jsr decompress_lzsa2_fast
lda #<hr_level5_lzsa
sta getsrc_smc+1 ; LZSA_SRC_LO
lda #>hr_level5_lzsa
sta getsrc_smc+2 ; LZSA_SRC_HI
lda #$40
jsr decompress_lzsa2_fast
;=======================
; Setup cursor
;=======================
lda #$FF
sta OVER_LEMMING
lda #20
sta CURSOR_X
lda #50
sta CURSOR_Y
;=======================
; init vars
;=======================
lda #10
sta LEMMINGS_TO_RELEASE
; set up time
lda #$5
sta TIME_MINUTES
lda #$00
sta TIME_SECONDS
sta TIMER_COUNT ; 1/50
jsr init_level
jsr update_remaining_all
;=======================
; Play "Let's Go"
;=======================
jsr play_letsgo
;===================
;===================
; Main Loop
;===================
;===================
l5_main_loop:
;=========================
; load next chunk of music
; if necessary
;=========================
jsr load_music
l5_no_load_chunk:
lda DOOR_OPEN
bne l5_door_is_open
jsr draw_door
l5_door_is_open:
;======================
; release lemmings
;======================
jsr release_lemming
;=====================
; animate flames
;=====================
jsr draw_flames
;=====================
; draw level animation
;=====================
jsr flame_thrower
;====================
; update timer
;====================
jsr update_timer
;====================
; 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:
rts
.include "update_timer.s"
.include "hr_graphics/graphics_hr_level5.inc"
music5_parts_h:
.byte >lemm5_part1_lzsa,>lemm5_part2_lzsa,>lemm5_part3_lzsa
.byte $00
music5_parts_l:
.byte <lemm5_part1_lzsa,<lemm5_part2_lzsa,<lemm5_part3_lzsa
lemm5_part1_lzsa:
.incbin "hr_music/lemm5.part1.lzsa"
lemm5_part2_lzsa:
.incbin "hr_music/lemm5.part2.lzsa"
lemm5_part3_lzsa:
.incbin "hr_music/lemm5.part3.lzsa"
level5_intro_text:
.byte 0, 8,"LEVEL 5",0
.byte 8, 8,"BURNINATING THE COUNTRYSIDE",0
.byte 9,12,"NUMBER OF LEMMINGS 50",0
.byte 12,14,"20% TO BE SAVED",0
.byte 12,16,"RELEASE RATE 50",0
.byte 13,18,"TIME 5 MINUTES",0
.byte 15,20,"RATING FUN",0
.byte 8,23,"PRESS RETURN TO CONTINUE",0
.include "graphics/l6_animation.inc"
;======================
; flame thrower
;======================
flame_thrower:
; erase old
; X a->x, savey1->savey2
lda #51
sta SAVED_Y1
lda #66
sta SAVED_Y2
lda #7
ldx #15
jsr hgr_partial_restore
; draw new
lda FRAMEL
and #$7
tay
lda flame_sprites_l,Y
sta INL
lda flame_sprites_h,Y
sta INH
lda flame_sprites_x,Y
sta XPOS
lda flame_sprites_y,Y
sta YPOS
jsr hgr_draw_sprite
rts
flame_sprites_l:
.byte <flame0_sprite,<flame1_sprite
.byte <flame2_sprite,<flame3_sprite
.byte <flame4_sprite,<flame5_sprite
.byte <flame6_sprite,<flame7_sprite
flame_sprites_h:
.byte >flame0_sprite,>flame1_sprite
.byte >flame2_sprite,>flame3_sprite
.byte >flame4_sprite,>flame5_sprite
.byte >flame6_sprite,>flame7_sprite
flame_sprites_x:
; .byte 16,14
; .byte 13,13
; .byte 12,12
; .byte 10,12
.byte 12,10
.byte 9,9
.byte 8,8
.byte 6,8
; 15x56
flame_sprites_y:
; .byte 27,26
; .byte 24,25
; .byte 26,23
; .byte 21,21
.byte 57,56
.byte 54,55
.byte 56,53
.byte 51,51

View File

@ -0,0 +1,107 @@
LZSA = ~/research/lzsa/lzsa/lzsa
YM5_TO_RAW = ~/research/vmw-meter.git/ay-3-8910/conversion_tools/ym5_to_raw
YM_TO_YM5 = ~/research/vmw-meter.git/ay-3-8910/conversion_tools/ym_to_ym5
RAW_INTERLEAVE = ~/research/vmw-meter.git/ay-3-8910/conversion_tools/raw_interleave
all: lemm5.part1.lzsa lemm5.part2.lzsa lemm5.part3.lzsa \
lemm2.part1.lzsa lemm2.part2.lzsa lemm2.part3.lzsa \
lemm2.part4.lzsa lemm2.part5.lzsa lemm2.part6.lzsa \
lemm2.part7.lzsa lemm2.part8.lzsa lemm2.part9.lzsa \
lemm2.part10.lzsa lemm2.part11.lzsa lemm2.part12.lzsa \
lemm2.part13.lzsa lemm2.part14.lzsa lemm2.part15.lzsa \
lemm2.part16.lzsa lemm2.part17.lzsa lemm2.part18.lzsa
lemm5.raw: lemm5.ym
$(YM5_TO_RAW) ./lemm5.ym > lemm5.raw
lemm2.raw: intro2.ym
$(YM5_TO_RAW) ./intro2.ym > lemm2.raw
####
lemm5.part1: lemm5.raw
$(RAW_INTERLEAVE) -m 11 -c 512 ./lemm5
lemm5.part1.lzsa: lemm5.part1
$(LZSA) -r -f2 lemm5.part1 lemm5.part1.lzsa
lemm5.part2.lzsa: lemm5.part2
$(LZSA) -r -f2 lemm5.part2 lemm5.part2.lzsa
lemm5.part3.lzsa: lemm5.part3
$(LZSA) -r -f2 lemm5.part3 lemm5.part3.lzsa
lemm5.part4.lzsa: lemm5.part4
$(LZSA) -r -f2 lemm5.part4 lemm5.part4.lzsa
lemm5.part5.lzsa: lemm5.part5
$(LZSA) -r -f2 lemm5.part5 lemm5.part5.lzsa
####
lemm2.part1: lemm2.raw
$(RAW_INTERLEAVE) -m 11 -c 512 ./lemm2
lemm2.part1.lzsa: lemm2.part1
$(LZSA) -r -f2 lemm2.part1 lemm2.part1.lzsa
lemm2.part2.lzsa: lemm2.part2
$(LZSA) -r -f2 lemm2.part2 lemm2.part2.lzsa
lemm2.part3.lzsa: lemm2.part3
$(LZSA) -r -f2 lemm2.part3 lemm2.part3.lzsa
lemm2.part4.lzsa: lemm2.part4
$(LZSA) -r -f2 lemm2.part4 lemm2.part4.lzsa
lemm2.part5.lzsa: lemm2.part5
$(LZSA) -r -f2 lemm2.part5 lemm2.part5.lzsa
lemm2.part6.lzsa: lemm2.part6
$(LZSA) -r -f2 lemm2.part6 lemm2.part6.lzsa
lemm2.part7.lzsa: lemm2.part7
$(LZSA) -r -f2 lemm2.part7 lemm2.part7.lzsa
lemm2.part8.lzsa: lemm2.part8
$(LZSA) -r -f2 lemm2.part8 lemm2.part8.lzsa
lemm2.part9.lzsa: lemm2.part9
$(LZSA) -r -f2 lemm2.part9 lemm2.part9.lzsa
lemm2.part10.lzsa: lemm2.part10
$(LZSA) -r -f2 lemm2.part10 lemm2.part10.lzsa
lemm2.part11.lzsa: lemm2.part11
$(LZSA) -r -f2 lemm2.part11 lemm2.part11.lzsa
lemm2.part12.lzsa: lemm2.part12
$(LZSA) -r -f2 lemm2.part12 lemm2.part12.lzsa
lemm2.part13.lzsa: lemm2.part13
$(LZSA) -r -f2 lemm2.part13 lemm2.part13.lzsa
lemm2.part14.lzsa: lemm2.part14
$(LZSA) -r -f2 lemm2.part14 lemm2.part14.lzsa
lemm2.part15.lzsa: lemm2.part15
$(LZSA) -r -f2 lemm2.part15 lemm2.part15.lzsa
lemm2.part16.lzsa: lemm2.part16
$(LZSA) -r -f2 lemm2.part16 lemm2.part16.lzsa
lemm2.part17.lzsa: lemm2.part17
$(LZSA) -r -f2 lemm2.part17 lemm2.part17.lzsa
lemm2.part18.lzsa: lemm2.part18
$(LZSA) -r -f2 lemm2.part18 lemm2.part18.lzsa
####
clean:
rm -f *.lzsa *.part1 *.part2 *.part3 *.part4 *.part5 *.part6 *.part7 *.part8 *.part9 *.part10

Binary file not shown.

Binary file not shown.

View File

@ -28,7 +28,7 @@ do_level2:
lda #3
sta DOOR_X
lda #5
lda #4
sta DOOR_Y
lda #7

View File

@ -140,7 +140,7 @@ y_good:
HPLOT0:
; line from (x,a) to (x+y,a)
ldy #2
ldy #4
jsr hgr_hlin
rts

View File

@ -32,6 +32,30 @@ title_loop:
rts
;HR_VERSION = 0
; HUGE HACK! THE TITLE TEXTS NEED TO BE IDENTICAL LENGTH
; OR BAD THINGS HAPPEN (offsets wrong)
.if HR_VERSION = 1
title_text:
.byte 0, 0,"LOADING LEMM V1.01 (17 APR 2022)",0
.byte 0, 1," HOMESTAR RUNNER LEVEL PACK ",0
.byte 0, 3,"BASED ON LEMMINGS BY DMA DESIGN",0
.byte 0, 5," APPLE II PORT: VINCE WEAVER",0
.byte 0, 6," DISK : QKUMBA ",0
.byte 0, 7," LZSA : E. MARTY AUDIO: O. SCHMIDT",0
.byte 0, 8," ",0
.byte 0,10,"DIRECTIONS:",0
.byte 0,11," WASD/ARROWS : MOVE POINTER",0
.byte 0,12," ENTER/SPACE : ACTION",0
.byte 0,13," 1...8 : FAST JOB SELECT",0
.byte 0,14," J,! : ENABLE JOYSTICK,CHEAT",0
.byte 0,16," ______",0
.byte 0,17," A \/\/\/ SOFTWARE PRODUCTION",0
.byte 0,19," HTTP://WWW.DEATER.NET/WEAVE/VMWPROD",0
.byte 4,21,"PRESS 1-9 TO CHOOSE START LEVEL",0
.else
title_text:
.byte 0, 0,"LOADING LEMM V1.01 (13 APR 2022)",0
@ -50,4 +74,4 @@ title_text:
.byte 0,17," A \/\/\/ SOFTWARE PRODUCTION",0
.byte 0,19," HTTP://WWW.DEATER.NET/WEAVE/VMWPROD",0
.byte 4,21,"PRESS 1-9 TO CHOOSE START LEVEL",0
.endif