From 80a84fdd85c0e42f0b0fbeeda86d530586387f7b Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 3 Aug 2024 15:12:45 -0400 Subject: [PATCH] riven: hook up some more graphics --- games/riven_hgr/Makefile | 15 +++ games/riven_hgr/NOTES | 6 +- games/riven_hgr/disk02_files/disk02.s | 4 +- games/riven_hgr/disk04_files/Makefile | 37 +++++- games/riven_hgr/disk04_files/disk04.s | 8 +- .../riven_hgr/disk04_files/disk04_defines.inc | 14 ++- .../disk04_files/graphics_bridge1/Makefile | 25 ++++ .../graphics_bridge1/bridge1_e.png | Bin 0 -> 4238 bytes .../graphics_bridge1/bridge1_w.png | Bin 0 -> 34617 bytes .../disk04_files/graphics_bridge2/Makefile | 25 ++++ .../graphics_bridge2/bridge2_e.png | Bin 0 -> 4081 bytes .../graphics_bridge2/bridge2_w.png | Bin 0 -> 5453 bytes games/riven_hgr/disk04_files/level_bridge1.s | 113 ++++++++++++++++++ games/riven_hgr/disk04_files/level_bridge2.s | 113 ++++++++++++++++++ .../disk04_files/leveldata_bridge1.inc | 25 ++++ .../disk04_files/leveldata_bridge2.inc | 25 ++++ .../disk04_files/leveldata_tunnel3.inc | 2 +- games/riven_hgr/title.s | 4 +- 18 files changed, 400 insertions(+), 16 deletions(-) create mode 100644 games/riven_hgr/disk04_files/graphics_bridge1/Makefile create mode 100644 games/riven_hgr/disk04_files/graphics_bridge1/bridge1_e.png create mode 100644 games/riven_hgr/disk04_files/graphics_bridge1/bridge1_w.png create mode 100644 games/riven_hgr/disk04_files/graphics_bridge2/Makefile create mode 100644 games/riven_hgr/disk04_files/graphics_bridge2/bridge2_e.png create mode 100644 games/riven_hgr/disk04_files/graphics_bridge2/bridge2_w.png create mode 100644 games/riven_hgr/disk04_files/level_bridge1.s create mode 100644 games/riven_hgr/disk04_files/level_bridge2.s create mode 100644 games/riven_hgr/disk04_files/leveldata_bridge1.inc create mode 100644 games/riven_hgr/disk04_files/leveldata_bridge2.inc diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index 44babed9..e383bc3d 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -108,6 +108,8 @@ riven_disk03.dsk: QBOOT QLOAD TITLE_03 \ riven_disk04.dsk: QBOOT QLOAD TITLE_04 \ disk04_files/DISK04 \ + disk04_files/LEVEL_BRIDGE1 \ + disk04_files/LEVEL_BRIDGE2 \ disk04_files/LEVEL_TUNNEL3 cp $(EMPTY_DISK)/empty.dsk riven_disk04.dsk $(DOS33_RAW) riven_disk04.dsk 0 0 QBOOT 0 1 @@ -116,8 +118,11 @@ riven_disk04.dsk: QBOOT QLOAD TITLE_04 \ $(DOS33_RAW) riven_disk04.dsk 0 1 disk04_files/DISK04 0 0 $(DOS33_RAW) riven_disk04.dsk 0 8 TITLE_04 0 0 $(DOS33_RAW) riven_disk04.dsk 1 0 QLOAD 0 0 + $(DOS33_RAW) riven_disk04.dsk 2 0 disk04_files/LEVEL_BRIDGE1 0 0 + $(DOS33_RAW) riven_disk04.dsk 7 0 disk04_files/LEVEL_BRIDGE2 0 0 $(DOS33_RAW) riven_disk04.dsk 27 0 disk04_files/LEVEL_TUNNEL3 0 0 + ### riven_disk05.dsk: QBOOT QLOAD TITLE_05 \ @@ -538,6 +543,12 @@ disk03_files/LEVEL_DOORWAY: #### +disk04_files/LEVEL_BRIDGE1: + cd disk04_files && make + +disk04_files/LEVEL_BRIDGE2: + cd disk04_files && make + disk04_files/LEVEL_TUNNEL3: cd disk04_files && make @@ -730,6 +741,8 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \ disk03_files/LEVEL_CAVE \ disk03_files/LEVEL_DOORWAY \ disk04_files/DISK04 \ + disk04_files/LEVEL_BRIDGE1 \ + disk04_files/LEVEL_BRIDGE2 \ disk04_files/LEVEL_TUNNEL3 \ disk05_files/DISK05 \ disk05_files/LEVEL_CHAIR \ @@ -793,6 +806,8 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \ $(PRODOS_RAW) riven_hgr.2mg `./dts_block 3 21 0` disk03_files/LEVEL_CAVE 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 3 27 0` disk03_files/LEVEL_DOORWAY 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 4 0 2` disk04_files/DISK04 0 0 + $(PRODOS_RAW) riven_hgr.2mg `./dts_block 4 2 0` disk04_files/LEVEL_BRIDGE1 0 0 + $(PRODOS_RAW) riven_hgr.2mg `./dts_block 4 7 0` disk04_files/LEVEL_BRIDGE2 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 4 27 0` disk04_files/LEVEL_TUNNEL3 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 5 0 2` disk05_files/DISK05 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 5 2 0` disk05_files/LEVEL_CHAIR 0 0 diff --git a/games/riven_hgr/NOTES b/games/riven_hgr/NOTES index ccd84237..94a26744 100644 --- a/games/riven_hgr/NOTES +++ b/games/riven_hgr/NOTES @@ -105,9 +105,9 @@ Disk04 Map (disk has 35 tracks, each 4k in size) T 0 = Qboot T 0.5 = TITLE 1805 bytes 8S = 0T8S (2048) 400B free T 1 = QLOAD 2314 bytes 16S= 1T0S (4096) 2k free -T 2 = BRIDGE2 ???? bytes = 5T0S (20480) 15k free -T 7 = BRIDGE3 ???? bytes = 5T0S (20480) ?? free -T 12 = BRIDGE4 ???? bytes = 5T0S (20480) ?? free +T 2 = BRIDGE1 9027 bytes = 5T0S (20480) 11k free +T 7 = BRIDGE2 8982 bytes = 5T0S (20480) 11k free +T 12 = BRIDGE3 ???? bytes = 5T0S (20480) ?? free T 17 = TUNNEL1 ???? bytes = 5T0S (20480) ?? free T 22 = TUNNEL2 ???? bytes = 5T0S (20480) ?? free T 27 = TUNNEL3 17217 bytes = 5T0S (20480) 3k free diff --git a/games/riven_hgr/disk02_files/disk02.s b/games/riven_hgr/disk02_files/disk02.s index 7be7a7f4..9e630607 100644 --- a/games/riven_hgr/disk02_files/disk02.s +++ b/games/riven_hgr/disk02_files/disk02.s @@ -56,12 +56,12 @@ disk_exit_dni_l: disk_exit_load: .byte LOAD_PATH .byte LOAD_DSTEPS1 - .byte LOAD_TUNNEL3 + .byte LOAD_BRIDGE1 .byte LOAD_CYAN disk_exit_level: .byte RIVEN_STEPS_BASE .byte RIVEN_DOWN1 - .byte RIVEN_TUNNEL3 + .byte RIVEN_BRIDGE1 .byte 0 disk_exit_direction: .byte DIRECTION_W diff --git a/games/riven_hgr/disk04_files/Makefile b/games/riven_hgr/disk04_files/Makefile index aaa2c6c9..a396a726 100644 --- a/games/riven_hgr/disk04_files/Makefile +++ b/games/riven_hgr/disk04_files/Makefile @@ -3,7 +3,7 @@ include ../../../Makefile.inc LINKER_SCRIPTS = ../../../linker_scripts/ -all: DISK04 LEVEL_TUNNEL3 +all: DISK04 LEVEL_BRIDGE1 LEVEL_BRIDGE2 LEVEL_TUNNEL3 #### @@ -15,6 +15,31 @@ disk04.o: disk04.s ../zp.inc #### +LEVEL_BRIDGE1: level_bridge1.o + ld65 -o LEVEL_BRIDGE1 level_bridge1.o -C $(LINKER_SCRIPTS)/apple2_4000.inc + +level_bridge1.o: level_bridge1.s \ + ../zp.inc ../hardware.inc ../qload.inc \ + ../common_defines.inc disk04_defines.inc \ + leveldata_bridge1.inc \ + graphics_bridge1/bridge1_graphics.inc + ca65 -o level_bridge1.o level_bridge1.s -l level_bridge1.lst + +#### + +LEVEL_BRIDGE2: level_bridge2.o + ld65 -o LEVEL_BRIDGE2 level_bridge2.o -C $(LINKER_SCRIPTS)/apple2_4000.inc + +level_bridge2.o: level_bridge2.s \ + ../zp.inc ../hardware.inc ../qload.inc \ + ../common_defines.inc disk04_defines.inc \ + leveldata_bridge2.inc \ + graphics_bridge2/bridge2_graphics.inc + ca65 -o level_bridge2.o level_bridge2.s -l level_bridge2.lst + + +#### + LEVEL_TUNNEL3: level_tunnel3.o ld65 -o LEVEL_TUNNEL3 level_tunnel3.o -C $(LINKER_SCRIPTS)/apple2_4000.inc @@ -27,6 +52,12 @@ level_tunnel3.o: level_tunnel3.s \ #### +graphics_bridge1/bridge1_graphics.inc: + cd graphics_bridge1 && make + +graphics_bridge2/bridge2_graphics.inc: + cd graphics_bridge2 && make + graphics_tunnel3/tunnel3_graphics.inc: cd graphics_tunnel3 && make @@ -34,13 +65,17 @@ graphics_tunnel3/tunnel3_graphics.inc: clean: rm -f *~ *.o *.lst DISK04 \ + LEVEL_BRIDGE1 LEVEL_BRIDGE2 \ LEVEL_TUNNEL3 #### distclean: rm -f *~ *.o *.lst DISK04 \ + LEVEL_BRIDGE1 LEVEL_BRIDGE2 \ LEVEL_TUNNEL3 + cd graphics_bridge1 && make clean + cd graphics_bridge2 && make clean cd graphics_tunnel3 && make clean diff --git a/games/riven_hgr/disk04_files/disk04.s b/games/riven_hgr/disk04_files/disk04.s index 430948e1..e5797749 100644 --- a/games/riven_hgr/disk04_files/disk04.s +++ b/games/riven_hgr/disk04_files/disk04.s @@ -11,19 +11,19 @@ which_disk_bin: .byte 4 load_address_array: - .byte $40,$40,$40,$40 ; TITLE, BRIDGE2, BRIDGE3, BRIDGE4 + .byte $40,$40,$40,$40 ; TITLE, BRIDGE1, BRIDGE2, BRIDGE3 .byte $40,$40,$40,$00 ; TUNNEL1, TUNNEL2, TUNNEL3 track_array: - .byte 0, 2, 7,12 ; TITLE, BRIDGE2, BRIDGE3, BRIDGE4 + .byte 0, 2, 7,12 ; TITLE, BRIDGE1, BRIDGE2, BRIDGE3 .byte 17,22,27,0 ; TUNNEL1, TUNNEL1, TUNNEL3 sector_array: - .byte 8, 0, 0, 0 ; TITLE, BRIDGE2, BRIDGE3, BRIDGE4 + .byte 8, 0, 0, 0 ; TITLE, BRIDGE1, BRIDGE2, BRIDGE3 .byte 0,0,0,0 ; TUNNEL1, TUNNEL1, TUNNEL3 length_array: - .byte 8, 80,80,80 ; TITLE, BRIDGE2, BRIDGE3, BRIDGE4 + .byte 8, 80,80,80 ; TITLE, BRIDGE1, BRIDGE2, BRIDGE3 .byte 80,80,80,0 ; TUNNEL1, TUNNEL1, TUNNEL3 diff --git a/games/riven_hgr/disk04_files/disk04_defines.inc b/games/riven_hgr/disk04_files/disk04_defines.inc index 86d848a3..b421b7dc 100644 --- a/games/riven_hgr/disk04_files/disk04_defines.inc +++ b/games/riven_hgr/disk04_files/disk04_defines.inc @@ -1,7 +1,7 @@ LOAD_TITLE_04 = 0 -LOAD_BRIDGE2 = 1 -LOAD_BRIDGE3 = 2 -LOAD_BRIDGE4 = 3 +LOAD_BRIDGE1 = 1 +LOAD_BRIDGE2 = 2 +LOAD_BRIDGE3 = 3 LOAD_TUNNEL1 = 4 LOAD_TUNNEL2 = 5 LOAD_TUNNEL3 = 6 @@ -9,6 +9,14 @@ LOAD_TUNNEL3 = 6 ;================================ ; Level definitions +; BRIDGE1 +RIVEN_BRIDGE1 = 0 + +; BRIDGE2 +RIVEN_BRIDGE2 = 0 + + + ; TUNNEL3 RIVEN_TUNNEL3 = 0 diff --git a/games/riven_hgr/disk04_files/graphics_bridge1/Makefile b/games/riven_hgr/disk04_files/graphics_bridge1/Makefile new file mode 100644 index 00000000..36383e4f --- /dev/null +++ b/games/riven_hgr/disk04_files/graphics_bridge1/Makefile @@ -0,0 +1,25 @@ +include ../../../../Makefile.inc + +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f +PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr + +all: bridge1_graphics.inc + +bridge1_graphics.inc: \ + bridge1_w.hgr.zx02 bridge1_e.hgr.zx02 + echo "bridge1_w_zx02: .incbin \"bridge1_w.hgr.zx02\"" > bridge1_graphics.inc + echo "bridge1_e_zx02: .incbin \"bridge1_e.hgr.zx02\"" >> bridge1_graphics.inc + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr bridge1_graphics.inc + diff --git a/games/riven_hgr/disk04_files/graphics_bridge1/bridge1_e.png b/games/riven_hgr/disk04_files/graphics_bridge1/bridge1_e.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3f8d716e9a3b5d63d83afabb0118f421472ce1 GIT binary patch literal 4238 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 literal 0 HcmV?d00001 diff --git a/games/riven_hgr/disk04_files/graphics_bridge1/bridge1_w.png b/games/riven_hgr/disk04_files/graphics_bridge1/bridge1_w.png new file mode 100644 index 0000000000000000000000000000000000000000..537cb14c7a49b214ca8e8217433af58140ca89fa GIT binary patch literal 34617 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 bridge2_graphics.inc + echo "bridge2_e_zx02: .incbin \"bridge2_e.hgr.zx02\"" >> bridge2_graphics.inc + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr bridge2_graphics.inc + diff --git a/games/riven_hgr/disk04_files/graphics_bridge2/bridge2_e.png b/games/riven_hgr/disk04_files/graphics_bridge2/bridge2_e.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8b0be2d41ef06804f2bf4bb0ee5abfc28efb09 GIT binary patch literal 4081 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 D{(yT< literal 0 HcmV?d00001 diff --git a/games/riven_hgr/disk04_files/level_bridge1.s b/games/riven_hgr/disk04_files/level_bridge1.s new file mode 100644 index 00000000..7dd79a75 --- /dev/null +++ b/games/riven_hgr/disk04_files/level_bridge1.s @@ -0,0 +1,113 @@ +; Riven -- Bridge1 + +; by deater (Vince Weaver) + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk04_defines.inc" + +bridge1_start: + + ;=================== + ; 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 + ;=================================== + +; done in title + +; lda #$20 +; sta HGR_PAGE +; jsr hgr_make_tables + + 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_bridge1/bridge1_graphics.inc" + +.include "leveldata_bridge1.inc" diff --git a/games/riven_hgr/disk04_files/level_bridge2.s b/games/riven_hgr/disk04_files/level_bridge2.s new file mode 100644 index 00000000..bc56b651 --- /dev/null +++ b/games/riven_hgr/disk04_files/level_bridge2.s @@ -0,0 +1,113 @@ +; Riven -- Bridge2 + +; by deater (Vince Weaver) + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk04_defines.inc" + +bridge2_start: + + ;=================== + ; 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 + ;=================================== + +; done in title + +; lda #$20 +; sta HGR_PAGE +; jsr hgr_make_tables + + 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_bridge2/bridge2_graphics.inc" + +.include "leveldata_bridge2.inc" diff --git a/games/riven_hgr/disk04_files/leveldata_bridge1.inc b/games/riven_hgr/disk04_files/leveldata_bridge1.inc new file mode 100644 index 00000000..a1de05c0 --- /dev/null +++ b/games/riven_hgr/disk04_files/leveldata_bridge1.inc @@ -0,0 +1,25 @@ +;=============================================== +; level data for Start level +;=============================================== + +locations: + .word location0 + +; RIVEN_BRIDGE1 -- part way across the bridge + +location0: + .byte $ff ; north exit + .byte $ff ; south exit + .byte LOAD_BRIDGE2<<4|RIVEN_BRIDGE2 ; east exit + .byte $E0 ; 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 bridge1_e_zx02 ; east bg + .word bridge1_w_zx02 ; west bg + .byte BG_EAST|BG_WEST + .byte $ff ; special exit + diff --git a/games/riven_hgr/disk04_files/leveldata_bridge2.inc b/games/riven_hgr/disk04_files/leveldata_bridge2.inc new file mode 100644 index 00000000..c6cf56e5 --- /dev/null +++ b/games/riven_hgr/disk04_files/leveldata_bridge2.inc @@ -0,0 +1,25 @@ +;=============================================== +; level data for Start level +;=============================================== + +locations: + .word location0 + +; RIVEN_BRIDGE1 -- part way across the bridge + +location0: + .byte $ff ; north exit + .byte $ff ; south exit + .byte LOAD_TUNNEL3<<4|RIVEN_TUNNEL3 ; east exit + .byte LOAD_BRIDGE1<<4|RIVEN_BRIDGE1 ; 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 bridge2_e_zx02 ; east bg + .word bridge2_w_zx02 ; west bg + .byte BG_EAST|BG_WEST + .byte $ff ; special exit + diff --git a/games/riven_hgr/disk04_files/leveldata_tunnel3.inc b/games/riven_hgr/disk04_files/leveldata_tunnel3.inc index f17d42fe..1d1ce63f 100644 --- a/games/riven_hgr/disk04_files/leveldata_tunnel3.inc +++ b/games/riven_hgr/disk04_files/leveldata_tunnel3.inc @@ -10,7 +10,7 @@ location0: .byte RIVEN_TUNNEL3_OPEN ; north exit .byte $ff ; south exit .byte $E1 ; east exit - .byte $E0 ; west exit + .byte LOAD_BRIDGE2<<4|RIVEN_BRIDGE2 ; west exit .byte DIRECTION_N ; north exit_dir .byte $FF ; south exit_dir .byte DIRECTION_E ; east exit_dir diff --git a/games/riven_hgr/title.s b/games/riven_hgr/title.s index 3a5e432c..001799d0 100644 --- a/games/riven_hgr/title.s +++ b/games/riven_hgr/title.s @@ -447,10 +447,10 @@ game_continue: .endif .if DISK=04 - lda #LOAD_TUNNEL3 + lda #LOAD_BRIDGE1 sta WHICH_LOAD - lda #RIVEN_TUNNEL3 + lda #RIVEN_BRIDGE1 sta LOCATION lda #DIRECTION_E