riven: hook up bridge

This commit is contained in:
Vince Weaver 2024-06-24 23:57:20 -04:00
parent b834b3043f
commit d59c2c5632
15 changed files with 235 additions and 80 deletions

View File

@ -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
###

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,122 @@
; Riven -- Jungle Island -- On the Bridge
; by deater (Vince Weaver) <vince@deater.net>
; 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_L
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"

View File

@ -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

View File

@ -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

View File

@ -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