From 5b3f54526491c0cbe8769006cd5317e8f7ed6f94 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 10 Dec 2020 19:24:05 -0500 Subject: [PATCH] duke: can walk around now --- duke/Makefile | 6 ++++- duke/draw_duke.s | 53 +++++++++++++++++++++++++++++++++++++-- duke/hello.bas | 2 +- duke/title/Makefile | 30 ++++++++++++++++++++++ duke/title/new_title.bmp | Bin 0 -> 26958 bytes duke/title/new_title.png | Bin 0 -> 5316 bytes 6 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 duke/title/Makefile create mode 100644 duke/title/new_title.bmp create mode 100644 duke/title/new_title.png diff --git a/duke/Makefile b/duke/Makefile index f176a9f0..819b02b0 100644 --- a/duke/Makefile +++ b/duke/Makefile @@ -12,6 +12,7 @@ duke.dsk: HELLO DUKE cp empty.dsk duke.dsk $(DOS33) -y duke.dsk SAVE A HELLO $(DOS33) -y duke.dsk BSAVE -a 0x2000 DUKE + $(DOS33) -y duke.dsk BSAVE -a 0x4000 ./title/NEW_TITLEC.BIN TITLE ### @@ -37,6 +38,9 @@ duke.o: duke.s zp.inc hardware.inc duke.s \ graphics/duke_graphics.inc: cd graphics && make +title/new_title.lzsa: + cd title && make + maps/level1_map.lzsa: cd maps && make @@ -46,5 +50,5 @@ clean: rm -f *~ *.o *.lst HELLO DUKE cd graphics && make clean cd maps && make clean - + cd title && make clean diff --git a/duke/draw_duke.s b/duke/draw_duke.s index 5781250b..5307057e 100644 --- a/duke/draw_duke.s +++ b/duke/draw_duke.s @@ -1,9 +1,58 @@ + + ;========================= + ; move duke + ;========================= move_duke: + + lda DUKE_WALKING + beq done_move_duke + + lda DUKE_DIRECTION + bmi move_left + + lda DUKE_X + cmp #22 + bcc duke_walk_right + +duke_scroll_right: + + inc TILEMAP_X + + jsr copy_tilemap_subset + + jmp done_move_duke + +duke_walk_right: + inc DUKE_X + + jmp done_move_duke + +move_left: + + lda DUKE_X + cmp #14 + bcs duke_walk_left + +duke_scroll_left: + + dec TILEMAP_X + + jsr copy_tilemap_subset + + jmp done_move_duke + +duke_walk_left: + dec DUKE_X + + jmp done_move_duke + +done_move_duke: + rts - + ;========================= ; draw duke - + ;========================= draw_duke: lda DUKE_X diff --git a/duke/hello.bas b/duke/hello.bas index 3cf8c0d3..145ea099 100644 --- a/duke/hello.bas +++ b/duke/hello.bas @@ -1,4 +1,4 @@ 5 HOME -10 PRINT "LOADING DUKE V0.01" +10 PRINT "LOADING DUKE V0.02" 20 PRINT:PRINT 30 PRINT CHR$(4);"BRUN DUKE" diff --git a/duke/title/Makefile b/duke/title/Makefile new file mode 100644 index 00000000..adfdf7fa --- /dev/null +++ b/duke/title/Makefile @@ -0,0 +1,30 @@ +#include ../Makefile.inc + +B2D = ../../bmp2dhr/b2d +PNG2GR = ../../gr-utils/png2gr +LZSA = ~/research/lzsa/lzsa/lzsa + + +all: new_title.lzsa + +#### + +duke_title.lzsa: DUKE_TITLEC.BIN + $(LZSA) -r -f2 DUKE_TITLEC.BIN duke_title.lzsa + +DUKE_TITLEC.BIN: duke_title.bmp + $(B2D) duke_title.bmp HGR -d + +#### + +new_title.lzsa: NEW_TITLEC.BIN + $(LZSA) -r -f2 NEW_TITLEC.BIN new_title.lzsa + +NEW_TITLEC.BIN: new_title.bmp + $(B2D) new_title.bmp HGR + + +#### + +clean: + rm -f *~ *.o *.lst diff --git a/duke/title/new_title.bmp b/duke/title/new_title.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d065c3d4ae36e203623c0179946bcdd8689d8420 GIT binary patch literal 26958 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 literal 0 HcmV?d00001 diff --git a/duke/title/new_title.png b/duke/title/new_title.png new file mode 100644 index 0000000000000000000000000000000000000000..22fe632e662c762125609a7810991e4d9b84526b GIT binary patch literal 5316 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 W{7=pd#H*wL0000