diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index a0d7ee26..993c1b73 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -159,6 +159,7 @@ riven_disk10.dsk: QBOOT QLOAD TITLE_10 \ disk10_files/LEVEL_CENTER \ disk10_files/LEVEL_PILLARS \ disk10_files/LEVEL_15 \ + disk10_files/LEVEL_21 \ disk10_files/LEVEL_32 cp $(EMPTY_DISK)/empty.dsk riven_disk10.dsk $(DOS33_RAW) riven_disk10.dsk 0 0 QBOOT 0 1 @@ -169,6 +170,7 @@ riven_disk10.dsk: QBOOT QLOAD TITLE_10 \ $(DOS33_RAW) riven_disk10.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) riven_disk10.dsk 2 0 disk10_files/LEVEL_CENTER 0 0 $(DOS33_RAW) riven_disk10.dsk 8 0 disk10_files/LEVEL_15 0 0 + $(DOS33_RAW) riven_disk10.dsk 11 0 disk10_files/LEVEL_21 0 0 $(DOS33_RAW) riven_disk10.dsk 14 0 disk10_files/LEVEL_32 0 0 $(DOS33_RAW) riven_disk10.dsk 23 0 disk10_files/LEVEL_PILLARS 0 0 @@ -647,6 +649,9 @@ disk10_files/LEVEL_PILLARS: disk10_files/LEVEL_15: cd disk10_files && make +disk10_files/LEVEL_21: + cd disk10_files && make + disk10_files/LEVEL_32: cd disk10_files && make @@ -877,6 +882,7 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \ disk10_files/LEVEL_CENTER \ disk10_files/LEVEL_PILLARS \ disk10_files/LEVEL_15 \ + disk10_files/LEVEL_21 \ disk10_files/LEVEL_32 \ disk38_files/DISK38 \ disk38_files/LEVEL_PROJECTOR \ @@ -958,6 +964,7 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \ $(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 0 2` disk10_files/DISK10 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 2 0` disk10_files/LEVEL_CENTER 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 8 0` disk10_files/LEVEL_15 0 0 + $(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 11 0` disk10_files/LEVEL_21 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 14 0` disk10_files/LEVEL_32 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 10 23 0` disk10_files/LEVEL_PILLARS 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 38 0 2` disk38_files/DISK38 0 0 diff --git a/games/riven_hgr/disk10_files/Makefile b/games/riven_hgr/disk10_files/Makefile index 8f6f375c..61f3290f 100644 --- a/games/riven_hgr/disk10_files/Makefile +++ b/games/riven_hgr/disk10_files/Makefile @@ -4,7 +4,7 @@ LINKER_SCRIPTS = ../../../linker_scripts/ all: DISK10 LEVEL_CENTER LEVEL_PILLARS \ - LEVEL_15 LEVEL_32 + LEVEL_15 LEVEL_21 LEVEL_32 #### @@ -41,6 +41,19 @@ level_15.o: level_15.s \ #### +LEVEL_21: level_21.o + ld65 -o LEVEL_21 level_21.o -C $(LINKER_SCRIPTS)/apple2_4000.inc + +level_21.o: level_21.s \ + ../zp.inc ../hardware.inc ../qload.inc \ + ../common_defines.inc disk10_defines.inc \ + leveldata_21.inc \ + graphics_21/21_graphics.inc + ca65 -o level_21.o level_21.s -l level_21.lst + + +#### + LEVEL_32: level_32.o ld65 -o LEVEL_32 level_32.o -C $(LINKER_SCRIPTS)/apple2_4000.inc @@ -76,6 +89,9 @@ graphics_pillars/pillars_graphics.inc: graphics_15/15_graphics.inc: cd graphics_15 && make +graphics_21/21_graphics.inc: + cd graphics_21 && make + graphics_32/32_graphics.inc: cd graphics_32 && make @@ -84,7 +100,7 @@ graphics_32/32_graphics.inc: clean: rm -f *~ *.o *.lst DISK10 \ LEVEL_CENTER LEVEL_PILLARS \ - LEVEL_15 LEVEL_32 + LEVEL_15 LEVEL_21 LEVEL_32 #### @@ -92,10 +108,11 @@ clean: distclean: rm -f *~ *.o *.lst DISK10 \ LEVEL_CENTER LEVEL_PILLARS \ - LEVEL_15 LEVEL_32 + LEVEL_15 LEVEL_21 LEVEL_32 cd graphics_center && make clean cd graphics_pillars && make clean cd graphics_15 && make clean + cd graphics_21 && make clean cd graphics_32 && make clean diff --git a/games/riven_hgr/disk10_files/graphics_21/Makefile b/games/riven_hgr/disk10_files/graphics_21/Makefile new file mode 100644 index 00000000..57413853 --- /dev/null +++ b/games/riven_hgr/disk10_files/graphics_21/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: 21_graphics.inc + +21_graphics.inc: \ + pillars_21_in.hgr.zx02 pillars_21_out.hgr.zx02 + echo "pillars_21_in_zx02: .incbin \"pillars_21_in.hgr.zx02\"" > 21_graphics.inc + echo "pillars_21_out_zx02: .incbin \"pillars_21_out.hgr.zx02\"" >> 21_graphics.inc + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr 21_graphics.inc + diff --git a/games/riven_hgr/disk10_files/graphics_21/pillars_21_in.png b/games/riven_hgr/disk10_files/graphics_21/pillars_21_in.png new file mode 100644 index 00000000..8be2531c Binary files /dev/null and b/games/riven_hgr/disk10_files/graphics_21/pillars_21_in.png differ diff --git a/games/riven_hgr/disk10_files/graphics_21/pillars_21_out.png b/games/riven_hgr/disk10_files/graphics_21/pillars_21_out.png new file mode 100644 index 00000000..a31577c1 Binary files /dev/null and b/games/riven_hgr/disk10_files/graphics_21/pillars_21_out.png differ diff --git a/games/riven_hgr/disk10_files/level_21.s b/games/riven_hgr/disk10_files/level_21.s new file mode 100644 index 00000000..330decb8 --- /dev/null +++ b/games/riven_hgr/disk10_files/level_21.s @@ -0,0 +1,156 @@ +; Riven -- Inside Rotate room, area 21 + +; by deater (Vince Weaver) + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk10_defines.inc" + +room_21_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 + + ;========================== + ; move to center + ;========================== +move_to_center: + + ; if 17 or less, go to center_34 + ; if 23 or more, go to center_45 + ; otherwise, go directly to pillar 4(?) + + lda CURSOR_X + cmp #18 + bcc go_center_34 ; blt + + cmp #23 + bcs go_center_45 ; bge + + ; do nothing + + rts + +go_center_34: + lda #LOAD_CENTER + sta WHICH_LOAD + + lda #RIVEN_CENTER_34 + sta LOCATION + + jmp done_dir + +go_center_45: + lda #LOAD_CENTER + sta WHICH_LOAD + + lda #RIVEN_CENTER_45 + sta LOCATION + +done_dir: + lda #DIRECTION_N + sta DIRECTION + + lda #1 + sta LEVEL_OVER + rts + + ;========================== + ; includes + ;========================== + + +.include "graphics_21/21_graphics.inc" + +.include "leveldata_21.inc" diff --git a/games/riven_hgr/disk10_files/level_center.s b/games/riven_hgr/disk10_files/level_center.s index ef82958a..2ce65649 100644 --- a/games/riven_hgr/disk10_files/level_center.s +++ b/games/riven_hgr/disk10_files/level_center.s @@ -160,9 +160,7 @@ move_51: ; go to level_15 - lda #LOAD_15 - sta WHICH_LOAD - + ldx #LOAD_15 lda #RIVEN_15 jmp go_edge @@ -225,7 +223,7 @@ move_23: ; if 12 or less, go to pillar 2 ; if 28 or more, go to pillar 3 ; if 34 or more, go to center 34 - ; otherwise, go directly to level 23 + ; otherwise, go directly to level 32 lda CURSOR_X cmp #6 @@ -240,9 +238,7 @@ move_23: ; go to level_32 - lda #LOAD_32 - sta WHICH_LOAD - + ldx #LOAD_32 lda #RIVEN_32 jmp go_edge @@ -254,7 +250,7 @@ move_12: ; if 12 or less, go to pillar 1 ; if 28 or more, go to pillar 2 ; if 34 or more, go to center 23 - ; otherwise, go directly to level 12 + ; otherwise, go directly to level 21 lda CURSOR_X cmp #6 @@ -267,9 +263,11 @@ move_12: cmp #28 bcs go_pillar_2 ; bge - ; go to level_12 + ; go to level_21 - rts + ldx #LOAD_21 + lda #RIVEN_21 + jmp go_edge ;============================ ; go to next center location @@ -304,6 +302,7 @@ done_center: ;====================== go_edge: + stx WHICH_LOAD sta LOCATION lda #DIRECTION_S diff --git a/games/riven_hgr/disk10_files/leveldata_21.inc b/games/riven_hgr/disk10_files/leveldata_21.inc new file mode 100644 index 00000000..e466f724 --- /dev/null +++ b/games/riven_hgr/disk10_files/leveldata_21.inc @@ -0,0 +1,27 @@ +;=============================================== +; level data -- rotate room, between pillars 2+1 +;=============================================== + +locations: + .word location0 + +; RIVEN_21 -- + +location0: + .byte $ff ; north exit + .byte $ff ; south exit + .byte $FF ; east exit + .byte $FF ; west exit + .byte $FF ; north exit_dir + .byte DIRECTION_E ; south exit_dir + .byte $FF ; east exit_dir + .byte $FF ; west exit_dir + .word pillars_21_in_zx02 ; north bg + .word pillars_21_out_zx02 ; south bg + .word $0000 ; east bg + .word $0000 ; west bg + .byte BG_NORTH|BG_SOUTH + .byte DIRECTION_N|DIRECTION_ONLY_POINT ; special exit + .byte 7,33 + .byte 0,180 + .word move_to_center-1