riven: hook up more of rotating room

This commit is contained in:
Vince Weaver 2024-08-23 01:28:34 -04:00
parent 2bed77b2f8
commit f19fff59d2
8 changed files with 244 additions and 13 deletions

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -0,0 +1,156 @@
; Riven -- Inside Rotate room, area 21
; by deater (Vince Weaver) <vince@deater.net>
; 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_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
;==========================
; 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"

View File

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

View File

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