diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index b86f1cbb..e83c32d1 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -46,7 +46,8 @@ riven_disk01.dsk: QBOOT QLOAD TITLE_01 \ disk01_files/DISK01 \ disk01_files/LEVEL_ARRIVAL \ disk01_files/LEVEL_ARRIVAL2 \ - disk01_files/LEVEL_TELESCOPE + disk01_files/LEVEL_TELESCOPE \ + disk01_files/LEVEL_ARRIVAL3 cp $(EMPTY_DISK)/empty.dsk riven_disk01.dsk $(DOS33_RAW) riven_disk01.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) riven_disk01.dsk 0 2 QBOOT 1 1 @@ -57,6 +58,8 @@ riven_disk01.dsk: QBOOT QLOAD TITLE_01 \ $(DOS33_RAW) riven_disk01.dsk 2 0 disk01_files/LEVEL_ARRIVAL 0 0 $(DOS33_RAW) riven_disk01.dsk 9 0 disk01_files/LEVEL_ARRIVAL2 0 0 $(DOS33_RAW) riven_disk01.dsk 13 0 disk01_files/LEVEL_TELESCOPE 0 0 + $(DOS33_RAW) riven_disk01.dsk 20 0 disk01_files/LEVEL_ARRIVAL3 0 0 + ### @@ -309,6 +312,9 @@ disk01_files/LEVEL_ARRIVAL: disk01_files/LEVEL_ARRIVAL2: cd disk01_files && make +disk01_files/LEVEL_ARRIVAL3: + cd disk01_files && make + #### disk00_files/DISK00: cd disk00_files && make @@ -478,6 +484,7 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \ disk01_files/LEVEL_ARRIVAL \ disk01_files/LEVEL_ARRIVAL2 \ disk01_files/LEVEL_TELESCOPE \ + disk01_files/LEVEL_ARRIVAL3 \ disk38_files/DISK38 \ disk38_files/LEVEL_PROJECTOR \ disk39_files/DISK39 \ @@ -519,8 +526,9 @@ riven_hgr.2mg: dts_block PROBOOTHD QLOAD_HD \ $(PRODOS_RAW) riven_hgr.2mg `./dts_block 0 31 0` disk00_files/LEVEL_START 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 1 0 2` disk01_files/DISK01 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 1 2 0` disk01_files/LEVEL_ARRIVAL 0 0 - $(PRODOS_RAW) riven_hgr.2mg `./dts_block 1 9 0` disk01_files/LEVEL_ARRIVAL 0 0 + $(PRODOS_RAW) riven_hgr.2mg `./dts_block 1 9 0` disk01_files/LEVEL_ARRIVAL2 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 1 13 0` disk01_files/LEVEL_TELESCOPE 0 0 + $(PRODOS_RAW) riven_hgr.2mg `./dts_block 1 20 0` disk01_files/LEVEL_ARRIVAL3 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 38 0 2` disk38_files/DISK38 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 38 2 0` disk38_files/LEVEL_PROJECTOR 0 0 $(PRODOS_RAW) riven_hgr.2mg `./dts_block 39 0 2` disk39_files/DISK39 0 0 diff --git a/games/riven_hgr/NOTES b/games/riven_hgr/NOTES index 1b0e1a96..365043de 100644 --- a/games/riven_hgr/NOTES +++ b/games/riven_hgr/NOTES @@ -107,10 +107,10 @@ Disk01 Map (disk has 35 tracks, each 4k in size) T 0 = Qboot T 0.5 = TITLE 1823 bytes 8S = 0T8S (2048) 400B free T 1 = QLOAD 2393 bytes 16S= 1T0S (4096) 2k free -T 2 = ARRIVAL 25512 bytes = 7T0S (28672) 3k free +T 2 = ARRIVAL 27040 bytes = 7T0S (28672) 1k free T 9 = ARRIVAL2 15920 bytes = 4T0S (16384) 400B free T 13 = TELESCOPE 19484 bytes = 7T0S (28672) 9k free -T 20 = ARRIVAL3 +T 20 = ARRIVAL3 30786 bytes = 7T15S (32512) 2k free Disk38 Map (disk has 35 tracks, each 4k in size) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/games/riven_hgr/disk01_files/Makefile b/games/riven_hgr/disk01_files/Makefile index 8e480287..d67eaf70 100644 --- a/games/riven_hgr/disk01_files/Makefile +++ b/games/riven_hgr/disk01_files/Makefile @@ -3,7 +3,7 @@ include ../../../Makefile.inc LINKER_SCRIPTS = ../../../linker_scripts/ -all: DISK01 LEVEL_ARRIVAL LEVEL_ARRIVAL2 LEVEL_TELESCOPE +all: DISK01 LEVEL_ARRIVAL LEVEL_ARRIVAL2 LEVEL_TELESCOPE LEVEL_ARRIVAL3 #### @@ -53,6 +53,19 @@ level_telescope.o: level_telescope.s \ #### + +LEVEL_ARRIVAL3: level_arrival3.o + ld65 -o LEVEL_ARRIVAL3 level_arrival3.o -C $(LINKER_SCRIPTS)/apple2_4000.inc + +level_arrival3.o: level_arrival3.s \ + ../zp.inc ../hardware.inc ../qload.inc \ + ../common_defines.inc disk01_defines.inc \ + leveldata_arrival3.inc \ + graphics_arrival3/arrival3_graphics.inc + ca65 -o level_arrival3.o level_arrival3.s -l level_arrival3.lst + +#### + graphics_arrival/arrival_graphics.inc: cd graphics_arrival && make @@ -62,18 +75,22 @@ graphics_arrival2/arrival2_graphics.inc: graphics_telescope/telescope_graphics.inc: cd graphics_telescope && make +graphics_arrival3/arrival3_graphics.inc: + cd graphics_arrival3 && make + #### clean: rm -f *~ *.o *.lst \ - DISK01 LEVEL_ARRIVAL LEVEL_ARRIVAL2 LEVEL_TELESCOPE + DISK01 LEVEL_ARRIVAL LEVEL_ARRIVAL2 LEVEL_TELESCOPE LEVEL_ARRIVAL3 #### distclean: rm -f *~ *.o *.lst \ - DISK01 LEVEL_ARRIVAL LEVEL_ARRIVAL2 LEVEL_TELESCOPE + DISK01 LEVEL_ARRIVAL LEVEL_ARRIVAL2 LEVEL_TELESCOPE LEVEL_ARRIVAL3 cd graphics_arrival && make clean cd graphics_arrival2 && make clean cd graphics_telescope && make clean + cd graphics_arrival3 && make clean diff --git a/games/riven_hgr/disk01_files/disk01.s b/games/riven_hgr/disk01_files/disk01.s index 8b77e93d..64ac3a9a 100644 --- a/games/riven_hgr/disk01_files/disk01.s +++ b/games/riven_hgr/disk01_files/disk01.s @@ -10,18 +10,18 @@ which_disk_bin: load_address_array: .byte $40,$40,$40,$40 ; TITLE, ARRIVAL, ARRIVAL2, TELESCOPE - .byte $00,$00,$00,$00 + .byte $40,$00,$00,$00 ; ARRIVAL3 track_array: .byte 0, 2, 9,13 ; TITLE, ARRIVAL, ARRIVAL2, TELESCOPE - .byte 0,0,0,0 + .byte 20,0,0,0 ; ARRIVAL3 sector_array: .byte 8, 0, 0, 0 ; TITLE, ARRIVAL, ARRIVAL2, TELESCOPE - .byte 0,0,0,0 + .byte 0,0,0,0 ; ARRIVAL3 length_array: .byte 8, 112,64, 112 ; TITLE, ARRIVAL, ARRIVAL2, TELESCOPE - .byte 0,0,0,0 + .byte 127,0,0,0 ; ARRIVAL3 disk_exit_disk: ; note: not BCD anymore diff --git a/games/riven_hgr/disk01_files/disk01_defines.inc b/games/riven_hgr/disk01_files/disk01_defines.inc index aad5c802..4f6fe9dc 100644 --- a/games/riven_hgr/disk01_files/disk01_defines.inc +++ b/games/riven_hgr/disk01_files/disk01_defines.inc @@ -2,6 +2,7 @@ LOAD_TITLE_01 = 0 LOAD_ARRIVAL = 1 LOAD_ARRIVAL2 = 2 LOAD_TELESCOPE = 3 +LOAD_ARRIVAL3 = 4 ;================================ ; Level definitions @@ -20,3 +21,9 @@ RIVEN_ARRIVAL2 = 0 RIVEN_TELESCOPE = 0 RIVEN_MANHOLE = 1 + +; Arrival3 +RIVEN_ARRIVAL3 = 0 +RIVEN_ARRIVAL4 = 1 +RIVEN_ARRIVAL5 = 2 + diff --git a/games/riven_hgr/disk01_files/graphics_arrival/Makefile b/games/riven_hgr/disk01_files/graphics_arrival/Makefile index a42d8b7b..9047eb8c 100644 --- a/games/riven_hgr/disk01_files/graphics_arrival/Makefile +++ b/games/riven_hgr/disk01_files/graphics_arrival/Makefile @@ -7,13 +7,14 @@ all: arrival_graphics.inc arrival_graphics.inc: \ arrival_near_n.hgr.zx02 arrival_near_s.hgr.zx02 arrival_near_e.hgr.zx02 arrival_near_w.hgr.zx02 \ - arrival_n.hgr.zx02 \ + arrival_n.hgr.zx02 arrival_s.hgr.zx02 \ arrival_handle_n.hgr.zx02 echo "arrival_near_n_zx02: .incbin \"arrival_near_n.hgr.zx02\"" > arrival_graphics.inc echo "arrival_near_s_zx02: .incbin \"arrival_near_s.hgr.zx02\"" >> arrival_graphics.inc echo "arrival_near_e_zx02: .incbin \"arrival_near_e.hgr.zx02\"" >> arrival_graphics.inc echo "arrival_near_w_zx02: .incbin \"arrival_near_w.hgr.zx02\"" >> arrival_graphics.inc echo "arrival_n_zx02: .incbin \"arrival_n.hgr.zx02\"" >> arrival_graphics.inc + echo "arrival_s_zx02: .incbin \"arrival_s.hgr.zx02\"" >> arrival_graphics.inc echo "arrival_handle_n_zx02: .incbin \"arrival_handle_n.hgr.zx02\"" >> arrival_graphics.inc diff --git a/games/riven_hgr/disk01_files/graphics_arrival3/Makefile b/games/riven_hgr/disk01_files/graphics_arrival3/Makefile new file mode 100644 index 00000000..963e5425 --- /dev/null +++ b/games/riven_hgr/disk01_files/graphics_arrival3/Makefile @@ -0,0 +1,31 @@ +include ../../../../Makefile.inc + +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 +PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr + +all: arrival3_graphics.inc + +arrival3_graphics.inc: \ + arrival3_n.hgr.zx02 arrival3_s.hgr.zx02 arrival3_e.hgr.zx02 arrival3_w.hgr.zx02 \ + arrival4_n.hgr.zx02 arrival4_s.hgr.zx02 arrival5_n.hgr.zx02 + echo "arrival3_n_zx02: .incbin \"arrival3_n.hgr.zx02\"" > arrival3_graphics.inc + echo "arrival3_s_zx02: .incbin \"arrival3_s.hgr.zx02\"" >> arrival3_graphics.inc + echo "arrival3_e_zx02: .incbin \"arrival3_e.hgr.zx02\"" >> arrival3_graphics.inc + echo "arrival3_w_zx02: .incbin \"arrival3_w.hgr.zx02\"" >> arrival3_graphics.inc + echo "arrival4_n_zx02: .incbin \"arrival4_n.hgr.zx02\"" >> arrival3_graphics.inc + echo "arrival4_s_zx02: .incbin \"arrival4_s.hgr.zx02\"" >> arrival3_graphics.inc + echo "arrival5_n_zx02: .incbin \"arrival5_n.hgr.zx02\"" >> arrival3_graphics.inc + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr arrival3_graphics.inc + diff --git a/games/riven_hgr/disk01_files/graphics_arrival3/arrival3_e.png b/games/riven_hgr/disk01_files/graphics_arrival3/arrival3_e.png new file mode 100644 index 00000000..3ecabb94 Binary files /dev/null and b/games/riven_hgr/disk01_files/graphics_arrival3/arrival3_e.png differ diff --git a/games/riven_hgr/disk01_files/graphics_arrival3/arrival3_s.png b/games/riven_hgr/disk01_files/graphics_arrival3/arrival3_s.png new file mode 100644 index 00000000..4f77c2b9 Binary files /dev/null and b/games/riven_hgr/disk01_files/graphics_arrival3/arrival3_s.png differ diff --git a/games/riven_hgr/disk01_files/graphics_arrival3/arrival4_n.png b/games/riven_hgr/disk01_files/graphics_arrival3/arrival4_n.png new file mode 100644 index 00000000..c10dbe5f Binary files /dev/null and b/games/riven_hgr/disk01_files/graphics_arrival3/arrival4_n.png differ diff --git a/games/riven_hgr/disk01_files/graphics_arrival3/arrival4_s.png b/games/riven_hgr/disk01_files/graphics_arrival3/arrival4_s.png new file mode 100644 index 00000000..d8dedd7e Binary files /dev/null and b/games/riven_hgr/disk01_files/graphics_arrival3/arrival4_s.png differ diff --git a/games/riven_hgr/disk01_files/graphics_arrival3/arrival5_n.png b/games/riven_hgr/disk01_files/graphics_arrival3/arrival5_n.png new file mode 100644 index 00000000..0190d598 Binary files /dev/null and b/games/riven_hgr/disk01_files/graphics_arrival3/arrival5_n.png differ diff --git a/games/riven_hgr/disk01_files/level_arrival3.s b/games/riven_hgr/disk01_files/level_arrival3.s new file mode 100644 index 00000000..2785eff3 --- /dev/null +++ b/games/riven_hgr/disk01_files/level_arrival3.s @@ -0,0 +1,112 @@ +; Riven -- Dome Island -- Arrival3 + +; by deater (Vince Weaver) + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk01_defines.inc" + +riven_arrival2: + + ;=================== + ; init screen + ;=================== + + 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_arrival3/arrival3_graphics.inc" + +.include "leveldata_arrival3.inc" diff --git a/games/riven_hgr/disk01_files/leveldata_arrival.inc b/games/riven_hgr/disk01_files/leveldata_arrival.inc index 141534fc..4fb1e141 100644 --- a/games/riven_hgr/disk01_files/leveldata_arrival.inc +++ b/games/riven_hgr/disk01_files/leveldata_arrival.inc @@ -16,10 +16,10 @@ location0: .byte $ff ; east exit_dir .byte $ff ; west exit_dir .word arrival_n_zx02 ; north bg - .word $0000 ; south bg + .word arrival_s_zx02 ; south bg .word $0000 ; east bg .word $0000 ; west bg - .byte BG_NORTH + .byte BG_NORTH|BG_SOUTH .byte $ff ; special exit diff --git a/games/riven_hgr/disk01_files/leveldata_arrival3.inc b/games/riven_hgr/disk01_files/leveldata_arrival3.inc new file mode 100644 index 00000000..6a035298 --- /dev/null +++ b/games/riven_hgr/disk01_files/leveldata_arrival3.inc @@ -0,0 +1,58 @@ +;=============================================== +; level data for Dome Island level -- arrival3 +;=============================================== + +locations: + .word location0,location1,location2 + +; RIVEN_ARRIVAL3 - third arrival +location0: + .byte RIVEN_ARRIVAL4 ; north exit + .byte LOAD_TELESCOPE<<4|RIVEN_TELESCOPE ; south exit + .byte $FF ; east exit + .byte $ff ; west exit + .byte DIRECTION_N ; north exit_dir + .byte DIRECTION_S ; south exit_dir + .byte $ff ; east exit_dir + .byte $ff ; west exit_dir + .word arrival3_n_zx02 ; north bg + .word arrival3_s_zx02 ; south bg + .word arrival3_e_zx02 ; east bg + .word arrival3_w_zx02 ; west bg + .byte BG_NORTH|BG_SOUTH|BG_EAST|BG_WEST + .byte $ff ; special exit + +; arrival4 +location1: + .byte RIVEN_ARRIVAL5 ; north exit + .byte RIVEN_ARRIVAL3 ; south exit + .byte $FF ; east exit + .byte $ff ; west exit + .byte DIRECTION_N ; north exit_dir + .byte DIRECTION_S ; south exit_dir + .byte $ff ; east exit_dir + .byte $ff ; west exit_dir + .word arrival4_n_zx02 ; north bg + .word arrival4_s_zx02 ; south bg + .word $0000 ; east bg + .word $0000 ; west bg + .byte BG_NORTH|BG_SOUTH + .byte $ff ; special exit + +; arrival5 +location2: + .byte RIVEN_ARRIVAL4 ; north exit + .byte $FF ; south exit + .byte $FF ; east exit + .byte $ff ; west exit + .byte DIRECTION_N ; north exit_dir + .byte $ff ; south exit_dir + .byte $ff ; east exit_dir + .byte $ff ; west exit_dir + .word arrival5_n_zx02 ; north bg + .word $0000 ; south bg + .word $0000 ; east bg + .word $0000 ; west bg + .byte BG_NORTH + .byte $ff ; special exit + diff --git a/games/riven_hgr/disk01_files/leveldata_telescope.inc b/games/riven_hgr/disk01_files/leveldata_telescope.inc index e37ce4b8..fb3f228c 100644 --- a/games/riven_hgr/disk01_files/leveldata_telescope.inc +++ b/games/riven_hgr/disk01_files/leveldata_telescope.inc @@ -7,7 +7,7 @@ locations: ; RIVEN_TELESCOPE -- near telescope location0: - .byte $ff ; north exit + .byte LOAD_ARRIVAL3<<4|RIVEN_ARRIVAL3 ; north exit .byte LOAD_ARRIVAL2<<4|RIVEN_ARRIVAL2 ; south exit .byte $FF ; east exit .byte RIVEN_MANHOLE ; west exit