From 4f8c9fd2cca85b88e90b8dae5791f8e327e589ef Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 23 Jun 2024 23:14:38 -0400 Subject: [PATCH] riven: add stairs --- games/riven_hgr/Makefile | 7 +- games/riven_hgr/NOTES | 3 +- games/riven_hgr/disk41_files/Makefile | 41 ++++++- .../disk41_files/graphics_cove/Makefile | 28 +++++ .../graphics_cove/stairs_down2_e.png | Bin 0 -> 4766 bytes .../graphics_cove/stairs_down2_w.png | Bin 0 -> 4894 bytes .../disk41_files/graphics_stairs/Makefile | 32 ++++++ .../graphics_stairs/stairs_down1_e.png | Bin 0 -> 3716 bytes .../graphics_stairs/stairs_down1_w.png | Bin 0 -> 4914 bytes .../disk41_files/graphics_stairs/stairs_e.png | Bin 0 -> 3637 bytes .../disk41_files/graphics_stairs/stairs_n.png | Bin 0 -> 5067 bytes .../disk41_files/graphics_stairs/stairs_s.png | Bin 0 -> 5312 bytes .../disk41_files/graphics_stairs/stairs_w.png | Bin 0 -> 4388 bytes games/riven_hgr/disk41_files/level_cove.s | 107 ++++++++++++++++++ games/riven_hgr/disk41_files/level_stairs.s | 107 ++++++++++++++++++ .../riven_hgr/disk41_files/leveldata_cove.inc | 23 ++++ .../disk41_files/leveldata_stairs.inc | 40 +++++++ 17 files changed, 383 insertions(+), 5 deletions(-) create mode 100644 games/riven_hgr/disk41_files/graphics_cove/Makefile create mode 100644 games/riven_hgr/disk41_files/graphics_cove/stairs_down2_e.png create mode 100644 games/riven_hgr/disk41_files/graphics_cove/stairs_down2_w.png create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/Makefile create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/stairs_down1_e.png create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/stairs_down1_w.png create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/stairs_e.png create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/stairs_n.png create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/stairs_s.png create mode 100644 games/riven_hgr/disk41_files/graphics_stairs/stairs_w.png create mode 100644 games/riven_hgr/disk41_files/level_cove.s create mode 100644 games/riven_hgr/disk41_files/level_stairs.s create mode 100644 games/riven_hgr/disk41_files/leveldata_cove.inc create mode 100644 games/riven_hgr/disk41_files/leveldata_stairs.inc diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index 46caab55..f304e500 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -69,7 +69,9 @@ riven_disk40.dsk: QBOOT QLOAD TITLE_40 \ riven_disk41.dsk: QBOOT QLOAD TITLE_41 \ disk41_files/DISK41 \ - disk41_files/LEVEL_TUNNEL + disk41_files/LEVEL_TUNNEL \ + disk41_files/LEVEL_STAIRS \ + disk41_files/LEVEL_COVE cp $(EMPTY_DISK)/empty.dsk riven_disk41.dsk $(DOS33_RAW) riven_disk41.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) riven_disk41.dsk 0 2 QBOOT 1 1 @@ -78,6 +80,9 @@ riven_disk41.dsk: QBOOT QLOAD TITLE_41 \ $(DOS33_RAW) riven_disk41.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) riven_disk41.dsk 1 9 TITLE_41 0 0 $(DOS33_RAW) riven_disk41.dsk 2 0 disk41_files/LEVEL_TUNNEL 0 0 + $(DOS33_RAW) riven_disk41.dsk 10 0 disk41_files/LEVEL_STAIRS 0 0 + $(DOS33_RAW) riven_disk41.dsk 17 0 disk41_files/LEVEL_COVE 0 0 + riven_disk43.dsk: QBOOT QLOAD TITLE_43 \ disk43_files/DISK43 \ diff --git a/games/riven_hgr/NOTES b/games/riven_hgr/NOTES index 5537206c..0cf31da1 100644 --- a/games/riven_hgr/NOTES +++ b/games/riven_hgr/NOTES @@ -71,7 +71,8 @@ T 0 = Qboot T 1 = QLOAD 1762 bytes 8S = 0T8S (2048) 300B free T 1.5 = TITLE 1531 bytes 8S = 0T8S (2048) 500B free T 2 = TUNNEL 30609 bytes = 8T (32768) 2k free - +T 10 = STAIRS 25533 100S= 6T4S (28672) 3k free +T 17 = COVE 9139 = 8T (32768) Disk43 Map (disk has 35 tracks, each 4k in size) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/games/riven_hgr/disk41_files/Makefile b/games/riven_hgr/disk41_files/Makefile index fd041a96..06380d69 100644 --- a/games/riven_hgr/disk41_files/Makefile +++ b/games/riven_hgr/disk41_files/Makefile @@ -3,7 +3,7 @@ include ../../../Makefile.inc LINKER_SCRIPTS = ../../../linker_scripts/ -all: DISK41 LEVEL_TUNNEL +all: DISK41 LEVEL_TUNNEL LEVEL_STAIRS LEVEL_COVE ### @@ -25,21 +25,56 @@ level_tunnel.o: level_tunnel.s \ graphics_tunnel/tunnel_graphics.inc ca65 -o level_tunnel.o level_tunnel.s -l level_tunnel.lst +#### + +LEVEL_STAIRS: level_stairs.o + ld65 -o LEVEL_STAIRS level_stairs.o -C $(LINKER_SCRIPTS)/apple2_4000.inc + +level_stairs.o: level_stairs.s \ + ../zp.inc ../hardware.inc ../qload.inc \ + ../common_defines.inc disk41_defines.inc \ + leveldata_stairs.inc \ + graphics_stairs/stairs_graphics.inc + ca65 -o level_stairs.o level_stairs.s -l level_stairs.lst + +#### + +LEVEL_COVE: level_cove.o + ld65 -o LEVEL_COVE level_cove.o -C $(LINKER_SCRIPTS)/apple2_4000.inc + +level_cove.o: level_cove.s \ + ../zp.inc ../hardware.inc ../qload.inc \ + ../common_defines.inc disk41_defines.inc \ + leveldata_cove.inc \ + graphics_cove/cove_graphics.inc + ca65 -o level_cove.o level_cove.s -l level_cove.lst + + + #### graphics_tunnel/tunnel_graphics.inc: cd graphics_tunnel && make + +graphics_stairs/stairs_graphics.inc: + cd graphics_stairs && make + +graphics_cove/cove_graphics.inc: + cd graphics_cove && make + #### clean: rm -f *~ *.o *.lst \ - DISK41 LEVEL_TUNNEL + DISK41 LEVEL_TUNNEL LEVEL_STAIRS LEVEL_COVE #### distclean: rm -f *~ *.o *.lst \ - DISK41 LEVEL_TUNNEL + DISK41 LEVEL_TUNNEL LEVEL_STAIRS LEVEL_COVE cd graphics_tunnel && make clean + cd graphics_stairs && make clean + cd graphics_cove && make clean diff --git a/games/riven_hgr/disk41_files/graphics_cove/Makefile b/games/riven_hgr/disk41_files/graphics_cove/Makefile new file mode 100644 index 00000000..ac48e778 --- /dev/null +++ b/games/riven_hgr/disk41_files/graphics_cove/Makefile @@ -0,0 +1,28 @@ +include ../../../../Makefile.inc + +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f +PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr + +all: cove_graphics.inc + +cove_graphics.inc: \ + stairs_down2_e.hgr.zx02 stairs_down2_w.hgr.zx02 + echo "stairs_down2_e_zx02: .incbin \"stairs_down2_e.hgr.zx02\"" > cove_graphics.inc + echo "stairs_down2_w_zx02: .incbin \"stairs_down2_w.hgr.zx02\"" >> cove_graphics.inc + + + + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr stairs_cove.inc + diff --git a/games/riven_hgr/disk41_files/graphics_cove/stairs_down2_e.png b/games/riven_hgr/disk41_files/graphics_cove/stairs_down2_e.png new file mode 100644 index 0000000000000000000000000000000000000000..0bdd5a96ca6b4062ee0e93e13e4faf9dd20af6b2 GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/games/riven_hgr/disk41_files/graphics_cove/stairs_down2_w.png b/games/riven_hgr/disk41_files/graphics_cove/stairs_down2_w.png new file mode 100644 index 0000000000000000000000000000000000000000..8987af213d228ec82915ce133a478f6f33d4e9db GIT binary patch literal 4894 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 stairs_graphics.inc + echo "stairs_n_zx02: .incbin \"stairs_n.hgr.zx02\"" >> stairs_graphics.inc + echo "stairs_e_zx02: .incbin \"stairs_e.hgr.zx02\"" >> stairs_graphics.inc + echo "stairs_w_zx02: .incbin \"stairs_w.hgr.zx02\"" >> stairs_graphics.inc + echo "stairs_down1_e_zx02: .incbin \"stairs_down1_e.hgr.zx02\"" >> stairs_graphics.inc + echo "stairs_down1_w_zx02: .incbin \"stairs_down1_w.hgr.zx02\"" >> stairs_graphics.inc + + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr stairs_graphics.inc + diff --git a/games/riven_hgr/disk41_files/graphics_stairs/stairs_down1_e.png b/games/riven_hgr/disk41_files/graphics_stairs/stairs_down1_e.png new file mode 100644 index 0000000000000000000000000000000000000000..37b2880d74d7722c16880e787da73d6a5dad14ef GIT binary patch literal 3716 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 e?eFdH&He$*qJr9JgH~z)0000 + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk41_defines.inc" + +riven_jungle_cove: + + ;=================== + ; init screen + ;=================== + +; jsr TEXT +; jsr HOME + bit KEYRESET + + bit SET_GR + bit PAGE1 + bit HIRES + bit FULLGR + + ;======================== + ; set up location + ;======================== + + lda #locations + sta LOCATIONS_H + + lda #0 + sta DRAW_PAGE + sta LEVEL_OVER + + lda #0 + sta JOYSTICK_ENABLED + sta UPDATE_POINTER + + lda #1 + sta CURSOR_VISIBLE + + lda #20 + sta CURSOR_X + sta CURSOR_Y + + + + + ;=================================== + ; init + ;=================================== + + jsr change_location + + jsr save_bg_14x14 ; save old bg + +game_loop: + + ;=================================== + ; draw pointer + ;=================================== + + jsr draw_pointer + + ;=================================== + ; handle keypress/joystick + ;=================================== + + jsr handle_keypress + + ;=================================== + ; increment frame count + ;=================================== + + inc FRAMEL + bne frame_no_oflo + + inc FRAMEH +frame_no_oflo: + + ;==================================== + ; check level over + ;==================================== + + lda LEVEL_OVER + bne really_exit + + jmp game_loop + +really_exit: + + rts + + + ;========================== + ; includes + ;========================== + + +.include "graphics_cove/cove_graphics.inc" + +.include "leveldata_cove.inc" diff --git a/games/riven_hgr/disk41_files/level_stairs.s b/games/riven_hgr/disk41_files/level_stairs.s new file mode 100644 index 00000000..df9774a4 --- /dev/null +++ b/games/riven_hgr/disk41_files/level_stairs.s @@ -0,0 +1,107 @@ +; Riven -- Jungle Island -- Stairs + +; by deater (Vince Weaver) + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk41_defines.inc" + +riven_jungle_tunnel2: + + ;=================== + ; init screen + ;=================== + +; jsr TEXT +; jsr HOME + bit KEYRESET + + bit SET_GR + bit PAGE1 + bit HIRES + bit FULLGR + + ;======================== + ; set up location + ;======================== + + lda #locations + sta LOCATIONS_H + + lda #0 + sta DRAW_PAGE + sta LEVEL_OVER + + lda #0 + sta JOYSTICK_ENABLED + sta UPDATE_POINTER + + lda #1 + sta CURSOR_VISIBLE + + lda #20 + sta CURSOR_X + sta CURSOR_Y + + + + + ;=================================== + ; init + ;=================================== + + jsr change_location + + jsr save_bg_14x14 ; save old bg + +game_loop: + + ;=================================== + ; draw pointer + ;=================================== + + jsr draw_pointer + + ;=================================== + ; handle keypress/joystick + ;=================================== + + jsr handle_keypress + + ;=================================== + ; increment frame count + ;=================================== + + inc FRAMEL + bne frame_no_oflo + + inc FRAMEH +frame_no_oflo: + + ;==================================== + ; check level over + ;==================================== + + lda LEVEL_OVER + bne really_exit + + jmp game_loop + +really_exit: + + rts + + + ;========================== + ; includes + ;========================== + + +.include "graphics_stairs/stairs_graphics.inc" + +.include "leveldata_stairs.inc" diff --git a/games/riven_hgr/disk41_files/leveldata_cove.inc b/games/riven_hgr/disk41_files/leveldata_cove.inc new file mode 100644 index 00000000..11939e97 --- /dev/null +++ b/games/riven_hgr/disk41_files/leveldata_cove.inc @@ -0,0 +1,23 @@ +;=============================================== +; level data for Jungle Cove +;=============================================== + +locations: + .word location0 + +; RIVEN_DOWN2 -- down two flights of stairs +location0: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $ff ; east exit + .byte LOAD_STAIRS<<4|RIVEN_DOWN1 ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte DIRECTION_W ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word stairs_down2_e_zx02 ; east bg + .word stairs_down2_w_zx02 ; west bg + .byte BG_EAST|BG_WEST + .byte $ff ; special exit diff --git a/games/riven_hgr/disk41_files/leveldata_stairs.inc b/games/riven_hgr/disk41_files/leveldata_stairs.inc new file mode 100644 index 00000000..5860323a --- /dev/null +++ b/games/riven_hgr/disk41_files/leveldata_stairs.inc @@ -0,0 +1,40 @@ +;=============================================== +; level data for Jungle stair +;=============================================== + +locations: + .word location0,location1 + +; RIVEN_STAIRS -- mid-stairs +location0: + .byte LOAD_TUNNEL2<<4|RIVEN_TUNNEL8; north exit + .byte $FF ; south exit + .byte RIVEN_DOWN1 ; east exit + .byte $FF ; west exit + .byte DIRECTION_N ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte DIRECTION_W ; west exit_dir + .word stairs_n_zx02 ; north bg + .word stairs_s_zx02 ; south bg + .word stairs_e_zx02 ; east bg + .word stairs_w_zx02 ; west bg + .byte BG_NORTH|BG_SOUTH|BG_EAST|BG_WEST + .byte $ff ; special exit + +; RIVEN_DOWN1 -- down one flight of stairs +location1: + .byte $ff ; north exit + .byte $ff ; south exit + .byte LOAD_COVE<<4|RIVEN_DOWN2 ; east exit + .byte RIVEN_STAIRS ; west exit + .byte $ff ; north exit_dir + .byte $ff ; south exit_dir + .byte DIRECTION_E ; east exit_dir + .byte DIRECTION_W ; west exit_dir + .word $0000 ; north bg + .word $0000 ; south bg + .word stairs_down1_e_zx02 ; east bg + .word stairs_down1_w_zx02 ; west bg + .byte BG_EAST|BG_WEST + .byte $ff ; special exit