diff --git a/games/riven_hgr/Makefile b/games/riven_hgr/Makefile index 0c9fbfa5..8651632d 100644 --- a/games/riven_hgr/Makefile +++ b/games/riven_hgr/Makefile @@ -89,7 +89,8 @@ riven_disk41.dsk: QBOOT QLOAD TITLE_41 \ riven_disk43.dsk: QBOOT QLOAD TITLE_43 \ disk43_files/DISK43 \ - disk43_files/LEVEL_CART + disk43_files/LEVEL_CART \ + disk43_files/LEVEL_BRIDGE cp $(EMPTY_DISK)/empty.dsk riven_disk43.dsk $(DOS33_RAW) riven_disk43.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) riven_disk43.dsk 0 2 QBOOT 1 1 @@ -98,6 +99,7 @@ riven_disk43.dsk: QBOOT QLOAD TITLE_43 \ $(DOS33_RAW) riven_disk43.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) riven_disk43.dsk 1 9 TITLE_43 0 0 $(DOS33_RAW) riven_disk43.dsk 2 0 disk43_files/LEVEL_CART 0 0 + $(DOS33_RAW) riven_disk43.dsk 9 0 disk43_files/LEVEL_BRIDGE 0 0 ### diff --git a/games/riven_hgr/NOTES b/games/riven_hgr/NOTES index 0a7069d6..145eb3f7 100644 --- a/games/riven_hgr/NOTES +++ b/games/riven_hgr/NOTES @@ -81,7 +81,8 @@ Disk43 Map (disk has 35 tracks, each 4k in size) 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 = CART 26736 bytes 112S = 7T0S (28672) 2k free +T 2 = CART 23280 bytes = 7T0S (28672) 5k free +T 9 = BRIDGE 18609 bytes = 5T0S (20480) 2k free T 27 = MOVIE_CART32275 bytes 128S = 8T0S (32768)500B free diff --git a/games/riven_hgr/disk41_files/leveldata_stairs2.inc b/games/riven_hgr/disk41_files/leveldata_stairs2.inc index d3053d1e..957ada86 100644 --- a/games/riven_hgr/disk41_files/leveldata_stairs2.inc +++ b/games/riven_hgr/disk41_files/leveldata_stairs2.inc @@ -44,7 +44,7 @@ location2: .byte $ff ; north exit .byte $FF ; south exit .byte RIVEN_UP3 ; east exit - .byte $FF ; west exit + .byte $E0|1 ; exit to cart (disk 43) ; west exit .byte $ff ; north exit_dir .byte $ff ; south exit_dir .byte DIRECTION_E ; east exit_dir diff --git a/games/riven_hgr/disk43_files/Makefile b/games/riven_hgr/disk43_files/Makefile index 9a084ce6..95d8d62f 100644 --- a/games/riven_hgr/disk43_files/Makefile +++ b/games/riven_hgr/disk43_files/Makefile @@ -3,7 +3,7 @@ include ../../../Makefile.inc LINKER_SCRIPTS = ../../../linker_scripts/ -all: DISK43 LEVEL_CART +all: DISK43 LEVEL_CART LEVEL_BRIDGE #### @@ -27,50 +27,16 @@ level_cart.o: level_cart.s \ #### -LEVEL_PROJECTOR: level_projector.o - ld65 -o LEVEL_PROJECTOR level_projector.o -C $(LINKER_SCRIPTS)/apple2_4000.inc +LEVEL_BRIDGE: level_bridge.o + ld65 -o LEVEL_BRIDGE level_bridge.o -C $(LINKER_SCRIPTS)/apple2_4000.inc -level_projector.o: level_projector.s \ +level_bridge.o: level_bridge.s \ ../zp.inc ../hardware.inc ../qload.inc \ ../common_defines.inc disk43_defines.inc \ - leveldata_projector.inc \ - graphics_projector/projector_graphics.inc - ca65 -o level_projector.o level_projector.s -l level_projector.lst + leveldata_bridge.inc \ + graphics_bridge/bridge_graphics.inc + ca65 -o level_bridge.o level_bridge.s -l level_bridge.lst -#### - -LEVEL_MAGSTEPS: level_magsteps.o - ld65 -o LEVEL_MAGSTEPS level_magsteps.o -C $(LINKER_SCRIPTS)/apple2_4000.inc - -level_magsteps.o: level_magsteps.s \ - ../zp.inc ../hardware.inc ../qload.inc \ - ../common_defines.inc disk43_defines.inc \ - leveldata_magsteps.inc \ - graphics_magsteps/magsteps_graphics.inc - ca65 -o level_magsteps.o level_magsteps.s -l level_magsteps.lst - -#### - -LEVEL_MAGLEV: level_maglev.o - ld65 -o LEVEL_MAGLEV level_maglev.o -C $(LINKER_SCRIPTS)/apple2_4000.inc - -level_maglev.o: level_maglev.s \ - ../zp.inc ../hardware.inc ../qload.inc \ - ../common_defines.inc disk43_defines.inc \ - leveldata_maglev.inc \ - graphics_maglev/maglev_graphics.inc - ca65 -o level_maglev.o level_maglev.s -l level_maglev.lst - -#### - -MOVIE_MAGLEV_FLIP: movie_maglev_flip.o - ld65 -o MOVIE_MAGLEV_FLIP movie_maglev_flip.o -C $(LINKER_SCRIPTS)/apple2_4000.inc - -movie_maglev_flip.o: movie_maglev_flip.s \ - ../zp.inc ../hardware.inc ../qload.inc \ - ../common_defines.inc disk43_defines.inc \ - movie_maglev_flip/movie_maglev_flip.inc - ca65 -o movie_maglev_flip.o movie_maglev_flip.s -l movie_maglev_flip.lst #### @@ -91,38 +57,21 @@ movie_maglev_ride.o: movie_maglev_ride.s \ graphics_cart/cart_graphics.inc: cd graphics_cart && make -graphics_maglev/maglev_graphics.inc: - cd graphics_maglev && make - -graphics_magsteps/magsteps_graphics.inc: - cd graphics_magsteps && make - -graphics_projector/projector_graphics.inc: - cd graphics_projector && make - -movie_maglev_flip/movie_maglev_flip.inc: - cd movie_maglev_flip && make - -movie_maglev_ride/movie_maglev_ride.inc: - cd movie_maglev_ride && make +graphics_bridge/bridge_graphics.inc: + cd graphics_bridge && make #### clean: rm -f *~ *.o *.lst \ - LEVEL_PROJECTOR LEVEL_MAGSTEPS LEVEL_MAGLEV LEVEL_CART \ - MOVIE_MAGLEV_FLIP MOVIE_MAGLEV_RIDE + LEVEL_CART LEVEL_BRIDGE #### distclean: rm -f *~ *.o *.lst \ - LEVEL_PROJECTOR LEVEL_MAGSTEPS LEVEL_MAGLEV LEVEL_CART \ - MOVIE_MAGLEV_FLIP MOVIE_MAGLEV_RIDE + LEVEL_CART LEVEL_BRIDGE cd graphics_cart && make clean -# cd graphics_projector && make clean -# cd graphics_magsteps && make clean -# cd graphics_maglev && make clean -# cd movie_maglev_flip && make clean -# cd movie_maglev_ride && make clean + cd graphics_bridge && make clean + diff --git a/games/riven_hgr/disk43_files/disk43.s b/games/riven_hgr/disk43_files/disk43.s index a63cd5ba..9fd70ab4 100644 --- a/games/riven_hgr/disk43_files/disk43.s +++ b/games/riven_hgr/disk43_files/disk43.s @@ -5,30 +5,32 @@ which_disk: load_address_array: - .byte $40,$40,$40,$40 ; TITLE, CART + .byte $40,$40,$40,$40 ; TITLE, CART, BRIDGE .byte $00,$00,$00,$00 track_array: - .byte 1, 2, 9,17 ; TITLE, CART + .byte 1, 2, 9,17 ; TITLE, CART, BRIDGE .byte 0,0,0,0 sector_array: - .byte 9, 0, 0, 0 ; TITLE, CART + .byte 9, 0, 0, 0 ; TITLE, CART, BRIDGE .byte 0,0,0,0 length_array: - .byte 8, 96,123, 64 ; TITLE, CART + .byte 8, 96,84, 64 ; TITLE, CART, BRIDGE .byte 0,0,0,0 + ; disk 41 + disk_exit_disk: ; note: BCD (yes I'm lazy) - .byte 0,0,0,0 + .byte $41,0,0,0 disk_exit_dni_h: - .byte 0,0,0,0 + .byte $01,0,0,0 ; 41 = 1*25 + 3*5 + 1 disk_exit_dni_l: - .byte 0,0,0,0 + .byte $31,0,0,0 disk_exit_load: - .byte 0,0,0,0 + .byte 4,0,0,0 ; STAIRS2, RIVEN_UP4, E disk_exit_level: - .byte 0,0,0,0 + .byte 2,0,0,0 disk_exit_direction: - .byte 0,0,0,0 + .byte DIRECTION_E,0,0,0 diff --git a/games/riven_hgr/disk43_files/disk43_defines.inc b/games/riven_hgr/disk43_files/disk43_defines.inc index 84934e0c..159e52ea 100644 --- a/games/riven_hgr/disk43_files/disk43_defines.inc +++ b/games/riven_hgr/disk43_files/disk43_defines.inc @@ -1,5 +1,6 @@ LOAD_TITLE = 0 LOAD_CART = 1 +LOAD_BRIDGE = 2 ;================================ ; Level definitions @@ -8,3 +9,9 @@ LOAD_CART = 1 RIVEN_OUTSIDE_CART = 0 RIVEN_IN_CART = 1 + +; On Bridge + +RIVEN_MID_BRIDGE = 0 +RIVEN_FAR_BRIDGE = 1 + diff --git a/games/riven_hgr/disk43_files/graphics_bridge/Makefile b/games/riven_hgr/disk43_files/graphics_bridge/Makefile new file mode 100644 index 00000000..98330371 --- /dev/null +++ b/games/riven_hgr/disk43_files/graphics_bridge/Makefile @@ -0,0 +1,30 @@ +include ../../../../Makefile.inc + +ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f +PNG_TO_HGR = ../../../../utils/hgr-utils/png2hgr + +all: bridge_graphics.inc + +bridge_graphics.inc: \ + bridge_e.hgr.zx02 bridge_w.hgr.zx02 \ + bridge_far_e.hgr.zx02 bridge_far_w.hgr.zx02 + echo "bridge_e_zx02: .incbin \"bridge_e.hgr.zx02\"" > bridge_graphics.inc + echo "bridge_w_zx02: .incbin \"bridge_w.hgr.zx02\"" >> bridge_graphics.inc + echo "bridge_far_e_zx02: .incbin \"bridge_far_e.hgr.zx02\"" >> bridge_graphics.inc + echo "bridge_far_w_zx02: .incbin \"bridge_far_w.hgr.zx02\"" >> bridge_graphics.inc + + + +#### + +%.hgr: %.png + $(PNG_TO_HGR) $< > $@ + +%.hgr.zx02: %.hgr + $(ZX02) -f $< $@ + +#### + +clean: + rm -f *~ *.o *.lst *.zx02 *.hgr bridge_graphics.inc + diff --git a/games/riven_hgr/disk43_files/graphics_bridge/bridge_e.png b/games/riven_hgr/disk43_files/graphics_bridge/bridge_e.png new file mode 100644 index 00000000..4e71e167 Binary files /dev/null and b/games/riven_hgr/disk43_files/graphics_bridge/bridge_e.png differ diff --git a/games/riven_hgr/disk43_files/graphics_bridge/bridge_far_e.png b/games/riven_hgr/disk43_files/graphics_bridge/bridge_far_e.png new file mode 100644 index 00000000..cd6adb7f Binary files /dev/null and b/games/riven_hgr/disk43_files/graphics_bridge/bridge_far_e.png differ diff --git a/games/riven_hgr/disk43_files/graphics_bridge/bridge_far_w.png b/games/riven_hgr/disk43_files/graphics_bridge/bridge_far_w.png new file mode 100644 index 00000000..dbec4cab Binary files /dev/null and b/games/riven_hgr/disk43_files/graphics_bridge/bridge_far_w.png differ diff --git a/games/riven_hgr/disk43_files/graphics_bridge/bridge_w.png b/games/riven_hgr/disk43_files/graphics_bridge/bridge_w.png new file mode 100644 index 00000000..c55c8d9d Binary files /dev/null and b/games/riven_hgr/disk43_files/graphics_bridge/bridge_w.png differ diff --git a/games/riven_hgr/disk43_files/level_bridge.s b/games/riven_hgr/disk43_files/level_bridge.s new file mode 100644 index 00000000..59446f18 --- /dev/null +++ b/games/riven_hgr/disk43_files/level_bridge.s @@ -0,0 +1,122 @@ +; Riven -- Jungle Island -- On the Bridge + +; by deater (Vince Weaver) + +; Zero Page + .include "../zp.inc" + .include "../hardware.inc" + .include "../common_defines.inc" + .include "../qload.inc" + .include "disk43_defines.inc" + +riven_cart: + + ;=================== + ; 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 + + ;================================== + ; cart button clicked + ;================================== + ; TODO: call cart code + +cart_button_clicked: + bit SPEAKER + rts + + + ;========================== + ; includes + ;========================== + + +.include "graphics_bridge/bridge_graphics.inc" + +.include "leveldata_bridge.inc" diff --git a/games/riven_hgr/disk43_files/leveldata_bridge.inc b/games/riven_hgr/disk43_files/leveldata_bridge.inc new file mode 100644 index 00000000..7912448e --- /dev/null +++ b/games/riven_hgr/disk43_files/leveldata_bridge.inc @@ -0,0 +1,42 @@ +;=============================================== +; level data for Bridge +;=============================================== + +locations: + .word location0,location1 + +; RIVEN_MID_BRIDGE -- mid-bridge +location0: + .byte $FF ; north exit + .byte $ff ; south exit + .byte $E0 ; new disk ; east exit + .byte RIVEN_FAR_BRIDGE ; 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 bridge_e_zx02 ; east bg + .word bridge_w_zx02 ; west bg + .byte BG_EAST|BG_WEST ; bgs + .byte $ff ; special exit + +; RIVEN_FAR_BRIDGE -- far side of bridge +location1: + .byte $FF ; north exit + .byte $ff ; south exit + .byte RIVEN_MID_BRIDGE ; east exit + .byte $ff ; 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 bridge_far_e_zx02 ; east bg + .word bridge_far_w_zx02 ; west bg + .byte BG_EAST|BG_WEST ; bgs + .byte $ff ; special exit + + diff --git a/games/riven_hgr/disk43_files/leveldata_cart.inc b/games/riven_hgr/disk43_files/leveldata_cart.inc index 7ea2d9e0..f65a26ee 100644 --- a/games/riven_hgr/disk43_files/leveldata_cart.inc +++ b/games/riven_hgr/disk43_files/leveldata_cart.inc @@ -8,11 +8,11 @@ locations: ; RIVEN_OUTSIDE_CART -- just outside cart location0: .byte RIVEN_IN_CART ; north exit - .byte $ff ; south exit + .byte LOAD_BRIDGE<<4|RIVEN_FAR_BRIDGE ; south exit .byte $ff ; east exit .byte $ff ; west exit .byte DIRECTION_E ; north exit_dir - .byte $ff ; south exit_dir + .byte DIRECTION_E ; south exit_dir .byte $ff ; east exit_dir .byte $ff ; west exit_dir .word cart_n_zx02 ; north bg diff --git a/games/riven_hgr/title.s b/games/riven_hgr/title.s index 906c8ef5..961453e9 100644 --- a/games/riven_hgr/title.s +++ b/games/riven_hgr/title.s @@ -397,7 +397,7 @@ riven_title_image: .incbin "graphics_title/riven_title.hgr.zx02" title_text: -.byte 0, 0,"LOADING RIVEN SUBSET DISK 00 V0.04",0 +.byte 0, 0,"LOADING RIVEN SUBSET DISK 00 V0.05",0 ; ; .byte 0, 3,"BASED ON RIVEN BY CYAN",0