mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-31 10:13:35 +00:00
riven_hgr: can walk between levels now
This commit is contained in:
parent
d6a42b3732
commit
774cd13bb4
@ -54,6 +54,7 @@ dome.o: dome.s zp.inc hardware.inc \
|
||||
hgr_sprite.s hgr_tables.s \
|
||||
keyboard.s \
|
||||
hgr_14x14_sprite.s \
|
||||
leveldata_dome.inc \
|
||||
graphics_sprites/pointer_sprites.inc \
|
||||
graphics_dome/dome_graphics.inc
|
||||
ca65 -o dome.o dome.s -l dome.lst
|
||||
@ -68,6 +69,7 @@ level_projector.o: level_projector.s zp.inc hardware.inc \
|
||||
hgr_sprite.s hgr_tables.s \
|
||||
keyboard.s \
|
||||
hgr_14x14_sprite.s \
|
||||
leveldata_projector.inc \
|
||||
graphics_sprites/pointer_sprites.inc \
|
||||
graphics_projector/projector_graphics.inc
|
||||
ca65 -o level_projector.o level_projector.s -l level_projector.lst
|
||||
|
@ -98,7 +98,7 @@ frame_no_oflo:
|
||||
|
||||
really_exit:
|
||||
|
||||
jmp really_exit
|
||||
rts
|
||||
|
||||
|
||||
;==========================
|
||||
|
@ -124,11 +124,11 @@ check_left:
|
||||
cmp #8 ; left key
|
||||
bne check_right
|
||||
left_pressed:
|
||||
lda CURSOR_X ; if 41<x<$FE don't decrement
|
||||
cmp #41
|
||||
bcc do_dec_cursor_x
|
||||
cmp #$FE
|
||||
bcc done_left_pressed
|
||||
lda CURSOR_X ; if x>0
|
||||
; cmp #41
|
||||
; bcc do_dec_cursor_x
|
||||
; cmp #$FE
|
||||
beq done_left_pressed
|
||||
do_dec_cursor_x:
|
||||
dec CURSOR_X
|
||||
done_left_pressed:
|
||||
@ -141,7 +141,7 @@ check_right:
|
||||
bne check_up
|
||||
right_pressed:
|
||||
lda CURSOR_X ; if 40<x<$FE don't increment
|
||||
cmp #40
|
||||
cmp #38
|
||||
bcc do_inc_cursor_x
|
||||
cmp #$FE
|
||||
bcc done_right_pressed
|
||||
@ -156,11 +156,11 @@ check_up:
|
||||
cmp #$0B ; up key
|
||||
bne check_down
|
||||
up_pressed:
|
||||
lda CURSOR_Y ; if 191<y<$F0 don't decrement
|
||||
cmp #191
|
||||
bcc do_dec_cursor_y
|
||||
cmp #$F0
|
||||
bcc done_up_pressed
|
||||
lda CURSOR_Y ; if > 4 then decrement
|
||||
cmp #4
|
||||
; bcs do_dec_cursor_y ; bge
|
||||
; cmp #$F0
|
||||
bcc done_up_pressed ; blt
|
||||
do_dec_cursor_y:
|
||||
dec CURSOR_Y
|
||||
dec CURSOR_Y
|
||||
@ -176,11 +176,11 @@ check_down:
|
||||
cmp #$0A
|
||||
bne check_return
|
||||
down_pressed:
|
||||
lda CURSOR_Y ; if 191<y<$EE don't decrement
|
||||
cmp #191
|
||||
bcc do_inc_cursor_y
|
||||
cmp #$EE
|
||||
bcc done_down_pressed
|
||||
lda CURSOR_Y ; if y<177 (14 high)
|
||||
cmp #177
|
||||
; bcc do_inc_cursor_y
|
||||
; cmp #$EE
|
||||
bcs done_down_pressed
|
||||
do_inc_cursor_y:
|
||||
inc CURSOR_Y
|
||||
inc CURSOR_Y
|
||||
@ -327,6 +327,7 @@ done_split:
|
||||
;=============================
|
||||
; change location
|
||||
;=============================
|
||||
;
|
||||
change_location:
|
||||
; reset graphics
|
||||
bit SET_GR
|
||||
@ -376,9 +377,19 @@ go_forward:
|
||||
tay
|
||||
lda (LOCATION_STRUCT_L),Y
|
||||
|
||||
; A has new destination
|
||||
|
||||
; FF = can't go forward
|
||||
; otherwise if top 4 bits set, new level
|
||||
; otherwise, in current
|
||||
|
||||
cmp #$ff
|
||||
beq cant_go_forward
|
||||
|
||||
cmp #$10
|
||||
bcs new_level
|
||||
|
||||
same_level:
|
||||
sta LOCATION
|
||||
|
||||
; update new direction
|
||||
@ -397,6 +408,39 @@ go_forward:
|
||||
cant_go_forward:
|
||||
rts
|
||||
|
||||
|
||||
new_level:
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
|
||||
sta WHICH_LOAD
|
||||
|
||||
pla
|
||||
and #$0f
|
||||
|
||||
sta LOCATION
|
||||
|
||||
; update new direction
|
||||
|
||||
lda DIRECTION
|
||||
and #$f
|
||||
tay
|
||||
lda log2_table,Y
|
||||
clc
|
||||
adc #LOCATION_NORTH_EXIT_DIR
|
||||
tay
|
||||
lda (LOCATION_STRUCT_L),Y
|
||||
sta DIRECTION
|
||||
|
||||
lda #1
|
||||
sta LEVEL_OVER
|
||||
|
||||
rts
|
||||
|
||||
|
||||
;==========================
|
||||
; turn left
|
||||
;===========================
|
||||
|
@ -98,7 +98,7 @@ frame_no_oflo:
|
||||
|
||||
really_exit:
|
||||
|
||||
jmp really_exit
|
||||
rts
|
||||
|
||||
|
||||
;==========================
|
||||
|
@ -8,11 +8,11 @@ locations:
|
||||
; RIVEN_MAGLEV1 -- maglev steps
|
||||
location0:
|
||||
.byte RIVEN_MAGLEV2 ; north exit
|
||||
.byte $ff ; south exit
|
||||
.byte LOAD_PROJECTOR<<4|RIVEN_PROJ_DOOR ; south exit
|
||||
.byte $ff ; east exit
|
||||
.byte $ff ; west exit
|
||||
.byte DIRECTION_N ; north exit_dir
|
||||
.byte $ff ; south exit_dir
|
||||
.byte DIRECTION_S ; south exit_dir
|
||||
.byte $ff ; east exit_dir
|
||||
.byte $ff ; west exit_dir
|
||||
.word maglev1_n_zx02 ; north bg
|
||||
|
@ -24,12 +24,12 @@ location0:
|
||||
|
||||
; RIVEN_PROJ_DOOR -- doorway to projector room
|
||||
location1:
|
||||
.byte RIVEN_PROJECTOR ; north exit
|
||||
.byte $ff ; south exit
|
||||
.byte LOAD_DOME<<4 | RIVEN_MAGLEV1 ; north exit
|
||||
.byte RIVEN_PROJECTOR ; south exit
|
||||
.byte $ff ; east exit
|
||||
.byte $ff ; west exit
|
||||
.byte DIRECTION_N ; north exit_dir
|
||||
.byte $ff ; south exit_dir
|
||||
.byte DIRECTION_S ; south exit_dir
|
||||
.byte $ff ; east exit_dir
|
||||
.byte $ff ; west exit_dir
|
||||
.word doorway_n_zx02 ; north bg
|
||||
|
@ -184,14 +184,25 @@ done_setup_sound:
|
||||
lda #100
|
||||
jsr wait_a_bit
|
||||
|
||||
lda #RIVEN_MAGLEV1
|
||||
; lda #LOAD_DOME
|
||||
; sta WHICH_LOAD ; assume new game (dome island)
|
||||
|
||||
; lda #RIVEN_MAGLEV1
|
||||
; sta LOCATION
|
||||
|
||||
; lda #DIRECTION_N
|
||||
; sta DIRECTION
|
||||
|
||||
lda #LOAD_PROJECTOR
|
||||
sta WHICH_LOAD ; assume new game (dome island)
|
||||
|
||||
lda #RIVEN_PROJECTOR
|
||||
sta LOCATION
|
||||
|
||||
lda #DIRECTION_N
|
||||
lda #DIRECTION_S
|
||||
sta DIRECTION
|
||||
|
||||
lda #LOAD_DOME
|
||||
sta WHICH_LOAD ; assume new game (dome island)
|
||||
|
||||
|
||||
rts
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user