From 22c7937a21007bc3217e8bc06e0bdc651cd738d4 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 17 Dec 2020 15:25:55 -0500 Subject: [PATCH] duke: more work on level1/level2 split --- duke/Makefile | 2 +- duke/common_defines.inc | 5 ++ duke/duke_level1.s | 12 ++--- duke/duke_level2.s | 43 ++++-------------- duke/graphics/Makefile | 13 ++++-- duke/graphics/{duke1_bg.png => level1_bg.png} | Bin duke/graphics/level2_bg.png | Bin 0 -> 6653 bytes duke/init_vars.s | 32 +++++++++++++ duke/loader.s | 6 +++ 9 files changed, 67 insertions(+), 46 deletions(-) rename duke/graphics/{duke1_bg.png => level1_bg.png} (100%) create mode 100644 duke/graphics/level2_bg.png create mode 100644 duke/init_vars.s diff --git a/duke/Makefile b/duke/Makefile index 1bf15f17..cfb74633 100644 --- a/duke/Makefile +++ b/duke/Makefile @@ -27,7 +27,7 @@ HELLO: hello.bas LOADER: loader.o ld65 -o LOADER loader.o -C ../linker_scripts/apple2_1000.inc -loader.o: loader.s +loader.o: loader.s init_vars.s ca65 -o loader.o loader.s -l loader.lst #### diff --git a/duke/common_defines.inc b/duke/common_defines.inc index be46c24d..99f3843d 100644 --- a/duke/common_defines.inc +++ b/duke/common_defines.inc @@ -2,3 +2,8 @@ LOAD_TITLE = 0 LOAD_DUKE1 = 1 LOAD_DUKE2 = 2 + +TILES = $9000 +BIG_TILEMAP = $9400 +TILEMAP = $BC00 + diff --git a/duke/duke_level1.s b/duke/duke_level1.s index 9c87353a..e1525a6e 100644 --- a/duke/duke_level1.s +++ b/duke/duke_level1.s @@ -1,4 +1,4 @@ -; Duke PoC +; Duke PoC Level 1 ; by deater (Vince Weaver) @@ -7,10 +7,6 @@ .include "hardware.inc" .include "common_defines.inc" -TILES = $9000 -BIG_TILEMAP = $9400 -TILEMAP = $BC00 - duke_start: ;=================== ; init screen @@ -88,9 +84,9 @@ duke_start: ; load level1 background ;==================================== - lda #duke1_bg_lzsa + lda #>level1_bg_lzsa sta LZSA_SRC_HI lda #$c ; load to page $c00 jsr decompress_lzsa2_fast @@ -204,7 +200,7 @@ done_with_duke: ;========================== ; level graphics - .include "graphics/duke_graphics.inc" + .include "graphics/level1_graphics.inc" .include "text_print.s" .include "gr_offsets.s" diff --git a/duke/duke_level2.s b/duke/duke_level2.s index 9c87353a..84079518 100644 --- a/duke/duke_level2.s +++ b/duke/duke_level2.s @@ -1,4 +1,4 @@ -; Duke PoC +; Duke Level2 -- Living Dangerously ; by deater (Vince Weaver) @@ -7,10 +7,6 @@ .include "hardware.inc" .include "common_defines.inc" -TILES = $9000 -BIG_TILEMAP = $9400 -TILEMAP = $BC00 - duke_start: ;=================== ; init screen @@ -34,43 +30,24 @@ duke_start: sta FRAMEL sta FRAMEH sta DISP_PAGE - sta JOYSTICK_ENABLED sta DUKE_WALKING sta DUKE_JUMPING sta LEVEL_OVER sta LASER_OUT sta DUKE_XL - sta SCORE0 - sta SCORE1 - sta SCORE2 sta DUKE_FALLING sta DUKE_SHOOTING sta KICK_UP_DUST sta DOOR_ACTIVATED - sta INVENTORY lda #enemy_data sta ENEMY_DATAH - ; FIXME: temporary -; lda INVENTORY -; ora #INV_RED_KEY -; sta INVENTORY - -; lda #$10 -; sta SCORE0 - - lda #1 - sta FIREPOWER - lda #2 ; draw twice (both pages) sta UPDATE_STATUS - lda #7 - sta HEALTH - lda #4 sta DRAW_PAGE @@ -88,9 +65,9 @@ duke_start: ; load level1 background ;==================================== - lda #duke1_bg_lzsa + lda #>level2_bg_lzsa sta LZSA_SRC_HI lda #$c ; load to page $c00 jsr decompress_lzsa2_fast @@ -99,9 +76,9 @@ duke_start: ; load level1 tilemap ;==================================== - lda #level1_data_lzsa + lda #>level2_data_lzsa sta LZSA_SRC_HI lda #$90 ; load to page $9000 jsr decompress_lzsa2_fast @@ -109,9 +86,9 @@ duke_start: ;==================================== ; copy in tilemap subset ;==================================== - lda #28 + lda #10 sta TILEMAP_X - lda #0 + lda #18 sta TILEMAP_Y jsr copy_tilemap_subset @@ -204,7 +181,7 @@ done_with_duke: ;========================== ; level graphics - .include "graphics/duke_graphics.inc" + .include "graphics/level2_graphics.inc" .include "text_print.s" .include "gr_offsets.s" @@ -233,5 +210,5 @@ done_with_duke: .include "sound_effects.s" .include "speaker_tone.s" -level1_data_lzsa: - .incbin "maps/level1_map.lzsa" +level2_data_lzsa: + .incbin "maps/level2_map.lzsa" diff --git a/duke/graphics/Makefile b/duke/graphics/Makefile index 261c86a0..c1aa53ac 100644 --- a/duke/graphics/Makefile +++ b/duke/graphics/Makefile @@ -2,12 +2,17 @@ PNG2GR = ../../gr-utils/png2gr LZSA = ~/research/lzsa/lzsa/lzsa -all: duke_graphics.inc +all: level1_graphics.inc level2_graphics.inc #### -duke_graphics.inc: duke1_bg.lzsa - echo "duke1_bg_lzsa: .incbin \"duke1_bg.lzsa\"" > duke_graphics.inc +level1_graphics.inc: level1_bg.lzsa + echo "level1_bg_lzsa: .incbin \"level1_bg.lzsa\"" > level1_graphics.inc + +#### + +level2_graphics.inc: level2_bg.lzsa + echo "level2_bg_lzsa: .incbin \"level2_bg.lzsa\"" > level2_graphics.inc #### @@ -20,4 +25,4 @@ duke_graphics.inc: duke1_bg.lzsa #### clean: - rm -f *~ *.o *.lst *.lzsa duke_graphics.inc + rm -f *~ *.o *.lst *.lzsa level1_graphics.inc level2_graphics.inc diff --git a/duke/graphics/duke1_bg.png b/duke/graphics/level1_bg.png similarity index 100% rename from duke/graphics/duke1_bg.png rename to duke/graphics/level1_bg.png diff --git a/duke/graphics/level2_bg.png b/duke/graphics/level2_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc279b0ef061d98026d131e175a55bb612885c6 GIT binary patch literal 6653 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 literal 0 HcmV?d00001 diff --git a/duke/init_vars.s b/duke/init_vars.s new file mode 100644 index 00000000..538b9b1d --- /dev/null +++ b/duke/init_vars.s @@ -0,0 +1,32 @@ + + ;===================== + ; init vars + ;===================== +init_vars: + lda #0 + sta ANIMATE_FRAME + sta FRAMEL + sta FRAMEH + sta DISP_PAGE + sta JOYSTICK_ENABLED + sta DUKE_WALKING + sta DUKE_JUMPING + sta LEVEL_OVER + sta LASER_OUT + sta DUKE_XL + sta SCORE0 + sta SCORE1 + sta SCORE2 + sta DUKE_FALLING + sta DUKE_SHOOTING + sta KICK_UP_DUST + sta DOOR_ACTIVATED + sta INVENTORY + + lda #1 + sta FIREPOWER + + lda #7 + sta HEALTH + + rts diff --git a/duke/loader.s b/duke/loader.s index 0d0db027..c6264eee 100644 --- a/duke/loader.s +++ b/duke/loader.s @@ -54,6 +54,8 @@ loader_start: jsr init ; unhook DOS, init nibble table + jsr init_vars + ;=================================================== ;=================================================== ; SETUP THE FILENAME @@ -698,8 +700,12 @@ sectbl: .byte $00,$0d,$0b,$09,$07,$05,$03,$01,$0e,$0c,$0a,$08,$06,$04,$02,$0f ;bit2tbl: .res 86 ; = nibtbl+128 ;filbuf: .res 4 ; = bit2tbl+86 + + ;dataend = filbuf+4 + .include "init_vars.s" + loader_end: .assert (16, error, "loader too big"