From 5d0e4bd7fd5d07e867e75cca3757019937344ee2 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 17 Mar 2022 13:56:03 -0400 Subject: [PATCH] lemm: separate level1 file working --- games/lemm/Makefile | 52 ++++++++++++++++++++++-- games/lemm/NOTES | 31 ++++++++++++++ games/lemm/lemm.s | 11 ++++- games/lemm/lemming_status.inc | 5 +++ games/lemm/level1.s | 18 ++++++--- games/lemm/move_lemming.s | 6 --- games/lemm/qboot_stage2.s | 23 ++++++++++- games/lemm/qload.s | 74 ++++++++-------------------------- linker_scripts/apple2_a000.inc | 12 ++++++ 9 files changed, 156 insertions(+), 76 deletions(-) create mode 100644 games/lemm/lemming_status.inc create mode 100644 linker_scripts/apple2_a000.inc diff --git a/games/lemm/Makefile b/games/lemm/Makefile index 5cbb0648..fa156251 100644 --- a/games/lemm/Makefile +++ b/games/lemm/Makefile @@ -18,13 +18,14 @@ all: lemm.dsk # $(DOS33) -y lemm.dsk BSAVE -a 0x4000 LEMM_TEST -lemm.dsk: QBOOT QLOAD LEMM LEMM +lemm.dsk: QBOOT QLOAD LEMM LEVEL1 cp $(EMPTY_DISK) lemm.dsk $(DOS33_RAW) lemm.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) lemm.dsk 0 2 QBOOT 1 1 $(DOS33_RAW) lemm.dsk 0 4 QBOOT 2 1 $(DOS33_RAW) lemm.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) lemm.dsk 3 0 LEMM 0 0 + $(DOS33_RAW) lemm.dsk 10 0 LEVEL1 0 0 ### @@ -47,7 +48,8 @@ qload.o: qload.s qboot.inc \ ### qload.inc: generate_common QLOAD - ./generate_common -a 0x1200 -s play_audio qload.lst > qload.inc + ./generate_common -a 0x1200 -s load_file qload.lst > qload.inc + ./generate_common -a 0x1200 -s play_audio qload.lst >> qload.inc ./generate_common -a 0x1200 -s decompress_lzsa2_fast qload.lst >> qload.inc ./generate_common -a 0x1200 -s getsrc_smc qload.lst >> qload.inc @@ -73,16 +75,58 @@ LEMM: lemm.o ld65 -o LEMM lemm.o -C ../../linker_scripts/apple2_6000.inc lemm.o: lemm.s zp.inc hardware.inc qload.inc \ - graphics/graphics_test.inc graphics/sprites.inc \ + graphics/sprites.inc \ intro_level1.s update_time.s hgr_sprite.s draw_flames.s \ draw_door.s move_lemming.s draw_lemming.s \ hgr_hlin.s hgr_vlin.s update_menu.s \ interrupt_handler.s keyboard.s draw_pointer.s \ pointer_sprites.inc particle_hgr.s \ - level1.s level5.s title.s audio.s letsgo.s + level5.s title.s audio.s letsgo.s ca65 -o lemm.o lemm.s -l lemm.lst +### + +lemm.inc: generate_common LEMM + ./generate_common -a 0x6000 -s chunk_h_smc lemm.lst > lemm.inc + ./generate_common -a 0x6000 -s chunk_l_smc lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s load_song_chunk lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s intro_level lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s hgr_make_tables lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s play_letsgo lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s lemming_out lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s lemming_exploding lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s lemming_x lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s lemming_y lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s lemming_direction lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s lemming_status lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s draw_lemming lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s move_lemmings lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s erase_lemming lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s update_time lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s draw_door lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s draw_flames lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s draw_pointer lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s erase_pointer lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s handle_keypress lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s wait lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s disable_music lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s outro_level1 lemm.lst >> lemm.inc + ./generate_common -a 0x6000 -s update_lemmings_out lemm.lst >> lemm.inc + + + +#### + +LEVEL1: level1.o + ld65 -o LEVEL1 level1.o -C ../../linker_scripts/apple2_a000.inc + +level1.o: level1.s zp.inc hardware.inc qload.inc lemm.inc \ + graphics/graphics_level1.inc + ca65 -o level1.o level1.s -l level1.lst + + + #### generate_common: generate_common.o diff --git a/games/lemm/NOTES b/games/lemm/NOTES index bef4c3a4..7951b06e 100644 --- a/games/lemm/NOTES +++ b/games/lemm/NOTES @@ -1 +1,32 @@ LEMM: 23782 (original v0.01) + + +Plan: + $000 = zero page + $100 = stack + $300 = disk lookup tables + $400-$700 = text page 1 + $800-$b00 = hgr lookup tables + $c00-$f00 = particle effects? + $1000-$1100 = disk code + $1200-$1f00 = common routines + + HGR PAGE1 = $2000 + HGR PAGE2 = $4000 + + LEMM load at $6000 + + LEVELs load at $A000 + + SOUND/MUSIC data in language card at $D000 + + +level data + number of lemmings + number needed to win (percent? percent is hard) + location of entrance door + entrace door type + location of exit door + number of each job type + release speed + diff --git a/games/lemm/lemm.s b/games/lemm/lemm.s index 4df9e437..67a620f3 100644 --- a/games/lemm/lemm.s +++ b/games/lemm/lemm.s @@ -6,6 +6,7 @@ .include "zp.inc" .include "hardware.inc" .include "qload.inc" + .include "lemming_status.inc" lemm_test_start: @@ -223,6 +224,11 @@ zurg: lda #25 jsr wait_a_bit + ; load level from disk + lda #1 + sta WHICH_LOAD + jsr load_file + ;======================= ; do level1 @@ -348,5 +354,8 @@ config_string: letsgo: .incbin "sounds/letsgo.btc.lz4" - .include "level1.s" +; .include "level1.s" .include "level5.s" + +do_level1 = $a000 +level1_preview_lzsa = $b06b diff --git a/games/lemm/lemming_status.inc b/games/lemm/lemming_status.inc new file mode 100644 index 00000000..89b8b119 --- /dev/null +++ b/games/lemm/lemming_status.inc @@ -0,0 +1,5 @@ +LEMMING_FALLING = 1 +LEMMING_WALKING = 2 +LEMMING_DIGGING = 3 +LEMMING_EXPLODING = 4 +LEMMING_PARTICLES = 5 diff --git a/games/lemm/level1.s b/games/lemm/level1.s index f83cdfb4..4ae81ef1 100644 --- a/games/lemm/level1.s +++ b/games/lemm/level1.s @@ -1,4 +1,10 @@ +.include "zp.inc" +.include "hardware.inc" +.include "qload.inc" +.include "lemm.inc" +.include "lemming_status.inc" + do_level1: ;============== @@ -13,14 +19,14 @@ do_level1: ; set up first song - lda #music_parts_l + lda #>music5_parts_l sta chunk_l_smc+2 - lda #music_parts_h + lda #>music5_parts_h sta chunk_h_smc+2 @@ -251,11 +257,11 @@ l1_level_over: .include "graphics/graphics_level1.inc" -music_parts_h: +music5_parts_h: .byte >lemm5_part1_lzsa,>lemm5_part2_lzsa,>lemm5_part3_lzsa .byte >lemm5_part4_lzsa,>lemm5_part5_lzsa,$00 -music_parts_l: +music5_parts_l: .byte