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 00000000..dfc279b0 Binary files /dev/null and b/duke/graphics/level2_bg.png differ 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"