From fcf5e39281e71a9c5cd6063fe822b249df26aad3 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 20 Jan 2024 15:41:58 -0500 Subject: [PATCH] trogdor: work on horiz scroll --- demos/trogdor/Makefile | 2 +- demos/trogdor/graphics/Makefile | 9 +++ .../graphics/actual00_trog_cottage.png | Bin 0 -> 24018 bytes demos/trogdor/hgr_copy_fast.s | 49 +++++++++++++ demos/trogdor/hgr_copy_magnify.s | 56 +++++++++++++++ demos/trogdor/horiz_scroll_simple.s | 66 ++++++++++++++++++ demos/trogdor/trogdor.s | 28 ++++---- 7 files changed, 194 insertions(+), 16 deletions(-) create mode 100644 demos/trogdor/graphics/actual00_trog_cottage.png create mode 100644 demos/trogdor/hgr_copy_fast.s create mode 100644 demos/trogdor/hgr_copy_magnify.s create mode 100644 demos/trogdor/horiz_scroll_simple.s diff --git a/demos/trogdor/Makefile b/demos/trogdor/Makefile index 67379bac..138a4a27 100644 --- a/demos/trogdor/Makefile +++ b/demos/trogdor/Makefile @@ -165,7 +165,7 @@ trogdor.o: trogdor.s \ flames.inc \ zp.inc hardware.inc qload.inc \ graphics/trog00_trogdor.hgr.zx02 \ - hgr_sprite_big_mask.s + hgr_sprite_big_mask.s horiz_scroll_simple.s hgr_copy_magnify.s ca65 -o trogdor.o trogdor.s -l trogdor.lst diff --git a/demos/trogdor/graphics/Makefile b/demos/trogdor/graphics/Makefile index dd4e6116..6c597010 100644 --- a/demos/trogdor/graphics/Makefile +++ b/demos/trogdor/graphics/Makefile @@ -6,6 +6,7 @@ PNG2GR = ../../../utils/gr-utils/png2gr HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite all: \ + actual00_trog_cottage.hgr.zx02 \ trog00_trogdor.hgr.zx02 \ trog01_countryside.hgr.zx02 \ trog02_countryside.hgr.zx02 \ @@ -50,6 +51,14 @@ a2_strongbad.hgr.zx02: a2_strongbad.hgr a2_strongbad.hgr: a2_strongbad.png $(PNG_TO_HGR) a2_strongbad.png > a2_strongbad.hgr + +#### + +actual00_trog_cottage.hgr.zx02: actual00_trog_cottage.hgr + $(ZX02) actual00_trog_cottage.hgr actual00_trog_cottage.hgr.zx02 + +actual00_trog_cottage.hgr: actual00_trog_cottage.png + $(PNG_TO_HGR) actual00_trog_cottage.png > actual00_trog_cottage.hgr #### trog00_trogdor.hgr.zx02: trog00_trogdor.hgr diff --git a/demos/trogdor/graphics/actual00_trog_cottage.png b/demos/trogdor/graphics/actual00_trog_cottage.png new file mode 100644 index 0000000000000000000000000000000000000000..43473a1159e96759ca2253c673430f4e03ca93e7 GIT binary patch literal 24018 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